diff options
| author | Anton Blanchard <anton@samba.org> | 2009-07-01 09:00:49 +1000 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-07-01 01:25:20 +0200 | 
| commit | fb9c818873a788c5c01c9868cc6050df96e2c7df (patch) | |
| tree | 21104da26e2cfaad96b1bf10256fe5d635e4e6b8 | |
| parent | d8db1b57d31a6b30ea2f0df318eab50fc92b38d6 (diff) | |
perf report: Add hypervisor dso
Add a dso for hypervisor samples. We don't get any symbol
information on the ppc64 hypervisor but this at least gives
us a high level summary of the time spent in there.
Signed-off-by: Anton Blanchard <anton@samba.org>
Cc: a.p.zijlstra@chello.nl
Cc: paulus@samba.org
LKML-Reference: <20090630230141.182536873@samba.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
| -rw-r--r-- | tools/perf/builtin-report.c | 15 | 
1 files changed, 14 insertions, 1 deletions
| diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 88e88c510ae..3f5d8ea05ff 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -121,6 +121,7 @@ typedef union event_union {  static LIST_HEAD(dsos);  static struct dso *kernel_dso;  static struct dso *vdso; +static struct dso *hypervisor_dso;  static void dsos__add(struct dso *dso)  { @@ -202,6 +203,11 @@ static int load_kernel(void)  	dsos__add(vdso); +	hypervisor_dso = dso__new("[hypervisor]", 0); +	if (!hypervisor_dso) +		return -1; +	dsos__add(hypervisor_dso); +  	return err;  } @@ -640,7 +646,8 @@ sort__sym_print(FILE *fp, struct hist_entry *self)  	if (self->sym) {  		ret += fprintf(fp, "[%c] %s", -			self->dso == kernel_dso ? 'k' : '.', self->sym->name); +			self->dso == kernel_dso ? 'k' : +			self->dso == hypervisor_dso ? 'h' : '.', self->sym->name);  	} else {  		ret += fprintf(fp, "%#016llx", (u64)self->ip);  	} @@ -963,6 +970,9 @@ hist_entry__add(struct thread *thread, struct map *map, struct dso *dso,  			}  			switch (context) { +			case PERF_CONTEXT_HV: +				dso = hypervisor_dso; +				break;  			case PERF_CONTEXT_KERNEL:  				dso = kernel_dso;  				break; @@ -1275,6 +1285,9 @@ process_sample_event(event_t *event, unsigned long offset, unsigned long head)  	} else {  		show = SHOW_HV;  		level = 'H'; + +		dso = hypervisor_dso; +  		dprintf(" ...... dso: [hypervisor]\n");  	} | 
