diff options
Diffstat (limited to 'tools/perf/util/scripting-engines/trace-event-perl.c')
| -rw-r--r-- | tools/perf/util/scripting-engines/trace-event-perl.c | 50 | 
1 files changed, 23 insertions, 27 deletions
diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c index 02dfa19a467..f80605eb185 100644 --- a/tools/perf/util/scripting-engines/trace-event-perl.c +++ b/tools/perf/util/scripting-engines/trace-event-perl.c @@ -25,16 +25,16 @@  #include <ctype.h>  #include <errno.h> -#include "../../perf.h"  #include "../util.h" +#include <EXTERN.h> +#include <perl.h> + +#include "../../perf.h"  #include "../thread.h"  #include "../event.h"  #include "../trace-event.h"  #include "../evsel.h" -#include <EXTERN.h> -#include <perl.h> -  void boot_Perf__Trace__Context(pTHX_ CV *cv);  void boot_DynaLoader(pTHX_ CV *cv);  typedef PerlInterpreter * INTERP; @@ -237,16 +237,16 @@ static void define_event_symbols(struct event_format *event,  		define_event_symbols(event, ev_name, args->next);  } -static inline -struct event_format *find_cache_event(struct pevent *pevent, int type) +static inline struct event_format *find_cache_event(struct perf_evsel *evsel)  {  	static char ev_name[256];  	struct event_format *event; +	int type = evsel->attr.config;  	if (events[type])  		return events[type]; -	events[type] = event = pevent_find_event(pevent, type); +	events[type] = event = evsel->tp_format;  	if (!event)  		return NULL; @@ -257,23 +257,22 @@ struct event_format *find_cache_event(struct pevent *pevent, int type)  	return event;  } -static void perl_process_tracepoint(union perf_event *perf_event __unused, -				    struct pevent *pevent, +static void perl_process_tracepoint(union perf_event *perf_event __maybe_unused,  				    struct perf_sample *sample,  				    struct perf_evsel *evsel, -				    struct machine *machine __unused, -				    struct thread *thread) +				    struct machine *machine __maybe_unused, +				    struct addr_location *al)  {  	struct format_field *field;  	static char handler[256];  	unsigned long long val;  	unsigned long s, ns;  	struct event_format *event; -	int type;  	int pid;  	int cpu = sample->cpu;  	void *data = sample->raw_data;  	unsigned long long nsecs = sample->time; +	struct thread *thread = al->thread;  	char *comm = thread->comm;  	dSP; @@ -281,13 +280,11 @@ static void perl_process_tracepoint(union perf_event *perf_event __unused,  	if (evsel->attr.type != PERF_TYPE_TRACEPOINT)  		return; -	type = trace_parse_common_type(pevent, data); - -	event = find_cache_event(pevent, type); +	event = find_cache_event(evsel);  	if (!event) -		die("ug! no event found for type %d", type); +		die("ug! no event found for type %" PRIu64, evsel->attr.config); -	pid = trace_parse_common_pid(pevent, data); +	pid = raw_field_value(event, "common_pid", data);  	sprintf(handler, "%s::%s", event->system, event->name); @@ -320,7 +317,7 @@ static void perl_process_tracepoint(union perf_event *perf_event __unused,  				offset = field->offset;  			XPUSHs(sv_2mortal(newSVpv((char *)data + offset, 0)));  		} else { /* FIELD_IS_NUMERIC */ -			val = read_size(pevent, data + field->offset, +			val = read_size(event, data + field->offset,  					field->size);  			if (field->flags & FIELD_IS_SIGNED) {  				XPUSHs(sv_2mortal(newSViv(val))); @@ -349,11 +346,11 @@ static void perl_process_tracepoint(union perf_event *perf_event __unused,  	LEAVE;  } -static void perl_process_event_generic(union perf_event *pevent __unused, +static void perl_process_event_generic(union perf_event *event,  				       struct perf_sample *sample, -				       struct perf_evsel *evsel __unused, -				       struct machine *machine __unused, -				       struct thread *thread __unused) +				       struct perf_evsel *evsel, +				       struct machine *machine __maybe_unused, +				       struct addr_location *al __maybe_unused)  {  	dSP; @@ -363,7 +360,7 @@ static void perl_process_event_generic(union perf_event *pevent __unused,  	ENTER;  	SAVETMPS;  	PUSHMARK(SP); -	XPUSHs(sv_2mortal(newSVpvn((const char *)pevent, pevent->header.size))); +	XPUSHs(sv_2mortal(newSVpvn((const char *)event, event->header.size)));  	XPUSHs(sv_2mortal(newSVpvn((const char *)&evsel->attr, sizeof(evsel->attr))));  	XPUSHs(sv_2mortal(newSVpvn((const char *)sample, sizeof(*sample))));  	XPUSHs(sv_2mortal(newSVpvn((const char *)sample->raw_data, sample->raw_size))); @@ -376,14 +373,13 @@ static void perl_process_event_generic(union perf_event *pevent __unused,  }  static void perl_process_event(union perf_event *event, -			       struct pevent *pevent,  			       struct perf_sample *sample,  			       struct perf_evsel *evsel,  			       struct machine *machine, -			       struct thread *thread) +			       struct addr_location *al)  { -	perl_process_tracepoint(event, pevent, sample, evsel, machine, thread); -	perl_process_event_generic(event, sample, evsel, machine, thread); +	perl_process_tracepoint(event, sample, evsel, machine, al); +	perl_process_event_generic(event, sample, evsel, machine, al);  }  static void run_start_sub(void)  |