perf_counter: comment the perf_event_type stuff
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Mon, 6 Apr 2009 09:45:08 +0000 (11:45 +0200)
committerIngo Molnar <mingo@elte.hu>
Tue, 7 Apr 2009 08:48:59 +0000 (10:48 +0200)
Describe the event format.

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: <20090406094518.211174347@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/perf_counter.h

index ef4dcbf..8122018 100644 (file)
@@ -208,6 +208,20 @@ struct perf_event_header {
 
 enum perf_event_type {
 
+       /*
+        * The MMAP events record the PROT_EXEC mappings so that we can
+        * correlate userspace IPs to code. They have the following structure:
+        *
+        * struct {
+        *      struct perf_event_header        header;
+        *
+        *      u32                             pid, tid;
+        *      u64                             addr;
+        *      u64                             len;
+        *      u64                             pgoff;
+        *      char                            filename[];
+        * };
+        */
        PERF_EVENT_MMAP                 = 1,
        PERF_EVENT_MUNMAP               = 2,
 
@@ -217,6 +231,24 @@ enum perf_event_type {
         *
         * These events will have types of the form:
         *   PERF_EVENT_COUNTER_OVERFLOW { | __PERF_EVENT_* } *
+        *
+        * struct {
+        *      struct perf_event_header        header;
+        *
+        *      { u64                   ip;       } && __PERF_EVENT_IP
+        *      { u32                   pid, tid; } && __PERF_EVENT_TID
+        *
+        *      { u64                   nr;
+        *        { u64 event, val; }   cnt[nr];  } && __PERF_EVENT_GROUP
+        *
+        *      { u16                   nr,
+        *                              hv,
+        *                              kernel,
+        *                              user;
+        *        u64                   ips[nr];  } && __PERF_EVENT_CALLCHAIN
+        *
+        *      { u64                   time;     } && __PERF_EVENT_TIME
+        * };
         */
        PERF_EVENT_COUNTER_OVERFLOW     = 1UL << 31,
        __PERF_EVENT_IP                 = PERF_RECORD_IP,