[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-ia64-devel] [PATCH 7/7 TAKE 2] xenoprof for xen/ia64: oprofile



# HG changeset patch
# User yamahata@xxxxxxxxxxxxx
# Date 1161254373 -32400
# Node ID f52b302e20074729ada0eaa67319bf136d7f95ca
# Parent  04dd19d5bf7fb9908508807ed2438a455d291837
xenperfmon support
PATCHNAME: xenperfmon_support

Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>

diff -r 04dd19d5bf7f -r f52b302e2007 daemon/opd_perfmon.c
--- a/daemon/opd_perfmon.c      Thu Oct 19 19:26:45 2006 +0900
+++ b/daemon/opd_perfmon.c      Thu Oct 19 19:39:33 2006 +0900
@@ -381,6 +381,7 @@ static void wait_for_child(struct child 
        close(child->up_pipe[1]);
 }
 
+static struct child* xen_ctx;
 
 void perfmon_init(void)
 {
@@ -389,6 +390,24 @@ void perfmon_init(void)
 
        if (cpu_type == CPU_TIMER_INT)
                return;
+
+       if (!no_xen) {
+               xen_ctx = xmalloc(sizeof(struct child));
+               xen_ctx->pid = getpid();
+               xen_ctx->up_pipe[0] = -1;
+               xen_ctx->up_pipe[1] = -1;
+               xen_ctx->sigusr1 = 0;
+               xen_ctx->sigusr2 = 0;
+               xen_ctx->sigterm = 0;
+
+               create_context(xen_ctx);
+
+               write_pmu(xen_ctx);
+               
+               load_context(xen_ctx);
+               return;
+       }
+       
 
        nr = sysconf(_SC_NPROCESSORS_ONLN);
        if (nr == -1) {
@@ -432,6 +451,9 @@ void perfmon_exit(void)
        if (cpu_type == CPU_TIMER_INT)
                return;
 
+       if (!no_xen)
+               return;
+
        for (i = 0; i < nr_cpus; ++i) {
                kill(children[i].pid, SIGKILL);
                waitpid(children[i].pid, NULL, 0);
@@ -446,6 +468,13 @@ void perfmon_start(void)
        if (cpu_type == CPU_TIMER_INT)
                return;
 
+       if (!no_xen) {
+               printf("PFM_START on xen\n");
+               fflush(stdout);
+               perfmon_start_child(xen_ctx->ctx_fd);
+               return;
+       }
+
        for (i = 0; i < nr_cpus; ++i)
                kill(children[i].pid, SIGUSR1);
 }
@@ -458,6 +487,13 @@ void perfmon_stop(void)
        if (cpu_type == CPU_TIMER_INT)
                return;
 
+       if (!no_xen) {
+               printf("PFM_STOP on Xen\n");
+               fflush(stdout);
+               perfmon_stop_child(xen_ctx->ctx_fd);
+               return;
+       }
+       
        for (i = 0; i < nr_cpus; ++i)
                kill(children[i].pid, SIGUSR2);
 }
yamahata

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.