diff options
| -rw-r--r-- | include/linux/perf_counter.h | 4 | ||||
| -rw-r--r-- | kernel/perf_counter.c | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h index 489d5cbfbcca..bcbf1c43ed42 100644 --- a/include/linux/perf_counter.h +++ b/include/linux/perf_counter.h | |||
| @@ -232,12 +232,14 @@ struct perf_counter_mmap_page { | |||
| 232 | __u32 lock; /* seqlock for synchronization */ | 232 | __u32 lock; /* seqlock for synchronization */ |
| 233 | __u32 index; /* hardware counter identifier */ | 233 | __u32 index; /* hardware counter identifier */ |
| 234 | __s64 offset; /* add to hardware counter value */ | 234 | __s64 offset; /* add to hardware counter value */ |
| 235 | __u64 time_enabled; /* time counter active */ | ||
| 236 | __u64 time_running; /* time counter on cpu */ | ||
| 235 | 237 | ||
| 236 | /* | 238 | /* |
| 237 | * Hole for extension of the self monitor capabilities | 239 | * Hole for extension of the self monitor capabilities |
| 238 | */ | 240 | */ |
| 239 | 241 | ||
| 240 | __u64 __reserved[125]; /* align to 1k */ | 242 | __u64 __reserved[123]; /* align to 1k */ |
| 241 | 243 | ||
| 242 | /* | 244 | /* |
| 243 | * Control data for the mmap() data buffer. | 245 | * Control data for the mmap() data buffer. |
diff --git a/kernel/perf_counter.c b/kernel/perf_counter.c index c2b19c111718..23614adab475 100644 --- a/kernel/perf_counter.c +++ b/kernel/perf_counter.c | |||
| @@ -1782,6 +1782,12 @@ void perf_counter_update_userpage(struct perf_counter *counter) | |||
| 1782 | if (counter->state == PERF_COUNTER_STATE_ACTIVE) | 1782 | if (counter->state == PERF_COUNTER_STATE_ACTIVE) |
| 1783 | userpg->offset -= atomic64_read(&counter->hw.prev_count); | 1783 | userpg->offset -= atomic64_read(&counter->hw.prev_count); |
| 1784 | 1784 | ||
| 1785 | userpg->time_enabled = counter->total_time_enabled + | ||
| 1786 | atomic64_read(&counter->child_total_time_enabled); | ||
| 1787 | |||
| 1788 | userpg->time_running = counter->total_time_running + | ||
| 1789 | atomic64_read(&counter->child_total_time_running); | ||
| 1790 | |||
| 1785 | barrier(); | 1791 | barrier(); |
| 1786 | ++userpg->lock; | 1792 | ++userpg->lock; |
| 1787 | preempt_enable(); | 1793 | preempt_enable(); |
