Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 338863
b: refs/heads/master
c: f62d3f0
h: refs/heads/master
i:
  338861: 4cfca59
  338859: 7545c64
  338855: 9f760e2
  338847: 1d246aa
v: v3
  • Loading branch information
Arnaldo Carvalho de Melo committed Oct 6, 2012
1 parent 1c2bc09 commit 2de3614
Show file tree
Hide file tree
Showing 10 changed files with 40 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9d2f8e22fc965bcdd5561d000d234fe2d23657ba
refs/heads/master: f62d3f0f4596f983ec00495d91c8ddb30268d878
2 changes: 1 addition & 1 deletion trunk/tools/perf/builtin-annotate.c
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ int cmd_annotate(int argc, const char **argv, const char *prefix __maybe_unused)
.sample = process_sample_event,
.mmap = perf_event__process_mmap,
.comm = perf_event__process_comm,
.fork = perf_event__process_task,
.fork = perf_event__process_fork,
.ordered_samples = true,
.ordering_requires_timestamps = true,
},
Expand Down
4 changes: 2 additions & 2 deletions trunk/tools/perf/builtin-diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,8 @@ static struct perf_tool tool = {
.sample = diff__process_sample_event,
.mmap = perf_event__process_mmap,
.comm = perf_event__process_comm,
.exit = perf_event__process_task,
.fork = perf_event__process_task,
.exit = perf_event__process_exit,
.fork = perf_event__process_fork,
.lost = perf_event__process_lost,
.ordered_samples = true,
.ordering_requires_timestamps = true,
Expand Down
6 changes: 3 additions & 3 deletions trunk/tools/perf/builtin-inject.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,14 +102,14 @@ static int perf_event__repipe_mmap(struct perf_tool *tool,
return err;
}

static int perf_event__repipe_task(struct perf_tool *tool,
static int perf_event__repipe_fork(struct perf_tool *tool,
union perf_event *event,
struct perf_sample *sample,
struct machine *machine)
{
int err;

err = perf_event__process_task(tool, event, sample, machine);
err = perf_event__process_fork(tool, event, sample, machine);
perf_event__repipe(tool, event, sample, machine);

return err;
Expand Down Expand Up @@ -227,7 +227,7 @@ static int __cmd_inject(struct perf_inject *inject)
if (inject->build_ids) {
inject->tool.sample = perf_event__inject_buildid;
inject->tool.mmap = perf_event__repipe_mmap;
inject->tool.fork = perf_event__repipe_task;
inject->tool.fork = perf_event__repipe_fork;
inject->tool.tracing_data = perf_event__repipe_tracing_data;
}

Expand Down
4 changes: 2 additions & 2 deletions trunk/tools/perf/builtin-report.c
Original file line number Diff line number Diff line change
Expand Up @@ -556,8 +556,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
.sample = process_sample_event,
.mmap = perf_event__process_mmap,
.comm = perf_event__process_comm,
.exit = perf_event__process_task,
.fork = perf_event__process_task,
.exit = perf_event__process_exit,
.fork = perf_event__process_fork,
.lost = perf_event__process_lost,
.read = process_read_event,
.attr = perf_event__process_attr,
Expand Down
2 changes: 1 addition & 1 deletion trunk/tools/perf/builtin-sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -1672,7 +1672,7 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused)
.sample = perf_sched__process_tracepoint_sample,
.comm = perf_event__process_comm,
.lost = perf_event__process_lost,
.fork = perf_event__process_task,
.fork = perf_event__process_fork,
.ordered_samples = true,
},
.cmp_pid = LIST_HEAD_INIT(sched.cmp_pid),
Expand Down
4 changes: 2 additions & 2 deletions trunk/tools/perf/builtin-script.c
Original file line number Diff line number Diff line change
Expand Up @@ -520,8 +520,8 @@ static struct perf_tool perf_script = {
.sample = process_sample_event,
.mmap = perf_event__process_mmap,
.comm = perf_event__process_comm,
.exit = perf_event__process_task,
.fork = perf_event__process_task,
.exit = perf_event__process_exit,
.fork = perf_event__process_fork,
.attr = perf_event__process_attr,
.event_type = perf_event__process_event_type,
.tracing_data = perf_event__process_tracing_data,
Expand Down
2 changes: 1 addition & 1 deletion trunk/tools/perf/util/build-id.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ static int perf_event__exit_del_thread(struct perf_tool *tool __maybe_unused,
struct perf_tool build_id__mark_dso_hit_ops = {
.sample = build_id__mark_dso_hit,
.mmap = perf_event__process_mmap,
.fork = perf_event__process_task,
.fork = perf_event__process_fork,
.exit = perf_event__exit_del_thread,
.attr = perf_event__process_attr,
.build_id = perf_event__process_build_id,
Expand Down
30 changes: 22 additions & 8 deletions trunk/tools/perf/util/event.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include <linux/types.h>
#include "event.h"
#include "debug.h"
#include "machine.h"
#include "sort.h"
#include "string.h"
#include "strlist.h"
Expand Down Expand Up @@ -702,22 +703,17 @@ size_t perf_event__fprintf_task(union perf_event *event, FILE *fp)
event->fork.ppid, event->fork.ptid);
}

int perf_event__process_task(struct perf_tool *tool __maybe_unused,
int perf_event__process_fork(struct perf_tool *tool __maybe_unused,
union perf_event *event,
struct perf_sample *sample __maybe_unused,
struct machine *machine)
struct machine *machine)
{
struct thread *thread = machine__findnew_thread(machine, event->fork.tid);
struct thread *parent = machine__findnew_thread(machine, event->fork.ptid);

if (dump_trace)
perf_event__fprintf_task(event, stdout);

if (event->header.type == PERF_RECORD_EXIT) {
machine__remove_thread(machine, thread);
return 0;
}

if (thread == NULL || parent == NULL ||
thread__fork(thread, parent) < 0) {
dump_printf("problem processing PERF_RECORD_FORK, skipping event.\n");
Expand All @@ -727,6 +723,22 @@ int perf_event__process_task(struct perf_tool *tool __maybe_unused,
return 0;
}

int perf_event__process_exit(struct perf_tool *tool __maybe_unused,
union perf_event *event,
struct perf_sample *sample __maybe_unused,
struct machine *machine)
{
struct thread *thread = machine__find_thread(machine, event->fork.tid);

if (dump_trace)
perf_event__fprintf_task(event, stdout);

if (thread != NULL)
machine__remove_thread(machine, thread);

return 0;
}

size_t perf_event__fprintf(union perf_event *event, FILE *fp)
{
size_t ret = fprintf(fp, "PERF_RECORD_%s",
Expand Down Expand Up @@ -761,8 +773,10 @@ int perf_event__process(struct perf_tool *tool, union perf_event *event,
perf_event__process_mmap(tool, event, sample, machine);
break;
case PERF_RECORD_FORK:
perf_event__process_fork(tool, event, sample, machine);
break;
case PERF_RECORD_EXIT:
perf_event__process_task(tool, event, sample, machine);
perf_event__process_exit(tool, event, sample, machine);
break;
case PERF_RECORD_LOST:
perf_event__process_lost(tool, event, sample, machine);
Expand Down
6 changes: 5 additions & 1 deletion trunk/tools/perf/util/event.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,11 @@ int perf_event__process_mmap(struct perf_tool *tool,
union perf_event *event,
struct perf_sample *sample,
struct machine *machine);
int perf_event__process_task(struct perf_tool *tool,
int perf_event__process_fork(struct perf_tool *tool,
union perf_event *event,
struct perf_sample *sample,
struct machine *machine);
int perf_event__process_exit(struct perf_tool *tool,
union perf_event *event,
struct perf_sample *sample,
struct machine *machine);
Expand Down

0 comments on commit 2de3614

Please sign in to comment.