perf_counter: Add scale information to the mmap control page
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Mon, 22 Jun 2009 12:34:35 +0000 (14:34 +0200)
committerIngo Molnar <mingo@elte.hu>
Thu, 25 Jun 2009 19:39:05 +0000 (21:39 +0200)
Add the needed time scale to the self-profile mmap information.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/perf_counter.h
kernel/perf_counter.c

index 489d5cbfbcca331a34d64b6a50ff20ac44e888f2..bcbf1c43ed422ae2a26382ff524df5f8913188d0 100644 (file)
@@ -232,12 +232,14 @@ struct perf_counter_mmap_page {
        __u32   lock;                   /* seqlock for synchronization */
        __u32   index;                  /* hardware counter identifier */
        __s64   offset;                 /* add to hardware counter value */
+       __u64   time_enabled;           /* time counter active */
+       __u64   time_running;           /* time counter on cpu */
 
                /*
                 * Hole for extension of the self monitor capabilities
                 */
 
-       __u64   __reserved[125];        /* align to 1k */
+       __u64   __reserved[123];        /* align to 1k */
 
        /*
         * Control data for the mmap() data buffer.
index c2b19c111718735c3db3d577e2482566a3498eb6..23614adab475b6fa7c4dfa90fb78dc1b7f9cd843 100644 (file)
@@ -1782,6 +1782,12 @@ void perf_counter_update_userpage(struct perf_counter *counter)
        if (counter->state == PERF_COUNTER_STATE_ACTIVE)
                userpg->offset -= atomic64_read(&counter->hw.prev_count);
 
+       userpg->time_enabled = counter->total_time_enabled +
+                       atomic64_read(&counter->child_total_time_enabled);
+
+       userpg->time_running = counter->total_time_running +
+                       atomic64_read(&counter->child_total_time_running);
+
        barrier();
        ++userpg->lock;
        preempt_enable();