Messages in this thread | | | Date | Thu, 25 Aug 2011 17:37:32 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH 0/2] Send a SIGCHLD to the init's pid namespace parent when reboot |
| |
On 08/24, Bruno Prémont wrote: > > On Tue, 23 August 2011 Oleg Nesterov <oleg@redhat.com> wrote: > > > > Just in case... instead of WIFSIGNALED/WTERMSIG we can also report > > the exit code in the upper bits. I mean, > > > > switch (reboot_cmd) { > > case LINUX_REBOOT_CMD_RESTART: > > code = 1 << 16; > > break; > > case LINUX_REBOOT_CMD_HALT: > > code = 2 << 16; > > break; > > } > > That looks nice and simple!
Great. To me, WIFSIGNALED() looks better, but this is subjective and in any case this is up to you.
> > this can't be confused with the normal exit(code), just the parent > > should be careful, I am not sure this can't confuse WIFEXITED/WEXITSTATUS > > user-space macroses. > > For recent glibc (2.12.2): > sys/wait.h and stdlib.h: > # define WIFEXITED(status) __WIFEXITED (__WAIT_INT (status)) > # define WEXITSTATUS(status) __WEXITSTATUS (__WAIT_INT (status)) > bits/waitstatus.h: > #define __WIFEXITED(status) (__WTERMSIG(status) == 0) > #define __WTERMSIG(status) ((status) & 0x7f) > #define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
... and note that __WEXITSTATUS() does "& 0xff00", it uses the lower 16 bits.
So the parent should read status "by hand". Not a problem, I think. Say, a traced task reports the additional info this way.
Oleg.
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |