|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [RFC PATCH] Run the Mini-OS application in its own thread.
Some Xen developers have questioned why one would ever need to run a
Mini-OS application before thread scheduling is enabled. I can see no
reason to do it. If no one else can, I suggest each an application be
a thread function that is started in kernel.c.
The following patch to kernel.c sets up and runs the application in
its own thread.
Signed-of-by: John D. Ramsdell <ramsdell@xxxxxxxxx>
diff -ur oxen-unstable/extras/mini-os/kernel.c
xen-unstable/extras/mini-os/kernel.c
--- oxen-unstable/extras/mini-os/kernel.c 2006-06-02 01:03:40.000000000
-0400
+++ xen-unstable/extras/mini-os/kernel.c 2006-06-07 17:39:52.000000000
-0400
@@ -82,17 +82,6 @@
}
-void test_xenbus(void);
-
-/* Do initialisation from a thread once the scheduler's available */
-static void init_xs(void *ign)
-{
- init_xenbus();
-
- test_xenbus();
-}
-
-
u8 xen_features[XENFEAT_NR_SUBMAPS * 32];
void setup_xen_features(void)
@@ -111,11 +100,13 @@
}
}
+void test_xenbus(void);
+
/* This should be overridden by the application we are linked against. */
-__attribute__((weak)) int app_main(start_info_t *si)
+__attribute__((weak)) void app_main(void *si)
{
printk("Dummy main: start_info=%p\n", si);
- return 0;
+ test_xenbus();
}
/*
@@ -183,11 +174,11 @@
/* Init scheduler. */
init_sched();
- /* Init XenBus from a separate thread */
- create_thread("init_xs", init_xs, NULL);
+ /* Init XenBus */
+ init_xenbus();
- /* Call (possibly overridden) app_main() */
- app_main(&start_info);
+ /* Schedule the possibly overridden app_main() function */
+ create_thread("app_main", app_main, &start_info);
/* Everything initialised, start idle thread */
run_idle_thread();
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] [RFC PATCH] Run the Mini-OS application in its own thread.,
John D. Ramsdell <=
|
|
|
|
|