On 08/24, Bruno Prémont wrote: > > On Tue, 23 August 2011 Oleg Nesterov <oleg@xxxxxxxxxx> 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. _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers