]> Git Repo - qemu.git/blobdiff - hw/xen/xen_pvdev.c
xen: use libxendevice model to restrict operations
[qemu.git] / hw / xen / xen_pvdev.c
index e432d30a4ac00d8fa03d3df48e65435fb3cf0a29..aed783e844ea8b3ef1359d9c93cbdc596cba95f4 100644 (file)
@@ -18,7 +18,8 @@
  */
 
 #include "qemu/osdep.h"
-
+#include "qemu/log.h"
+#include "hw/qdev-core.h"
 #include "hw/xen/xen_backend.h"
 #include "hw/xen/xen_pvdev.h"
 
@@ -68,13 +69,13 @@ int xenstore_mkdir(char *path, int p)
     };
 
     if (!xs_mkdir(xenstore, 0, path)) {
-        xen_be_printf(NULL, 0, "xs_mkdir %s: failed\n", path);
+        xen_pv_printf(NULL, 0, "xs_mkdir %s: failed\n", path);
         return -1;
     }
     xenstore_cleanup_dir(g_strdup(path));
 
     if (!xs_set_permissions(xenstore, 0, path, perms, 2)) {
-        xen_be_printf(NULL, 0, "xs_set_permissions %s: failed\n", path);
+        xen_pv_printf(NULL, 0, "xs_set_permissions %s: failed\n", path);
         return -1;
     }
     return 0;
@@ -194,7 +195,7 @@ const char *xenbus_strstate(enum xenbus_state state)
  *  2 == noisy debug messages (logfile only).
  *  3 == will flood your log (logfile only).
  */
-void xen_be_printf(struct XenDevice *xendev, int msg_level,
+void xen_pv_printf(struct XenDevice *xendev, int msg_level,
                    const char *fmt, ...)
 {
     va_list args;
@@ -227,14 +228,14 @@ void xen_be_printf(struct XenDevice *xendev, int msg_level,
     qemu_log_flush();
 }
 
-void xen_be_evtchn_event(void *opaque)
+void xen_pv_evtchn_event(void *opaque)
 {
     struct XenDevice *xendev = opaque;
     evtchn_port_t port;
 
     port = xenevtchn_pending(xendev->evtchndev);
     if (port != xendev->local_port) {
-        xen_be_printf(xendev, 0,
+        xen_pv_printf(xendev, 0,
                       "xenevtchn_pending returned %d (expected %d)\n",
                       port, xendev->local_port);
         return;
@@ -246,25 +247,25 @@ void xen_be_evtchn_event(void *opaque)
     }
 }
 
-void xen_be_unbind_evtchn(struct XenDevice *xendev)
+void xen_pv_unbind_evtchn(struct XenDevice *xendev)
 {
     if (xendev->local_port == -1) {
         return;
     }
     qemu_set_fd_handler(xenevtchn_fd(xendev->evtchndev), NULL, NULL, NULL);
     xenevtchn_unbind(xendev->evtchndev, xendev->local_port);
-    xen_be_printf(xendev, 2, "unbind evtchn port %d\n", xendev->local_port);
+    xen_pv_printf(xendev, 2, "unbind evtchn port %d\n", xendev->local_port);
     xendev->local_port = -1;
 }
 
-int xen_be_send_notify(struct XenDevice *xendev)
+int xen_pv_send_notify(struct XenDevice *xendev)
 {
     return xenevtchn_notify(xendev->evtchndev, xendev->local_port);
 }
 
 /* ------------------------------------------------------------- */
 
-struct XenDevice *xen_be_find_xendev(const char *type, int dom, int dev)
+struct XenDevice *xen_pv_find_xendev(const char *type, int dom, int dev)
 {
     struct XenDevice *xendev;
 
@@ -286,7 +287,7 @@ struct XenDevice *xen_be_find_xendev(const char *type, int dom, int dev)
 /*
  * release xen backend device.
  */
-void xen_be_del_xendev(struct XenDevice *xendev)
+void xen_pv_del_xendev(struct XenDevice *xendev)
 {
     if (xendev->ops->free) {
         xendev->ops->free(xendev);
@@ -307,7 +308,8 @@ void xen_be_del_xendev(struct XenDevice *xendev)
     }
 
     QTAILQ_REMOVE(&xendevs, xendev, next);
-    g_free(xendev);
+
+    qdev_unplug(&xendev->qdev, NULL);
 }
 
 void xen_pv_insert_xendev(struct XenDevice *xendev)
This page took 0.029704 seconds and 4 git commands to generate.