* [PATCH 18/24] [xen-unstable.hg] flag in minios kernel to say whether xenbus is initialised - it might not be if this is a xenstore stubdom
@ 2009-03-23 15:21 Alex Zeffertt
0 siblings, 0 replies; only message in thread
From: Alex Zeffertt @ 2009-03-23 15:21 UTC (permalink / raw)
To: xen-devel@lists.xensource.com
[-- Attachment #1: Type: text/plain, Size: 2 bytes --]
[-- Attachment #2: minios_xenbus_ready_flag --]
[-- Type: text/plain, Size: 2105 bytes --]
Aborts minios xenbus initialization if there is no xenstored mfn or port
available. Adds a is_xenbus_ready function for other modules to query
whether xenbus is available.
TODO: Do we just want a global integer instead of a function?
TODO: Should fini_xenbus take it back to not ready?
TODO: Should the other non-static functions fail if !ready?
Signed-off-by: Diego Ongaro <diego.ongaro@citrix.com>
Signed-off-by: Alex Zeffertt <alex.zeffertt@eu.citrix.com>
---
diff -r e53f83b91052 extras/mini-os/include/xenbus.h
--- a/extras/mini-os/include/xenbus.h Fri Aug 01 16:50:48 2008 +0100
+++ b/extras/mini-os/include/xenbus.h Fri Aug 01 16:50:49 2008 +0100
@@ -6,6 +6,8 @@
/* Initialize the XenBus system. */
void init_xenbus(void);
+
+int is_xenbus_ready(void);
/* Read the value associated with a path. Returns a malloc'd error
string on failure and sets *value to NULL. On success, *value is
diff -r e53f83b91052 extras/mini-os/xenbus/xenbus.c
--- a/extras/mini-os/xenbus/xenbus.c Fri Aug 01 16:50:48 2008 +0100
+++ b/extras/mini-os/xenbus/xenbus.c Fri Aug 01 16:50:49 2008 +0100
@@ -41,6 +41,7 @@
#define DEBUG(_f, _a...) ((void)0)
#endif
+static int xenbus_ready;
static struct xenstore_domain_interface *xenstore_buf;
static DECLARE_WAIT_QUEUE_HEAD(xb_waitq);
DECLARE_WAIT_QUEUE_HEAD(xenbus_watch_queue);
@@ -254,12 +255,23 @@
return o_probe;
}
+int is_xenbus_ready(void)
+{
+ return xenbus_ready;
+}
+
/* Initialise xenbus. */
void init_xenbus(void)
{
int err;
printk("Initialising xenbus\n");
DEBUG("init_xenbus called.\n");
+
+ if (start_info.store_mfn == -1 || start_info.store_evtchn == -1) {
+ printk("No start_info store_mfn/store_evtchn, aborting init_xenbus\n");
+ return;
+ }
+
xenstore_buf = mfn_to_virt(start_info.store_mfn);
create_thread("xenstore", xenbus_thread_func, NULL);
DEBUG("buf at %p.\n", xenstore_buf);
@@ -268,6 +280,8 @@
NULL);
unmask_evtchn(start_info.store_evtchn);
DEBUG("xenbus on irq %d\n", err);
+
+ xenbus_ready = 1;
}
void fini_xenbus(void)
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-03-23 15:21 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-23 15:21 [PATCH 18/24] [xen-unstable.hg] flag in minios kernel to say whether xenbus is initialised - it might not be if this is a xenstore stubdom Alex Zeffertt
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.