[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [PATCH v3 2/2] Save/Restore Support: Add fini_shutdown call to app exit flow.



On 27/03/18 17:54, Bruno Alvisio wrote:
> Instead of calling kernel_shutdown() in the exit flow, a call to 
> fini_shutdown()
> is added to the existing exit flow.
> 
> kernel_shutdown() is removed since it is not used in any part of mini-OS.

You didn't answer my question whether all stubdoms are still building.
There might be some external user of kernel_shutdown(). You should do
a test-build of Xen with your modified Mini-OS and check that the
following directories under stubdom/ are being created in your build:

mini-os-x86_32-grub
mini-os-x86_64-grub
mini-os-x86_64-ioemu
mini-os-x86_64-vtpm
mini-os-x86_64-vtpmmgr
mini-os-x86_64-xenstore

In case you can confirm those are building fine, you can add my:

Reviewed-by: Juergen Gross <jgross@xxxxxxxx>


Juergen

> 
> Signed-off-by: Bruno Alvisio <bruno.alvisio@xxxxxxxxx>
> ---
> Changed since v1:
> - Decided to leave original exit flow in main.c and add the call to 
> fini_shutdown
> there.
> - Removed kernel_shutdown function entirely.
> ---
>  include/shutdown.h |  3 +--
>  main.c             |  4 ++++
>  shutdown.c         | 51 +++++++++------------------------------------------
>  3 files changed, 14 insertions(+), 44 deletions(-)
> 
> diff --git a/include/shutdown.h b/include/shutdown.h
> index a5ec019..88993cb 100644
> --- a/include/shutdown.h
> +++ b/include/shutdown.h
> @@ -4,8 +4,7 @@
>  #include <mini-os/hypervisor.h>
>  
>  void init_shutdown(start_info_t *si);
> -
> -void kernel_shutdown(int reason) __attribute__((noreturn));
> +void fini_shutdown(void);
>  void kernel_suspend(void);
>  
>  #endif
> diff --git a/main.c b/main.c
> index 4e42f53..a93bc9d 100644
> --- a/main.c
> +++ b/main.c
> @@ -17,6 +17,7 @@
>  #include <unistd.h>
>  #include <xenbus.h>
>  #include <events.h>
> +#include <shutdown.h>
>  #include <mini-os/lib.h>
>  
>  extern int main(int argc, char *argv[], char *envp[]);
> @@ -177,6 +178,9 @@ void _exit(int ret)
>  #if defined(HAVE_LWIP) && defined(CONFIG_NETFRONT)
>      stop_networking();
>  #endif
> +#ifdef CONFIG_XENBUS
> +    fini_shutdown();
> +#endif
>      stop_kernel();
>      if (!ret) {
>       /* No problem, just shutdown.  */
> diff --git a/shutdown.c b/shutdown.c
> index 510f6e1..c7c92cb 100644
> --- a/shutdown.c
> +++ b/shutdown.c
> @@ -111,19 +111,6 @@ static void shutdown_thread(void *p)
>      }
>  }
>  
> -static void fini_shutdown(void)
> -{
> -    char *err;
> -
> -    end_shutdown_thread = 1;
> -    xenbus_release_wait_for_watch(&events);
> -    err = xenbus_unwatch_path_token(XBT_NIL, path, token);
> -    if (err) {
> -        free(err);
> -        do_exit();
> -    }
> -}
> -
>  void init_shutdown(start_info_t *si)
>  {
>      start_info_ptr = si;
> @@ -131,40 +118,20 @@ void init_shutdown(start_info_t *si)
>      end_shutdown_thread = 0;
>      create_thread("shutdown", shutdown_thread, NULL);
>  }
> -#endif
>  
> -void kernel_shutdown(int reason)
> +void fini_shutdown(void)
>  {
> -    char* reason_str = NULL;
> -
> -    switch(reason) {
> -        case SHUTDOWN_poweroff:
> -            reason_str = "poweroff";
> -            break;
> -        case SHUTDOWN_reboot:
> -            reason_str = "reboot";
> -            break;
> -        case SHUTDOWN_crash:
> -            reason_str = "crash";
> -            break;
> -        default:
> -            do_exit();
> -            break;
> -    }
> -
> -    printk("MiniOS will shutdown (reason = %s) ...\n", reason_str);
> -
> -#ifdef CONFIG_XENBUS
> -    fini_shutdown();
> -#endif
> -
> -    stop_kernel();
> +    char *err;
>  
> -    for ( ;; ) {
> -        struct sched_shutdown sched_shutdown = { .reason = reason };
> -        HYPERVISOR_sched_op(SCHEDOP_shutdown, &sched_shutdown);
> +    end_shutdown_thread = 1;
> +    xenbus_release_wait_for_watch(&events);
> +    err = xenbus_unwatch_path_token(XBT_NIL, path, token);
> +    if (err) {
> +        free(err);
> +        do_exit();
>      }
>  }
> +#endif
>  
>  void kernel_suspend(void)
>  {
> 


_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.