All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Thomas Leonard <talex5@gmail.com>, xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org, stefano.stabellini@eu.citrix.com
Subject: Re: [PATCH 1/4] mini-os: Fixed shutdown thread
Date: Tue, 3 Jun 2014 10:01:27 +0100	[thread overview]
Message-ID: <538D8EE7.4040806@citrix.com> (raw)
In-Reply-To: <1401731397-29842-2-git-send-email-talex5@gmail.com>

On 02/06/2014 18:49, Thomas Leonard wrote:
> 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@gmail.com>
> ---
>  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);

NULL is a perfectly valid parameter to free(). Please drop the if()

> +        if (shutdown)
> +        {
> +            free(shutdown);
> +            shutdown = NULL;
> +        }

Here as well.

~Andrew

>          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;
>  }

  parent reply	other threads:[~2014-06-03  9:01 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-02 17:49 [PATCH 0/4] mini-os: initial ARM support Thomas Leonard
2014-06-02 17:49 ` [PATCH 1/4] mini-os: Fixed shutdown thread Thomas Leonard
2014-06-03  0:51   ` Samuel Thibault
2014-06-03  9:01   ` Andrew Cooper [this message]
2014-06-02 17:49 ` [PATCH 2/4] mini-os: Tidied up code Thomas Leonard
2014-06-03  0:57   ` Samuel Thibault
2014-06-02 17:49 ` [PATCH 3/4] mini-os: Initial commit to port minios to ARM Thomas Leonard
2014-06-03  9:12   ` Julien Grall
2014-06-04 16:06     ` [PATCH 0/7] mini-os: Preparing for ARM support Thomas Leonard
2014-06-04 16:06       ` [PATCH 1/7] mini-os: Fixed shutdown thread Thomas Leonard
2014-06-04 16:06       ` [PATCH 2/7] mini-os: Tidied up code Thomas Leonard
2014-06-04 16:22         ` Andrew Cooper
2014-06-05 10:24           ` Anil Madhavapeddy
2014-06-04 16:06       ` [PATCH 3/7] mini-os: Moved events code under arch Thomas Leonard
2014-06-04 16:23         ` Julien Grall
2014-06-06 13:54           ` Ian Campbell
2014-06-06 13:57         ` Ian Campbell
2014-06-04 16:06       ` [PATCH 4/7] mini-os: Switched initial C entry point to arch_init Thomas Leonard
2014-06-06 14:05         ` Ian Campbell
2014-06-04 16:06       ` [PATCH 5/7] mini-os: Moved arch-specific xenbus code under arch Thomas Leonard
2014-06-05 14:00         ` Julien Grall
2014-06-06 14:07         ` Ian Campbell
2014-06-04 16:06       ` [PATCH 6/7] mini-os: Added rmb to xenbus code Thomas Leonard
2014-06-05 13:55         ` Julien Grall
2014-06-05 17:45           ` Thomas Leonard
2014-06-06  4:59             ` karim.allah.ahmed
2014-06-06 14:15               ` Ian Campbell
2014-06-06 15:10                 ` Samuel Thibault
2014-06-06 16:40                   ` Ian Campbell
2014-06-09 13:56                     ` Thomas Leonard
2014-06-09 14:04                       ` Thomas Leonard
2014-06-04 16:06       ` [PATCH 7/7] mini-os: Moved force_evtchn_callback to header Thomas Leonard
2014-06-06 14:17         ` Ian Campbell
2014-06-09 11:54           ` Thomas Leonard
2014-06-04 16:12       ` [PATCH 0/7] mini-os: Preparing for ARM support Andrew Cooper
2014-06-02 17:49 ` [PATCH 4/4] mini-os: Added FDT support on ARM Thomas Leonard
2014-06-06 13:51   ` Ian Campbell
2014-06-05 14:36 ` [PATCH 0/4] mini-os: initial ARM support Oleksandr Tyshchenko
2014-06-05 14:57   ` Samuel Thibault
2014-06-05 17:20     ` Oleksandr Tyshchenko
2014-06-05 17:31   ` Thomas Leonard
2014-06-05 18:07     ` Oleksandr Tyshchenko
2014-06-05 18:12       ` Thomas Leonard
2014-06-05 18:21         ` Oleksandr Tyshchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=538D8EE7.4040806@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=samuel.thibault@ens-lyon.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=talex5@gmail.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.