All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] stubdom: fix using minios frontends directly when libc is actived
@ 2008-06-17 10:31 Samuel Thibault
  0 siblings, 0 replies; only message in thread
From: Samuel Thibault @ 2008-06-17 10:31 UTC (permalink / raw)
  To: xen-devel

stubdom: fix using minios frontends directly when libc is actived

Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>

diff -r 4f7f01de4239 extras/mini-os/blkfront.c
--- a/extras/mini-os/blkfront.c	Tue Jun 17 10:18:15 2008 +0100
+++ b/extras/mini-os/blkfront.c	Tue Jun 17 11:32:05 2008 +0100
@@ -63,7 +63,8 @@
     struct blkfront_dev *dev = data;
     int fd = dev->fd;
 
-    files[fd].read = 1;
+    if (fd != -1)
+        files[fd].read = 1;
 #endif
     wake_up(&blkfront_queue);
 }
@@ -105,6 +106,9 @@
     dev = malloc(sizeof(*dev));
     memset(dev, 0, sizeof(*dev));
     dev->nodename = strdup(nodename);
+#ifdef HAVE_LIBC
+    dev->fd = -1;
+#endif
 
     snprintf(path, sizeof(path), "%s/backend-id", nodename);
     dev->dom = xenbus_read_integer(path); 
@@ -424,8 +428,10 @@
 
 moretodo:
 #ifdef HAVE_LIBC
-    files[dev->fd].read = 0;
-    mb(); /* Make sure to let the handler set read to 1 before we start looking at the ring */
+    if (dev->fd != -1) {
+        files[dev->fd].read = 0;
+        mb(); /* Make sure to let the handler set read to 1 before we start looking at the ring */
+    }
 #endif
 
     rp = dev->ring.sring->rsp_prod;
diff -r 4f7f01de4239 extras/mini-os/fbfront.c
--- a/extras/mini-os/fbfront.c	Tue Jun 17 10:18:15 2008 +0100
+++ b/extras/mini-os/fbfront.c	Tue Jun 17 11:32:05 2008 +0100
@@ -44,7 +44,8 @@
     struct kbdfront_dev *dev = data;
     int fd = dev->fd;
 
-    files[fd].read = 1;
+    if (fd != -1)
+        files[fd].read = 1;
 #endif
     wake_up(&kbdfront_queue);
 }
@@ -83,6 +84,9 @@
 
     dev = malloc(sizeof(*dev));
     dev->nodename = strdup(nodename);
+#ifdef HAVE_LIBC
+    dev->fd = -1;
+#endif
 
     snprintf(path, sizeof(path), "%s/backend-id", nodename);
     dev->dom = xenbus_read_integer(path); 
@@ -179,8 +183,10 @@
     int i;
 
 #ifdef HAVE_LIBC
-    files[dev->fd].read = 0;
-    mb(); /* Make sure to let the handler set read to 1 before we start looking at the ring */
+    if (dev->fd != -1) {
+        files[dev->fd].read = 0;
+        mb(); /* Make sure to let the handler set read to 1 before we start looking at the ring */
+    }
 #endif
 
     prod = page->in_prod;
@@ -198,7 +204,7 @@
     notify_remote_via_evtchn(dev->evtchn);
 
 #ifdef HAVE_LIBC
-    if (cons != prod)
+    if (cons != prod && dev->fd != -1)
         /* still some events to read */
         files[dev->fd].read = 1;
 #endif
@@ -290,7 +296,8 @@
     struct fbfront_dev *dev = data;
     int fd = dev->fd;
 
-    files[fd].read = 1;
+    if (fd != -1)
+        files[fd].read = 1;
 #endif
     wake_up(&fbfront_queue);
 }
@@ -316,8 +323,10 @@
     int i;
 
 #ifdef HAVE_LIBC
-    files[dev->fd].read = 0;
-    mb(); /* Make sure to let the handler set read to 1 before we start looking at the ring */
+    if (dev->fd != -1) {
+        files[dev->fd].read = 0;
+        mb(); /* Make sure to let the handler set read to 1 before we start looking at the ring */
+    }
 #endif
 
     prod = page->in_prod;
@@ -335,7 +344,7 @@
     notify_remote_via_evtchn(dev->evtchn);
 
 #ifdef HAVE_LIBC
-    if (cons != prod)
+    if (cons != prod && dev->fd != -1)
         /* still some events to read */
         files[dev->fd].read = 1;
 #endif
@@ -363,6 +372,9 @@
 
     dev = malloc(sizeof(*dev));
     dev->nodename = strdup(nodename);
+#ifdef HAVE_LIBC
+    dev->fd = -1;
+#endif
 
     snprintf(path, sizeof(path), "%s/backend-id", nodename);
     dev->dom = xenbus_read_integer(path); 
diff -r 4f7f01de4239 extras/mini-os/netfront.c
--- a/extras/mini-os/netfront.c	Tue Jun 17 10:18:15 2008 +0100
+++ b/extras/mini-os/netfront.c	Tue Jun 17 11:32:05 2008 +0100
@@ -259,7 +259,8 @@
     network_tx_buf_gc(dev);
     local_irq_restore(flags);
 
-    files[fd].read = 1;
+    if (fd != -1)
+        files[fd].read = 1;
     wake_up(&netfront_queue);
 }
 #endif
@@ -323,6 +324,9 @@
     dev = malloc(sizeof(*dev));
     memset(dev, 0, sizeof(*dev));
     dev->nodename = strdup(nodename);
+#ifdef HAVE_LIBC
+    dev->fd = -1;
+#endif
 
     printk("net TX ring size %d\n", NET_TX_RING_SIZE);
     printk("net RX ring size %d\n", NET_RX_RING_SIZE);
@@ -610,7 +614,7 @@
 
     local_irq_save(flags);
     network_rx(dev);
-    if (!dev->rlen)
+    if (!dev->rlen && fd != -1)
 	/* No data for us, make select stop returning */
 	files[fd].read = 0;
     /* Before re-enabling the interrupts, in case a packet just arrived in the

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-06-17 10:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-17 10:31 [PATCH] stubdom: fix using minios frontends directly when libc is actived Samuel Thibault

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.