|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 7/9] xenalyze: handle more events in sched_process
On 05/23/2015 09:24 AM, Olaf Hering wrote:
> Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
> Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
> Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
> ---
> tools/xentrace/xenalyze.c | 75
> ++++++++++++++++++++++++++++++++++++++++++-----
> 1 file changed, 68 insertions(+), 7 deletions(-)
>
> diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
> index 0566d00..2300348 100644
> --- a/tools/xentrace/xenalyze.c
> +++ b/tools/xentrace/xenalyze.c
> @@ -30,6 +30,7 @@
> #include <fcntl.h>
> #include <unistd.h>
> #include <public/trace.h>
> +#include <public/sched.h>
> #include "analyze.h"
> #include "mread.h"
> #include "pv.h"
> @@ -7569,24 +7570,84 @@ void sched_summary_domain(struct domain_data *d)
> }
> }
>
> +void sched_class(struct record_info *ri)
> +{
> + /* Just a stub for now */
> +}
>
> void sched_process(struct pcpu_info *p)
> {
> struct record_info *ri = &p->ri;
>
> - if(ri->evt.sub == 0xf) {
> + if (ri->evt.sub == 1) {
> + sched_runstate_process(p);
> + } else if (ri->evt.sub == 2) {
> + sched_class(ri);
> + } else {
> switch(ri->event)
> {
> + case TRC_SCHED_DOM_ADD:
> + printf(" %s sched_add_domain d%uv%u\n",
> + ri->dump_header, ri->d[0], ri->d[1]);
> + break;
> + case TRC_SCHED_DOM_REM:
> + printf(" %s sched_rem_domain d%uv%u\n",
> + ri->dump_header, ri->d[0], ri->d[1]);
> + break;
> + case TRC_SCHED_SLEEP:
> + printf(" %s domain_sleep d%uv%u\n",
> + ri->dump_header, ri->d[0], ri->d[1]);
> + break;
> + case TRC_SCHED_WAKE:
> + printf(" %s domain_wake d%uv%u\n",
> + ri->dump_header, ri->d[0], ri->d[1]);
> + break;
> + case TRC_SCHED_YIELD:
> + printf(" %s do_yield d%uv%u\n",
> + ri->dump_header, ri->d[0], ri->d[1]);
> + break;
> + case TRC_SCHED_BLOCK:
> + printf(" %s do_block d%uv%u\n",
> + ri->dump_header, ri->d[0], ri->d[1]);
> + break;
> + case TRC_SCHED_SHUTDOWN:
> + {
> + static const char *reason[] = {
> + [SHUTDOWN_poweroff] = "poweroff",
> + [SHUTDOWN_reboot] = "reboot",
> + [SHUTDOWN_suspend] = "suspend",
> + [SHUTDOWN_crash] = "crash",
> + [SHUTDOWN_watchdog] = "watchdog",
> + };
> + printf(" %s domain_shutdown d%uv%u reason %x (%s)\n",
> + ri->dump_header, ri->d[0], ri->d[1], ri->d[2],
> + ri->d[2] > SHUTDOWN_MAX ? "unknown" : reason[ri->d[2]]);
> + break;
> + }
> + case TRC_SCHED_SHUTDOWN_CODE:
> + {
> + printf(" %s domain_shutdown_code d%uv%u reason %x\n",
> + ri->dump_header, ri->d[0], ri->d[1], ri->d[2]);
> + break;
> + }
> + case TRC_SCHED_ADJDOM:
> + printf(" %s sched_adjdom domid d%u\n",
> + ri->dump_header, ri->d[0]);
> + break;
> case TRC_SCHED_SWITCH:
> sched_switch_process(p);
> break;
> + case TRC_SCHED_SWITCH_INFPREV:
> + printf(" %s switch_infprev old_domid %x runtime %d\n",
> + ri->dump_header, ri->d[0], ri->d[1]);
> + break;
> + case TRC_SCHED_SWITCH_INFNEXT:
> + printf(" %s switch_infnext new_domid %x time %d r_time %d\n",
> + ri->dump_header, ri->d[0], ri->d[1], ri->d[2]);
> + break;
> default:
> - process_generic(&p->ri);
> - }
> - } else {
> - if(ri->evt.sub == 1)
> - sched_runstate_process(p);
> - else {
> + fprintf(warn, "%s: event:%x (min:%x sub:%x main:%x)\n",
> + __func__, ri->event, ri->evt.minor, ri->evt.sub,
> ri->evt.main);
Was there a reason you didn't want to change this to "Unknown event"?
-George
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |