WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Add @introduceDomain event-watch and replace consoled wa

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Add @introduceDomain event-watch and replace consoled watch on /console.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 05 Sep 2005 19:54:24 +0000
Delivery-date: Mon, 05 Sep 2005 19:53:05 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User cl349@xxxxxxxxxxxxxxxxxxxx
# Node ID 22599cd6aae053fc196ba630fc9d0a253e03b90b
# Parent  7f941f9c237bcb587731fdd61fc7b45790152513
Add @introduceDomain event-watch and replace consoled watch on /console.
Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>

diff -r 7f941f9c237b -r 22599cd6aae0 tools/console/daemon/io.c
--- a/tools/console/daemon/io.c Mon Sep  5 18:55:08 2005
+++ b/tools/console/daemon/io.c Mon Sep  5 19:43:04 2005
@@ -212,12 +212,10 @@
 
 static int domain_create_ring(struct domain *dom)
 {
-       char *dompath, *path;
+       char *dompath;
        int err;
 
-       asprintf(&path, "/console/%d/domain", dom->domid);
-       dompath = xs_read(xs, path, NULL);
-       free(path);
+       dompath = xs_get_domain_path(xs, dom->domid);
        if (!dompath)
                return ENOENT;
 
@@ -452,6 +450,7 @@
                if (dom && (dom->evtchn_fd == -1 || dom->page == NULL))
                        domain_create_ring(dom);
        }
+       enum_domains();
 
        xs_acknowledge_watch(xs, vec[1]);
        free(vec);
diff -r 7f941f9c237b -r 22599cd6aae0 tools/console/daemon/utils.c
--- a/tools/console/daemon/utils.c      Mon Sep  5 18:55:08 2005
+++ b/tools/console/daemon/utils.c      Mon Sep  5 19:43:04 2005
@@ -233,8 +233,8 @@
                goto out_close_data;
        }
 
-       if (!xs_watch(xs, "/console", "console")) {
-               dolog(LOG_ERR, "xenstore watch on /console fails.");
+       if (!xs_watch(xs, "@introduceDomain", "console")) {
+               dolog(LOG_ERR, "xenstore watch on @introduceDomain fails.");
                goto out_close_data;
        }
 
diff -r 7f941f9c237b -r 22599cd6aae0 tools/xenstore/xenstored_core.c
--- a/tools/xenstore/xenstored_core.c   Mon Sep  5 18:55:08 2005
+++ b/tools/xenstore/xenstored_core.c   Mon Sep  5 19:43:04 2005
@@ -826,6 +826,15 @@
         * which case we return EACCES even if it's ENOENT or EIO. */
        errno = errno_from_parents(conn, node, errno);
        return false;
+}
+
+bool check_event_node(const char *node)
+{
+       if (!node || !strstarts(node, "@")) {
+               errno = EINVAL;
+               return false;
+       }
+       return true;
 }
 
 static void send_directory(struct connection *conn, const char *node)
diff -r 7f941f9c237b -r 22599cd6aae0 tools/xenstore/xenstored_core.h
--- a/tools/xenstore/xenstored_core.h   Mon Sep  5 18:55:08 2005
+++ b/tools/xenstore/xenstored_core.h   Mon Sep  5 19:43:04 2005
@@ -133,6 +133,9 @@
 bool check_node_perms(struct connection *conn, const char *node,
                      enum xs_perm_type perm);
 
+/* Check if node is an event node. */
+bool check_event_node(const char *node);
+
 /* Path to this node outside transaction. */
 char *node_dir_outside_transaction(const char *node);
 
diff -r 7f941f9c237b -r 22599cd6aae0 tools/xenstore/xenstored_domain.c
--- a/tools/xenstore/xenstored_domain.c Mon Sep  5 18:55:08 2005
+++ b/tools/xenstore/xenstored_domain.c Mon Sep  5 19:43:04 2005
@@ -33,6 +33,7 @@
 #include "talloc.h"
 #include "xenstored_core.h"
 #include "xenstored_domain.h"
+#include "xenstored_watch.h"
 #include "xenstored_test.h"
 
 static int *xc_handle;
@@ -308,6 +309,9 @@
 
        /* Now domain belongs to its connection. */
        talloc_steal(domain->conn, domain);
+
+       fire_watches(conn, "@introduceDomain", false);
+
        send_ack(conn, XS_INTRODUCE);
 }
 
diff -r 7f941f9c237b -r 22599cd6aae0 tools/xenstore/xenstored_watch.c
--- a/tools/xenstore/xenstored_watch.c  Mon Sep  5 18:55:08 2005
+++ b/tools/xenstore/xenstored_watch.c  Mon Sep  5 19:43:04 2005
@@ -103,7 +103,8 @@
        /* Check read permission: no permission, no watch event.
         * If it doesn't exist, we need permission to read parent.
         */
-       if (!check_node_perms(conn, node, XS_PERM_READ|XS_PERM_ENOENT_OK)) {
+       if (!check_node_perms(conn, node, XS_PERM_READ|XS_PERM_ENOENT_OK) &&
+           !check_event_node(node)) {
                fprintf(stderr, "No permission for %s\n", node);
                return;
        }
@@ -213,11 +214,16 @@
                return;
        }
 
-       relative = !strstarts(vec[0], "/");
-       vec[0] = canonicalize(conn, vec[0]);
-       if (!is_valid_nodename(vec[0])) {
-               send_error(conn, errno);
-               return;
+       if (strstarts(vec[0], "@")) {
+               relative = false;
+               /* check if valid event */
+       } else {
+               relative = !strstarts(vec[0], "/");
+               vec[0] = canonicalize(conn, vec[0]);
+               if (!is_valid_nodename(vec[0])) {
+                       send_error(conn, errno);
+                       return;
+               }
        }
 
        watch = talloc(conn, struct watch);

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Add @introduceDomain event-watch and replace consoled watch on /console., Xen patchbot -unstable <=