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

[Xen-devel] Re: [Qemu-devel] [PATCH V9 15/16] xen: Set running state in xenstore.



On 01/25/2011 08:29 AM, anthony.perard@xxxxxxxxxx wrote:
From: Anthony PERARD<anthony.perard@xxxxxxxxxx>

This tells to the xen management tool that the machine can begin run.

Signed-off-by: Anthony PERARD<anthony.perard@xxxxxxxxxx>
---
  xen-all.c |   27 +++++++++++++++++++++++++++
  1 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/xen-all.c b/xen-all.c
index a0248ee..c2d37d6 100644
--- a/xen-all.c
+++ b/xen-all.c
@@ -58,6 +58,8 @@ typedef struct XenIOState {
      /* which vcpu we are serving */
      int send_vcpu;

+    struct xs_handle *xenstore;
+
      Notifier exit;
  } XenIOState;

@@ -426,6 +428,21 @@ static void cpu_handle_ioreq(void *opaque)
      }
  }

+static void xenstore_record_dm_state(XenIOState *s, const char *state)
+{
+    char *path = NULL;
+
+    if (asprintf(&path, "/local/domain/0/device-model/%u/state", xen_domid) == 
-1) {
+        fprintf(stderr, "out of memory recording dm state\n");
+        exit(1);
+    }

asprintf() is very unportable.

+    if (!xs_write(s->xenstore, XBT_NULL, path, state, strlen(state))) {
+        fprintf(stderr, "error recording dm state\n");
+        exit(1);
+    }
+    free(path);
+}
+
  static void xen_main_loop_prepare(XenIOState *state)
  {
      int evtchn_fd = -1;
@@ -441,6 +458,9 @@ static void xen_main_loop_prepare(XenIOState *state)
      if (evtchn_fd != -1) {
          qemu_set_fd_handler(evtchn_fd, cpu_handle_ioreq, NULL, state);
      }
+
+    /* record state running */
+    xenstore_record_dm_state(state, "running");
  }


@@ -459,6 +479,7 @@ static void xen_exit_notifier(Notifier *n)
      XenIOState *state = container_of(n, XenIOState, exit);

      xc_evtchn_close(state->xce_handle);
+    xs_daemon_close(state->xenstore);
  }

  int xen_init(int smp_cpus)
@@ -484,6 +505,12 @@ int xen_init(int smp_cpus)
          return -errno;
      }

+    state->xenstore = xs_daemon_open();
+    if (state->xenstore == NULL) {
+        perror("xen: xenstore open");
+        return -errno;
+    }
+
      state->exit.notify = xen_exit_notifier;
      qemu_add_exit_notifier(&state->exit);



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


 


Rackspace

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