|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/4] mini-os: Fixed shutdown thread
Thomas Leonard, le Mon 02 Jun 2014 18:49:54 +0100, a écrit :
> Before, it read "" and started a shutdown immediately. Now, it waits for
> a non-empty value and then actually shuts down.
>
> Signed-off-by: Thomas Leonard <talex5@xxxxxxxxx>
Acked-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx>
> ---
> extras/mini-os/kernel.c | 16 ++++++++++++----
> extras/mini-os/main.c | 2 +-
> 2 files changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/extras/mini-os/kernel.c b/extras/mini-os/kernel.c
> index ea409f4..386be8f 100644
> --- a/extras/mini-os/kernel.c
> +++ b/extras/mini-os/kernel.c
> @@ -69,6 +69,8 @@ void setup_xen_features(void)
> __attribute__((weak)) void app_shutdown(unsigned reason)
> {
> printk("Shutdown requested: %d\n", reason);
> + struct sched_shutdown sched_shutdown = { .reason = reason };
> + HYPERVISOR_sched_op(SCHEDOP_shutdown, &sched_shutdown);
> }
>
> static void shutdown_thread(void *p)
> @@ -76,12 +78,18 @@ static void shutdown_thread(void *p)
> const char *path = "control/shutdown";
> const char *token = path;
> xenbus_event_queue events = NULL;
> - char *shutdown, *err;
> + char *shutdown = NULL, *err;
> unsigned int shutdown_reason;
> xenbus_watch_path_token(XBT_NIL, path, token, &events);
> - while ((err = xenbus_read(XBT_NIL, path, &shutdown)) != NULL)
> + while ((err = xenbus_read(XBT_NIL, path, &shutdown)) != NULL ||
> !strcmp(shutdown, ""))
> {
> - free(err);
> + if (err)
> + free(err);
> + if (shutdown)
> + {
> + free(shutdown);
> + shutdown = NULL;
> + }
> xenbus_wait_for_watch(&events);
> }
> err = xenbus_unwatch_path_token(XBT_NIL, path, token);
> @@ -106,7 +114,7 @@ static void shutdown_thread(void *p)
> /* This should be overridden by the application we are linked against. */
> __attribute__((weak)) int app_main(start_info_t *si)
> {
> - printk("Dummy main: start_info=%p\n", si);
> + printk("kernel.c: dummy main: start_info=%p\n", si);
> return 0;
> }
>
> diff --git a/extras/mini-os/main.c b/extras/mini-os/main.c
> index 73eb6fb..aec0586 100644
> --- a/extras/mini-os/main.c
> +++ b/extras/mini-os/main.c
> @@ -185,7 +185,7 @@ void _exit(int ret)
>
> int app_main(start_info_t *si)
> {
> - printk("Dummy main: start_info=%p\n", si);
> + printk("main.c: dummy main: start_info=%p\n", si);
> main_thread = create_thread("main", call_main, si);
> return 0;
> }
> --
> 1.9.3
>
--
Samuel
<y> ça gaze ?
<l> prout
-+- #ens-mim - ouvrez les fenêtres ! -+-
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |