diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2009-04-08 09:01:30 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-04-08 13:05:47 -0400 |
commit | 8d1b2d9361b494bfc761700c348c65ebbe3deb5b (patch) | |
tree | 284706b328133063bf530cb47c52a827b523b65a /include | |
parent | 8740f9418c78dcad694b46ab25d1645d5aef1f5e (diff) |
perf_counter: track task-comm data
Similar to the mmap data stream, add one that tracks the task COMM field,
so that the userspace reporting knows what to call a task.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
LKML-Reference: <20090408130409.127422406@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/perf_counter.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/include/linux/perf_counter.h b/include/linux/perf_counter.h index 8bf764fc6220..a70a55f27598 100644 --- a/include/linux/perf_counter.h +++ b/include/linux/perf_counter.h | |||
@@ -142,8 +142,9 @@ struct perf_counter_hw_event { | |||
142 | exclude_idle : 1, /* don't count when idle */ | 142 | exclude_idle : 1, /* don't count when idle */ |
143 | mmap : 1, /* include mmap data */ | 143 | mmap : 1, /* include mmap data */ |
144 | munmap : 1, /* include munmap data */ | 144 | munmap : 1, /* include munmap data */ |
145 | comm : 1, /* include comm data */ | ||
145 | 146 | ||
146 | __reserved_1 : 53; | 147 | __reserved_1 : 52; |
147 | 148 | ||
148 | __u32 extra_config_len; | 149 | __u32 extra_config_len; |
149 | __u32 wakeup_events; /* wakeup every n events */ | 150 | __u32 wakeup_events; /* wakeup every n events */ |
@@ -231,6 +232,16 @@ enum perf_event_type { | |||
231 | PERF_EVENT_MUNMAP = 2, | 232 | PERF_EVENT_MUNMAP = 2, |
232 | 233 | ||
233 | /* | 234 | /* |
235 | * struct { | ||
236 | * struct perf_event_header header; | ||
237 | * | ||
238 | * u32 pid, tid; | ||
239 | * char comm[]; | ||
240 | * }; | ||
241 | */ | ||
242 | PERF_EVENT_COMM = 3, | ||
243 | |||
244 | /* | ||
234 | * When header.misc & PERF_EVENT_MISC_OVERFLOW the event_type field | 245 | * When header.misc & PERF_EVENT_MISC_OVERFLOW the event_type field |
235 | * will be PERF_RECORD_* | 246 | * will be PERF_RECORD_* |
236 | * | 247 | * |
@@ -545,6 +556,8 @@ extern void perf_counter_mmap(unsigned long addr, unsigned long len, | |||
545 | extern void perf_counter_munmap(unsigned long addr, unsigned long len, | 556 | extern void perf_counter_munmap(unsigned long addr, unsigned long len, |
546 | unsigned long pgoff, struct file *file); | 557 | unsigned long pgoff, struct file *file); |
547 | 558 | ||
559 | extern void perf_counter_comm(struct task_struct *tsk); | ||
560 | |||
548 | #define MAX_STACK_DEPTH 255 | 561 | #define MAX_STACK_DEPTH 255 |
549 | 562 | ||
550 | struct perf_callchain_entry { | 563 | struct perf_callchain_entry { |
@@ -583,6 +596,7 @@ static inline void | |||
583 | perf_counter_munmap(unsigned long addr, unsigned long len, | 596 | perf_counter_munmap(unsigned long addr, unsigned long len, |
584 | unsigned long pgoff, struct file *file) { } | 597 | unsigned long pgoff, struct file *file) { } |
585 | 598 | ||
599 | static inline void perf_counter_comm(struct task_struct *tsk) { } | ||
586 | #endif | 600 | #endif |
587 | 601 | ||
588 | #endif /* __KERNEL__ */ | 602 | #endif /* __KERNEL__ */ |