All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <aliguori@us.ibm.com>
To: xen-devel@lists.xensource.com
Cc: Steven Hand <steven@xensource.com>
Subject: Re: [Xen-changelog] Create /dev/xen/evtchn if it doesn't exist.
Date: Wed, 07 Sep 2005 16:06:46 -0500	[thread overview]
Message-ID: <431F5666.7070209@us.ibm.com> (raw)
In-Reply-To: <E1ED6aa-0006WS-5H@xenbits.xensource.com>

Another way to solve this problem is to just use "/dev/evtchn" as that 
is what will be created by udev.

In fact, what does everyone think about just deprecating /dev/xen/evtchn 
and just using /dev/evtchn everywhere?  I'll submit a patch if it's 
acceptable (including removing the places where we create /dev/xen/evtchn).

Regards,

Anthony Liguori

Xen patchbot -unstable wrote:

># HG changeset patch
># User shand@ubuntu.eng.hq.xensource.com
># Node ID b7c7cb88f0ba9c0473d926c3cf531f9e086c3d09
># Parent  7d0fb56b4a916cccc497d200e6a8329537ce740d
>Create /dev/xen/evtchn if it doesn't exist. 
>
>Signed-off-by: Steven Hand <steven@xensource.com>
>
>diff -r 7d0fb56b4a91 -r b7c7cb88f0ba tools/xenstore/xenstored_domain.c
>--- a/tools/xenstore/xenstored_domain.c	Wed Sep  7 19:01:31 2005
>+++ b/tools/xenstore/xenstored_domain.c	Wed Sep  7 20:30:00 2005
>@@ -433,33 +433,57 @@
> {
> }
> 
>+#define EVTCHN_DEV_NAME  "/dev/xen/evtchn"
>+#define EVTCHN_DEV_MAJOR 10
>+#define EVTCHN_DEV_MINOR 201
>+
> /* Returns the event channel handle. */
> int domain_init(void)
> {
>-	/* The size of the ringbuffer: half a page minus head structure. */
>-	ringbuf_datasize = getpagesize() / 2 - sizeof(struct ringbuf_head);
>-
>-	xc_handle = talloc(talloc_autofree_context(), int);
>-	if (!xc_handle)
>-		barf_perror("Failed to allocate domain handle");
>-	*xc_handle = xc_interface_open();
>-	if (*xc_handle < 0)
>-		barf_perror("Failed to open connection to hypervisor");
>-	talloc_set_destructor(xc_handle, close_xc_handle);
>-
>+    /* The size of the ringbuffer: half a page minus head structure. */
>+    ringbuf_datasize = getpagesize() / 2 - sizeof(struct ringbuf_head);
>+    
>+    xc_handle = talloc(talloc_autofree_context(), int);
>+    if (!xc_handle)
>+        barf_perror("Failed to allocate domain handle");
>+
>+    *xc_handle = xc_interface_open();
>+    if (*xc_handle < 0)
>+        barf_perror("Failed to open connection to hypervisor (privcmd)");
>+
>+    talloc_set_destructor(xc_handle, close_xc_handle);
>+    
> #ifdef TESTING
>-	eventchn_fd = fake_open_eventchn();
>+    eventchn_fd = fake_open_eventchn();
> #else
>-	eventchn_fd = open("/dev/xen/evtchn", O_RDWR);
>+    {
>+        struct stat st;
>+        
>+        /* Make sure any existing device file links to correct device. */
>+        if ( (lstat(EVTCHN_DEV_NAME, &st) != 0) || !S_ISCHR(st.st_mode) ||
>+             (st.st_rdev != makedev(EVTCHN_DEV_MAJOR, EVTCHN_DEV_MINOR)) )
>+            (void)unlink(EVTCHN_DEV_NAME);
>+        
>+      reopen:
>+        eventchn_fd = open(EVTCHN_DEV_NAME, O_NONBLOCK|O_RDWR);
>+        if (eventchn_fd == -1) {
>+            if ((errno == ENOENT) && (
>+                    (mkdir("/dev/xen", 0755) == 0) || (errno == EEXIST)) 
>+                && (mknod(EVTCHN_DEV_NAME, S_IFCHR|0600,
>+                          makedev(EVTCHN_DEV_MAJOR,EVTCHN_DEV_MINOR)) == 0))
>+                goto reopen;
>+            return -errno;
>+        }
>+    }
> #endif
>-	if (eventchn_fd < 0)
>-		barf_perror("Failed to open connection to hypervisor");
>-
>-	if (xc_evtchn_bind_virq(*xc_handle, VIRQ_DOM_EXC, &virq_port))
>-		barf_perror("Failed to bind to domain exception virq");
>-
>-	if (ioctl(eventchn_fd, EVENTCHN_BIND, virq_port) != 0)
>-		barf_perror("Failed to bind to domain exception virq port");
>-
>-	return eventchn_fd;
>-}
>+    if (eventchn_fd < 0)
>+        barf_perror("Failed to open connection to hypervisor (evtchn)");
>+    
>+    if (xc_evtchn_bind_virq(*xc_handle, VIRQ_DOM_EXC, &virq_port))
>+        barf_perror("Failed to bind to domain exception virq");
>+    
>+    if (ioctl(eventchn_fd, EVENTCHN_BIND, virq_port) != 0)
>+        barf_perror("Failed to bind to domain exception virq port");
>+    
>+    return eventchn_fd;
>+}
>
>_______________________________________________
>Xen-changelog mailing list
>Xen-changelog@lists.xensource.com
>http://lists.xensource.com/xen-changelog
>
>  
>

       reply	other threads:[~2005-09-07 21:06 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <E1ED6aa-0006WS-5H@xenbits.xensource.com>
2005-09-07 21:06 ` Anthony Liguori [this message]
2005-09-07 22:31   ` Re: [Xen-changelog] Create /dev/xen/evtchn if it doesn't exist Jeremy Katz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=431F5666.7070209@us.ibm.com \
    --to=aliguori@us.ibm.com \
    --cc=steven@xensource.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.