mirror of https://gitee.com/openkylin/linux.git
perf-report: Add bare minimum PERF_EVENT_READ parsing
Provide the basic infrastructure to provide per task stats. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <new-submission> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
649c48a9e7
commit
e9ea2fde7a
|
@ -100,6 +100,13 @@ struct lost_event {
|
|||
u64 lost;
|
||||
};
|
||||
|
||||
struct read_event {
|
||||
struct perf_event_header header;
|
||||
u32 pid,tid;
|
||||
u64 value;
|
||||
u64 format[3];
|
||||
};
|
||||
|
||||
typedef union event_union {
|
||||
struct perf_event_header header;
|
||||
struct ip_event ip;
|
||||
|
@ -108,6 +115,7 @@ typedef union event_union {
|
|||
struct fork_event fork;
|
||||
struct period_event period;
|
||||
struct lost_event lost;
|
||||
struct read_event read;
|
||||
} event_t;
|
||||
|
||||
static LIST_HEAD(dsos);
|
||||
|
@ -1349,6 +1357,19 @@ static void trace_event(event_t *event)
|
|||
dprintf(".\n");
|
||||
}
|
||||
|
||||
static int
|
||||
process_read_event(event_t *event, unsigned long offset, unsigned long head)
|
||||
{
|
||||
dprintf("%p [%p]: PERF_EVENT_READ: %d %d %Lu\n",
|
||||
(void *)(offset + head),
|
||||
(void *)(long)(event->header.size),
|
||||
event->read.pid,
|
||||
event->read.tid,
|
||||
event->read.value);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
process_event(event_t *event, unsigned long offset, unsigned long head)
|
||||
{
|
||||
|
@ -1373,6 +1394,9 @@ process_event(event_t *event, unsigned long offset, unsigned long head)
|
|||
case PERF_EVENT_LOST:
|
||||
return process_lost_event(event, offset, head);
|
||||
|
||||
case PERF_EVENT_READ:
|
||||
return process_read_event(event, offset, head);
|
||||
|
||||
/*
|
||||
* We dont process them right now but they are fine:
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue