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

[Xen-devel] [PATCH 1/2] xenstored: Use xenbus_backend device on Linux



xenstored: Use xenbus_backend device on Linux

This patch is done on top of 4.1 for now. The kernel part is already
merged.

diff -r 1c89f7d29fbb tools/include/xen-sys/Linux/xenbus_dev.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/include/xen-sys/Linux/xenbus_dev.h  Sat Dec 10 19:38:54 2011 +0100
@@ -0,0 +1,41 @@
+/******************************************************************************
+ * evtchn.h
+ *
+ * Interface to /dev/xen/xenbus_backend.
+ *
+ * Copyright (c) 2011 Bastian Blank <waldi@xxxxxxxxxx>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation; or, when distributed
+ * separately from the Linux kernel or incorporated into other
+ * software packages, subject to the following license:
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this source file (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy, modify,
+ * merge, publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#ifndef __LINUX_XEN_XENBUS_DEV_H__
+#define __LINUX_XEN_XENBUS_DEV_H__
+
+#include <linux/ioctl.h>
+
+#define IOCTL_XENBUS_BACKEND_EVTCHN                    \
+       _IOC(_IOC_NONE, 'B', 0, 0)
+
+#endif /* __LINUX_XEN_XENBUS_DEV_H__ */
diff -r 1c89f7d29fbb tools/xenstore/xenstored_linux.c
--- a/tools/xenstore/xenstored_linux.c  Thu Dec 08 16:50:28 2011 +0000
+++ b/tools/xenstore/xenstored_linux.c  Sat Dec 10 19:38:54 2011 +0100
@@ -11,17 +11,22 @@
  * License.
  */
 
+#include <errno.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include <stdlib.h>
+#include <sys/ioctl.h>
 #include <sys/mman.h>
 
+#include <xen/sys/xenbus_dev.h>
+
 #include "xenstored_core.h"
 
+#define XENSTORED_DEV "/dev/xen/xenbus_backend"
 #define XENSTORED_PROC_KVA  "/proc/xen/xsd_kva"
 #define XENSTORED_PROC_PORT "/proc/xen/xsd_port"
 
-evtchn_port_t xenbus_evtchn(void)
+static evtchn_port_t xenbus_proc_evtchn(void)
 {
        int fd;
        int rc;
@@ -48,12 +53,35 @@
        return port;
 }
 
+evtchn_port_t xenbus_evtchn(void)
+{
+       int fd;
+       long ret;
+
+       fd = open(XENSTORED_DEV, O_RDONLY);
+       if (fd == -1)
+       {
+               if (errno == ENOENT)
+                       return xenbus_proc_evtchn();
+               return -1;
+       }
+
+       ret = ioctl(fd, IOCTL_XENBUS_BACKEND_EVTCHN);
+       if (ret == -1)
+               return -1;
+
+       close(fd); 
+       return ret;
+}
+
 void *xenbus_map(void)
 {
        int fd;
        void *addr;
 
-       fd = open(XENSTORED_PROC_KVA, O_RDWR);
+       fd = open(XENSTORED_DEV, O_RDWR);
+       if (fd == -1 && errno == ENOENT)
+               fd = open(XENSTORED_PROC_KVA, O_RDWR);
        if (fd == -1)
                return NULL;
 
-- 
Killing is wrong.
                -- Losira, "That Which Survives", stardate unknown

_______________________________________________
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®.