perf tools: Remove event types framework completely
Removing event types framework completely. The only remainder (apart from few comments) is following enum: enum perf_user_event_type { ... PERF_RECORD_HEADER_EVENT_TYPE = 65, /* deprecated */ ... } It's kept as deprecated, resulting in error when processed in perf_session__process_user_event function. Signed-off-by: Jiri Olsa <jolsa@redhat.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1373556513-3000-6-git-send-email-jolsa@redhat.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
30d350795e
commit
6065210db9
|
@ -67,12 +67,6 @@ static int perf_event__repipe_op2_synth(struct perf_tool *tool,
|
||||||
return perf_event__repipe_synth(tool, event);
|
return perf_event__repipe_synth(tool, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int perf_event__repipe_event_type_synth(struct perf_tool *tool,
|
|
||||||
union perf_event *event)
|
|
||||||
{
|
|
||||||
return perf_event__repipe_synth(tool, event);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int perf_event__repipe_attr(struct perf_tool *tool,
|
static int perf_event__repipe_attr(struct perf_tool *tool,
|
||||||
union perf_event *event,
|
union perf_event *event,
|
||||||
struct perf_evlist **pevlist)
|
struct perf_evlist **pevlist)
|
||||||
|
@ -402,7 +396,6 @@ int cmd_inject(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||||
.throttle = perf_event__repipe,
|
.throttle = perf_event__repipe,
|
||||||
.unthrottle = perf_event__repipe,
|
.unthrottle = perf_event__repipe,
|
||||||
.attr = perf_event__repipe_attr,
|
.attr = perf_event__repipe_attr,
|
||||||
.event_type = perf_event__repipe_event_type_synth,
|
|
||||||
.tracing_data = perf_event__repipe_op2_synth,
|
.tracing_data = perf_event__repipe_op2_synth,
|
||||||
.finished_round = perf_event__repipe_op2_synth,
|
.finished_round = perf_event__repipe_op2_synth,
|
||||||
.build_id = perf_event__repipe_op2_synth,
|
.build_id = perf_event__repipe_op2_synth,
|
||||||
|
|
|
@ -474,13 +474,6 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv)
|
||||||
goto out_delete_session;
|
goto out_delete_session;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = perf_event__synthesize_event_types(tool, process_synthesized_event,
|
|
||||||
machine);
|
|
||||||
if (err < 0) {
|
|
||||||
pr_err("Couldn't synthesize event_types.\n");
|
|
||||||
goto out_delete_session;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (have_tracepoints(&evsel_list->entries)) {
|
if (have_tracepoints(&evsel_list->entries)) {
|
||||||
/*
|
/*
|
||||||
* FIXME err <= 0 here actually means that
|
* FIXME err <= 0 here actually means that
|
||||||
|
|
|
@ -741,7 +741,6 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||||
.lost = perf_event__process_lost,
|
.lost = perf_event__process_lost,
|
||||||
.read = process_read_event,
|
.read = process_read_event,
|
||||||
.attr = perf_event__process_attr,
|
.attr = perf_event__process_attr,
|
||||||
.event_type = perf_event__process_event_type,
|
|
||||||
.tracing_data = perf_event__process_tracing_data,
|
.tracing_data = perf_event__process_tracing_data,
|
||||||
.build_id = perf_event__process_build_id,
|
.build_id = perf_event__process_build_id,
|
||||||
.ordered_samples = true,
|
.ordered_samples = true,
|
||||||
|
|
|
@ -524,7 +524,6 @@ static struct perf_tool perf_script = {
|
||||||
.exit = perf_event__process_exit,
|
.exit = perf_event__process_exit,
|
||||||
.fork = perf_event__process_fork,
|
.fork = perf_event__process_fork,
|
||||||
.attr = perf_event__process_attr,
|
.attr = perf_event__process_attr,
|
||||||
.event_type = perf_event__process_event_type,
|
|
||||||
.tracing_data = perf_event__process_tracing_data,
|
.tracing_data = perf_event__process_tracing_data,
|
||||||
.build_id = perf_event__process_build_id,
|
.build_id = perf_event__process_build_id,
|
||||||
.ordered_samples = true,
|
.ordered_samples = true,
|
||||||
|
|
|
@ -116,7 +116,7 @@ struct build_id_event {
|
||||||
enum perf_user_event_type { /* above any possible kernel type */
|
enum perf_user_event_type { /* above any possible kernel type */
|
||||||
PERF_RECORD_USER_TYPE_START = 64,
|
PERF_RECORD_USER_TYPE_START = 64,
|
||||||
PERF_RECORD_HEADER_ATTR = 64,
|
PERF_RECORD_HEADER_ATTR = 64,
|
||||||
PERF_RECORD_HEADER_EVENT_TYPE = 65,
|
PERF_RECORD_HEADER_EVENT_TYPE = 65, /* depreceated */
|
||||||
PERF_RECORD_HEADER_TRACING_DATA = 66,
|
PERF_RECORD_HEADER_TRACING_DATA = 66,
|
||||||
PERF_RECORD_HEADER_BUILD_ID = 67,
|
PERF_RECORD_HEADER_BUILD_ID = 67,
|
||||||
PERF_RECORD_FINISHED_ROUND = 68,
|
PERF_RECORD_FINISHED_ROUND = 68,
|
||||||
|
|
|
@ -25,41 +25,9 @@
|
||||||
|
|
||||||
static bool no_buildid_cache = false;
|
static bool no_buildid_cache = false;
|
||||||
|
|
||||||
static int trace_event_count;
|
|
||||||
static struct perf_trace_event_type *trace_events;
|
|
||||||
|
|
||||||
static u32 header_argc;
|
static u32 header_argc;
|
||||||
static const char **header_argv;
|
static const char **header_argv;
|
||||||
|
|
||||||
int perf_header__push_event(u64 id, const char *name)
|
|
||||||
{
|
|
||||||
struct perf_trace_event_type *nevents;
|
|
||||||
|
|
||||||
if (strlen(name) > MAX_EVENT_NAME)
|
|
||||||
pr_warning("Event %s will be truncated\n", name);
|
|
||||||
|
|
||||||
nevents = realloc(trace_events, (trace_event_count + 1) * sizeof(*trace_events));
|
|
||||||
if (nevents == NULL)
|
|
||||||
return -ENOMEM;
|
|
||||||
trace_events = nevents;
|
|
||||||
|
|
||||||
memset(&trace_events[trace_event_count], 0, sizeof(struct perf_trace_event_type));
|
|
||||||
trace_events[trace_event_count].event_id = id;
|
|
||||||
strncpy(trace_events[trace_event_count].name, name, MAX_EVENT_NAME - 1);
|
|
||||||
trace_event_count++;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *perf_header__find_event(u64 id)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for (i = 0 ; i < trace_event_count; i++) {
|
|
||||||
if (trace_events[i].event_id == id)
|
|
||||||
return trace_events[i].name;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* magic2 = "PERFILE2"
|
* magic2 = "PERFILE2"
|
||||||
* must be a numerical value to let the endianness
|
* must be a numerical value to let the endianness
|
||||||
|
@ -2936,64 +2904,6 @@ int perf_event__process_attr(struct perf_tool *tool __maybe_unused,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int perf_event__synthesize_event_type(struct perf_tool *tool,
|
|
||||||
u64 event_id, char *name,
|
|
||||||
perf_event__handler_t process,
|
|
||||||
struct machine *machine)
|
|
||||||
{
|
|
||||||
union perf_event ev;
|
|
||||||
size_t size = 0;
|
|
||||||
int err = 0;
|
|
||||||
|
|
||||||
memset(&ev, 0, sizeof(ev));
|
|
||||||
|
|
||||||
ev.event_type.event_type.event_id = event_id;
|
|
||||||
memset(ev.event_type.event_type.name, 0, MAX_EVENT_NAME);
|
|
||||||
strncpy(ev.event_type.event_type.name, name, MAX_EVENT_NAME - 1);
|
|
||||||
|
|
||||||
ev.event_type.header.type = PERF_RECORD_HEADER_EVENT_TYPE;
|
|
||||||
size = strlen(ev.event_type.event_type.name);
|
|
||||||
size = PERF_ALIGN(size, sizeof(u64));
|
|
||||||
ev.event_type.header.size = sizeof(ev.event_type) -
|
|
||||||
(sizeof(ev.event_type.event_type.name) - size);
|
|
||||||
|
|
||||||
err = process(tool, &ev, NULL, machine);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
int perf_event__synthesize_event_types(struct perf_tool *tool,
|
|
||||||
perf_event__handler_t process,
|
|
||||||
struct machine *machine)
|
|
||||||
{
|
|
||||||
struct perf_trace_event_type *type;
|
|
||||||
int i, err = 0;
|
|
||||||
|
|
||||||
for (i = 0; i < trace_event_count; i++) {
|
|
||||||
type = &trace_events[i];
|
|
||||||
|
|
||||||
err = perf_event__synthesize_event_type(tool, type->event_id,
|
|
||||||
type->name, process,
|
|
||||||
machine);
|
|
||||||
if (err) {
|
|
||||||
pr_debug("failed to create perf header event type\n");
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
int perf_event__process_event_type(struct perf_tool *tool __maybe_unused,
|
|
||||||
union perf_event *event)
|
|
||||||
{
|
|
||||||
if (perf_header__push_event(event->event_type.event_type.event_id,
|
|
||||||
event->event_type.event_type.name) < 0)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int perf_event__synthesize_tracing_data(struct perf_tool *tool, int fd,
|
int perf_event__synthesize_tracing_data(struct perf_tool *tool, int fd,
|
||||||
struct perf_evlist *evlist,
|
struct perf_evlist *evlist,
|
||||||
perf_event__handler_t process)
|
perf_event__handler_t process)
|
||||||
|
|
|
@ -102,9 +102,6 @@ int perf_session__write_header(struct perf_session *session,
|
||||||
int fd, bool at_exit);
|
int fd, bool at_exit);
|
||||||
int perf_header__write_pipe(int fd);
|
int perf_header__write_pipe(int fd);
|
||||||
|
|
||||||
int perf_header__push_event(u64 id, const char *name);
|
|
||||||
char *perf_header__find_event(u64 id);
|
|
||||||
|
|
||||||
void perf_header__set_feat(struct perf_header *header, int feat);
|
void perf_header__set_feat(struct perf_header *header, int feat);
|
||||||
void perf_header__clear_feat(struct perf_header *header, int feat);
|
void perf_header__clear_feat(struct perf_header *header, int feat);
|
||||||
bool perf_header__has_feat(const struct perf_header *header, int feat);
|
bool perf_header__has_feat(const struct perf_header *header, int feat);
|
||||||
|
@ -132,16 +129,6 @@ int perf_event__synthesize_attrs(struct perf_tool *tool,
|
||||||
int perf_event__process_attr(struct perf_tool *tool, union perf_event *event,
|
int perf_event__process_attr(struct perf_tool *tool, union perf_event *event,
|
||||||
struct perf_evlist **pevlist);
|
struct perf_evlist **pevlist);
|
||||||
|
|
||||||
int perf_event__synthesize_event_type(struct perf_tool *tool,
|
|
||||||
u64 event_id, char *name,
|
|
||||||
perf_event__handler_t process,
|
|
||||||
struct machine *machine);
|
|
||||||
int perf_event__synthesize_event_types(struct perf_tool *tool,
|
|
||||||
perf_event__handler_t process,
|
|
||||||
struct machine *machine);
|
|
||||||
int perf_event__process_event_type(struct perf_tool *tool,
|
|
||||||
union perf_event *event);
|
|
||||||
|
|
||||||
int perf_event__synthesize_tracing_data(struct perf_tool *tool,
|
int perf_event__synthesize_tracing_data(struct perf_tool *tool,
|
||||||
int fd, struct perf_evlist *evlist,
|
int fd, struct perf_evlist *evlist,
|
||||||
perf_event__handler_t process);
|
perf_event__handler_t process);
|
||||||
|
|
|
@ -241,13 +241,6 @@ static int process_finished_round_stub(struct perf_tool *tool __maybe_unused,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int process_event_type_stub(struct perf_tool *tool __maybe_unused,
|
|
||||||
union perf_event *event __maybe_unused)
|
|
||||||
{
|
|
||||||
dump_printf(": unhandled!\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int process_finished_round(struct perf_tool *tool,
|
static int process_finished_round(struct perf_tool *tool,
|
||||||
union perf_event *event,
|
union perf_event *event,
|
||||||
struct perf_session *session);
|
struct perf_session *session);
|
||||||
|
@ -274,8 +267,6 @@ static void perf_tool__fill_defaults(struct perf_tool *tool)
|
||||||
tool->unthrottle = process_event_stub;
|
tool->unthrottle = process_event_stub;
|
||||||
if (tool->attr == NULL)
|
if (tool->attr == NULL)
|
||||||
tool->attr = process_event_synth_attr_stub;
|
tool->attr = process_event_synth_attr_stub;
|
||||||
if (tool->event_type == NULL)
|
|
||||||
tool->event_type = process_event_type_stub;
|
|
||||||
if (tool->tracing_data == NULL)
|
if (tool->tracing_data == NULL)
|
||||||
tool->tracing_data = process_event_synth_tracing_data_stub;
|
tool->tracing_data = process_event_synth_tracing_data_stub;
|
||||||
if (tool->build_id == NULL)
|
if (tool->build_id == NULL)
|
||||||
|
@ -928,8 +919,6 @@ static int perf_session__process_user_event(struct perf_session *session, union
|
||||||
if (err == 0)
|
if (err == 0)
|
||||||
perf_session__set_id_hdr_size(session);
|
perf_session__set_id_hdr_size(session);
|
||||||
return err;
|
return err;
|
||||||
case PERF_RECORD_HEADER_EVENT_TYPE:
|
|
||||||
return tool->event_type(tool, event);
|
|
||||||
case PERF_RECORD_HEADER_TRACING_DATA:
|
case PERF_RECORD_HEADER_TRACING_DATA:
|
||||||
/* setup for reading amidst mmap */
|
/* setup for reading amidst mmap */
|
||||||
lseek(session->fd, file_offset, SEEK_SET);
|
lseek(session->fd, file_offset, SEEK_SET);
|
||||||
|
|
|
@ -22,8 +22,6 @@ typedef int (*event_attr_op)(struct perf_tool *tool,
|
||||||
union perf_event *event,
|
union perf_event *event,
|
||||||
struct perf_evlist **pevlist);
|
struct perf_evlist **pevlist);
|
||||||
|
|
||||||
typedef int (*event_simple_op)(struct perf_tool *tool, union perf_event *event);
|
|
||||||
|
|
||||||
typedef int (*event_op2)(struct perf_tool *tool, union perf_event *event,
|
typedef int (*event_op2)(struct perf_tool *tool, union perf_event *event,
|
||||||
struct perf_session *session);
|
struct perf_session *session);
|
||||||
|
|
||||||
|
@ -39,7 +37,6 @@ struct perf_tool {
|
||||||
unthrottle;
|
unthrottle;
|
||||||
event_attr_op attr;
|
event_attr_op attr;
|
||||||
event_op2 tracing_data;
|
event_op2 tracing_data;
|
||||||
event_simple_op event_type;
|
|
||||||
event_op2 finished_round,
|
event_op2 finished_round,
|
||||||
build_id;
|
build_id;
|
||||||
bool ordered_samples;
|
bool ordered_samples;
|
||||||
|
|
Loading…
Reference in New Issue