diff options
| -rw-r--r-- | tools/perf/builtin-script.c | 38 | ||||
| -rw-r--r-- | tools/perf/util/trace-event-parse.c | 49 | ||||
| -rw-r--r-- | tools/perf/util/trace-event.h | 3 | 
3 files changed, 42 insertions, 48 deletions
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index b2bdd553402..0a79da21df2 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -20,18 +20,42 @@ static u64			last_timestamp;  static u64			nr_unordered;  extern const struct option	record_options[]; +static void print_sample_start(struct perf_sample *sample, +			       struct thread *thread) +{ +	int type; +	struct event *event; +	const char *evname = NULL; +	unsigned long secs; +	unsigned long usecs; +	unsigned long long nsecs = sample->time; + +	if (latency_format) +		printf("%8.8s-%-5d %3d", thread->comm, sample->tid, sample->cpu); +	else +		printf("%16s-%-5d [%03d]", thread->comm, sample->tid, sample->cpu); + +	secs = nsecs / NSECS_PER_SEC; +	nsecs -= secs * NSECS_PER_SEC; +	usecs = nsecs / NSECS_PER_USEC; +	printf(" %5lu.%06lu: ", secs, usecs); + +	type = trace_parse_common_type(sample->raw_data); +	event = trace_find_event(type); +	if (event) +		evname = event->name; + +	printf("%s: ", evname ? evname : "(unknown)"); +} +  static void process_event(union perf_event *event __unused,  			  struct perf_sample *sample,  			  struct perf_session *session __unused,  			  struct thread *thread)  { -	/* -	 * FIXME: better resolve from pid from the struct trace_entry -	 * field, although it should be the same than this perf -	 * event pid -	 */ -	print_event(sample->cpu, sample->raw_data, sample->raw_size, -		    sample->time, thread->comm); +	print_sample_start(sample, thread); +	print_trace_event(sample->cpu, sample->raw_data, sample->raw_size); +	printf("\n");  }  static int default_start_script(const char *script __unused, diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c index dd5f058292d..0a7ed5b5e28 100644 --- a/tools/perf/util/trace-event-parse.c +++ b/tools/perf/util/trace-event-parse.c @@ -2643,9 +2643,9 @@ static void print_lat_fmt(void *data, int size __unused)  		printf(".");  	if (lock_depth < 0) -		printf("."); +		printf(". ");  	else -		printf("%d", lock_depth); +		printf("%d ", lock_depth);  }  #define TRACE_GRAPH_INDENT	2 @@ -2821,18 +2821,13 @@ static void print_graph_nested(struct event *event, void *data)  static void  pretty_print_func_ent(void *data, int size, struct event *event, -		      int cpu, int pid, const char *comm __unused, -		      unsigned long secs, unsigned long usecs) +		      int cpu, int pid)  {  	struct format_field *field;  	struct record *rec;  	void *copy_data;  	unsigned long val; -	printf("%5lu.%06lu |  ", secs, usecs); - -	printf(" | "); -  	if (latency_format) {  		print_lat_fmt(data, size);  		printf(" | "); @@ -2865,19 +2860,13 @@ out_free:  }  static void -pretty_print_func_ret(void *data, int size __unused, struct event *event, -		      int cpu __unused, int pid __unused, const char *comm __unused, -		      unsigned long secs, unsigned long usecs) +pretty_print_func_ret(void *data, int size __unused, struct event *event)  {  	unsigned long long rettime, calltime;  	unsigned long long duration, depth;  	struct format_field *field;  	int i; -	printf("%5lu.%06lu |  ", secs, usecs); - -	printf(" | "); -  	if (latency_format) {  		print_lat_fmt(data, size);  		printf(" | "); @@ -2915,31 +2904,21 @@ pretty_print_func_ret(void *data, int size __unused, struct event *event,  static void  pretty_print_func_graph(void *data, int size, struct event *event, -			int cpu, int pid, const char *comm, -			unsigned long secs, unsigned long usecs) +			int cpu, int pid)  {  	if (event->flags & EVENT_FL_ISFUNCENT) -		pretty_print_func_ent(data, size, event, -				      cpu, pid, comm, secs, usecs); +		pretty_print_func_ent(data, size, event, cpu, pid);  	else if (event->flags & EVENT_FL_ISFUNCRET) -		pretty_print_func_ret(data, size, event, -				      cpu, pid, comm, secs, usecs); +		pretty_print_func_ret(data, size, event);  	printf("\n");  } -void print_event(int cpu, void *data, int size, unsigned long long nsecs, -		  char *comm) +void print_trace_event(int cpu, void *data, int size)  {  	struct event *event; -	unsigned long secs; -	unsigned long usecs;  	int type;  	int pid; -	secs = nsecs / NSECS_PER_SEC; -	nsecs -= secs * NSECS_PER_SEC; -	usecs = nsecs / NSECS_PER_USEC; -  	type = trace_parse_common_type(data);  	event = trace_find_event(type); @@ -2951,17 +2930,10 @@ void print_event(int cpu, void *data, int size, unsigned long long nsecs,  	pid = trace_parse_common_pid(data);  	if (event->flags & (EVENT_FL_ISFUNCENT | EVENT_FL_ISFUNCRET)) -		return pretty_print_func_graph(data, size, event, cpu, -					       pid, comm, secs, usecs); +		return pretty_print_func_graph(data, size, event, cpu, pid); -	if (latency_format) { -		printf("%8.8s-%-5d %3d", -		       comm, pid, cpu); +	if (latency_format)  		print_lat_fmt(data, size); -	} else -		printf("%16s-%-5d [%03d]", comm, pid,  cpu); - -	printf(" %5lu.%06lu: %s: ", secs, usecs, event->name);  	if (event->flags & EVENT_FL_FAILED) {  		printf("EVENT '%s' FAILED TO PARSE\n", @@ -2970,7 +2942,6 @@ void print_event(int cpu, void *data, int size, unsigned long long nsecs,  	}  	pretty_print(data, size, event); -	printf("\n");  }  static void print_fields(struct print_flag_sym *field) diff --git a/tools/perf/util/trace-event.h b/tools/perf/util/trace-event.h index 5f7b5139c32..b04da572243 100644 --- a/tools/perf/util/trace-event.h +++ b/tools/perf/util/trace-event.h @@ -177,8 +177,7 @@ void print_printk(void);  int parse_ftrace_file(char *buf, unsigned long size);  int parse_event_file(char *buf, unsigned long size, char *sys); -void print_event(int cpu, void *data, int size, unsigned long long nsecs, -		  char *comm); +void print_trace_event(int cpu, void *data, int size);  extern int file_bigendian;  extern int host_bigendian;  |