-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
John Kacur
authored and
Ingo Molnar
committed
Nov 24, 2009
1 parent
9c875d9
commit 854d6ba
Showing
8 changed files
with
187 additions
and
117 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: c9c7ccaf3a2686ed3a44d69bb1f8b55eeead8a4e | ||
refs/heads/master: e74328d3a17ed75ffdf72b86f289965823a47240 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
#include "process_event.h" | ||
|
||
char *cwd; | ||
int cwdlen; | ||
|
||
int | ||
process_mmap_event(event_t *event, unsigned long offset, unsigned long head) | ||
{ | ||
struct map *map = map__new(&event->mmap, cwd, cwdlen); | ||
struct thread *thread = threads__findnew(event->mmap.pid); | ||
|
||
dump_printf("%p [%p]: PERF_RECORD_MMAP %d/%d: [%p(%p) @ %p]: %s\n", | ||
(void *)(offset + head), | ||
(void *)(long)(event->header.size), | ||
event->mmap.pid, | ||
event->mmap.tid, | ||
(void *)(long)event->mmap.start, | ||
(void *)(long)event->mmap.len, | ||
(void *)(long)event->mmap.pgoff, | ||
event->mmap.filename); | ||
|
||
if (thread == NULL || map == NULL) { | ||
dump_printf("problem processing PERF_RECORD_MMAP, skipping event.\n"); | ||
return 0; | ||
} | ||
|
||
thread__insert_map(thread, map); | ||
total_mmap++; | ||
|
||
return 0; | ||
|
||
} | ||
|
||
int | ||
process_comm_event(event_t *event, unsigned long offset, unsigned long head) | ||
{ | ||
struct thread *thread = threads__findnew(event->comm.pid); | ||
|
||
dump_printf("%p [%p]: PERF_RECORD_COMM: %s:%d\n", | ||
(void *)(offset + head), | ||
(void *)(long)(event->header.size), | ||
event->comm.comm, event->comm.pid); | ||
|
||
if (thread == NULL || | ||
thread__set_comm_adjust(thread, event->comm.comm)) { | ||
dump_printf("problem processing PERF_RECORD_COMM, skipping event.\n"); | ||
return -1; | ||
} | ||
total_comm++; | ||
|
||
return 0; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
#ifndef __PROCESS_EVENT_H | ||
#define __PROCESS_EVENT_H | ||
|
||
#include "../builtin.h" | ||
#include "util.h" | ||
|
||
#include "color.h" | ||
#include <linux/list.h> | ||
#include "cache.h" | ||
#include <linux/rbtree.h> | ||
#include "symbol.h" | ||
#include "string.h" | ||
|
||
#include "../perf.h" | ||
#include "debug.h" | ||
|
||
#include "parse-options.h" | ||
#include "parse-events.h" | ||
|
||
#include "thread.h" | ||
#include "sort.h" | ||
#include "hist.h" | ||
|
||
extern char *cwd; | ||
extern int cwdlen; | ||
extern int process_mmap_event(event_t *, unsigned long, unsigned long); | ||
extern int process_comm_event(event_t *, unsigned long , unsigned long); | ||
|
||
#endif /* __PROCESS_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
#include "process_events.h" | ||
|
||
char *cwd; | ||
int cwdlen; | ||
|
||
int | ||
process_mmap_event(event_t *event, unsigned long offset, unsigned long head) | ||
{ | ||
struct map *map = map__new(&event->mmap, cwd, cwdlen); | ||
struct thread *thread = threads__findnew(event->mmap.pid); | ||
|
||
dump_printf("%p [%p]: PERF_RECORD_MMAP %d/%d: [%p(%p) @ %p]: %s\n", | ||
(void *)(offset + head), | ||
(void *)(long)(event->header.size), | ||
event->mmap.pid, | ||
event->mmap.tid, | ||
(void *)(long)event->mmap.start, | ||
(void *)(long)event->mmap.len, | ||
(void *)(long)event->mmap.pgoff, | ||
event->mmap.filename); | ||
|
||
if (thread == NULL || map == NULL) { | ||
dump_printf("problem processing PERF_RECORD_MMAP, skipping event.\n"); | ||
return 0; | ||
} | ||
|
||
thread__insert_map(thread, map); | ||
total_mmap++; | ||
|
||
return 0; | ||
} | ||
|
||
int | ||
process_task_event(event_t *event, unsigned long offset, unsigned long head) | ||
{ | ||
struct thread *thread = threads__findnew(event->fork.pid); | ||
struct thread *parent = threads__findnew(event->fork.ppid); | ||
|
||
dump_printf("%p [%p]: PERF_RECORD_%s: (%d:%d):(%d:%d)\n", | ||
(void *)(offset + head), | ||
(void *)(long)(event->header.size), | ||
event->header.type == PERF_RECORD_FORK ? "FORK" : "EXIT", | ||
event->fork.pid, event->fork.tid, | ||
event->fork.ppid, event->fork.ptid); | ||
|
||
/* | ||
* A thread clone will have the same PID for both | ||
* parent and child. | ||
*/ | ||
if (thread == parent) | ||
return 0; | ||
|
||
if (event->header.type == PERF_RECORD_EXIT) | ||
return 0; | ||
|
||
if (!thread || !parent || thread__fork(thread, parent)) { | ||
dump_printf("problem processing PERF_RECORD_FORK, skipping event.\n"); | ||
return -1; | ||
} | ||
total_fork++; | ||
|
||
return 0; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
#ifndef __PROCESS_EVENTS_H | ||
#define __PROCESS_EVENTS_H | ||
|
||
#include "../builtin.h" | ||
|
||
#include "util.h" | ||
#include "color.h" | ||
#include <linux/list.h> | ||
#include "cache.h" | ||
#include <linux/rbtree.h> | ||
#include "symbol.h" | ||
#include "string.h" | ||
#include "callchain.h" | ||
#include "strlist.h" | ||
#include "values.h" | ||
|
||
#include "../perf.h" | ||
#include "debug.h" | ||
#include "header.h" | ||
|
||
#include "parse-options.h" | ||
#include "parse-events.h" | ||
|
||
#include "data_map.h" | ||
#include "thread.h" | ||
#include "sort.h" | ||
#include "hist.h" | ||
|
||
extern char *cwd; | ||
extern int cwdlen; | ||
|
||
extern int process_mmap_event(event_t *, unsigned long , unsigned long); | ||
extern int process_task_event(event_t *, unsigned long, unsigned long); | ||
|
||
#endif /* __PROCESS_EVENTS_H */ |