]> xenbits.xensource.com Git - people/liuw/mini-os.git/commitdiff
mini-os: make init_pcifront fail early if there is no backend
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 31 Jul 2008 12:30:24 +0000 (13:30 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 31 Jul 2008 12:30:24 +0000 (13:30 +0100)
Else, we would leave entries in xenstore, which disturbs xend.

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

index a924a6e8d9c13598afdcdaabf8eaff98237a9c79..5b68d86b5686995be3582bae828dd37559db371e 100644 (file)
@@ -57,6 +57,7 @@ struct pcifront_dev *init_pcifront(char *_nodename)
     int retry=0;
     char* msg;
     char* nodename = _nodename ? _nodename : "device/pci/0";
+    int dom;
 
     struct pcifront_dev *dev;
 
@@ -64,12 +65,18 @@ struct pcifront_dev *init_pcifront(char *_nodename)
 
     printk("******************* PCIFRONT for %s **********\n\n\n", nodename);
 
+    snprintf(path, sizeof(path), "%s/backend-id", nodename);
+    dom = xenbus_read_integer(path); 
+    if (dom == -1) {
+        printk("no backend\n");
+        return NULL;
+    }
+
     dev = malloc(sizeof(*dev));
     memset(dev, 0, sizeof(*dev));
     dev->nodename = strdup(nodename);
+    dev->dom = dom;
 
-    snprintf(path, sizeof(path), "%s/backend-id", nodename);
-    dev->dom = xenbus_read_integer(path); 
     evtchn_alloc_unbound(dev->dom, pcifront_handler, dev, &dev->evtchn);
 
     dev->info = (struct xen_pci_sharedinfo*) alloc_page();