diff options
| author | njoly <njoly@NetBSD.org> | 2009-05-29 14:19:12 +0000 |
|---|---|---|
| committer | njoly <njoly@NetBSD.org> | 2009-05-29 14:19:12 +0000 |
| commit | d22e6f64ab506ef4ba2c366aca4e71ba2f666207 (patch) | |
| tree | 001b92ea46346e2f01801daa015b32e38001d563 /sys/compat/linux/common/linux_signal.c | |
| parent | 4c494f7678a94d301a0b4643623bcfe63b8f2cbb (diff) | |
Add native to linux siginfo si_status translation, used on i386 and
amd64.
Diffstat (limited to 'sys/compat/linux/common/linux_signal.c')
| -rw-r--r-- | sys/compat/linux/common/linux_signal.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/sys/compat/linux/common/linux_signal.c b/sys/compat/linux/common/linux_signal.c index 197f85556a8..22a9d58c7d4 100644 --- a/sys/compat/linux/common/linux_signal.c +++ b/sys/compat/linux/common/linux_signal.c @@ -1,4 +1,4 @@ -/* $NetBSD: linux_signal.c,v 1.67 2009/02/18 14:43:22 njoly Exp $ */ +/* $NetBSD: linux_signal.c,v 1.68 2009/05/29 14:19:13 njoly Exp $ */ /*- * Copyright (c) 1995, 1998 The NetBSD Foundation, Inc. @@ -48,7 +48,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_signal.c,v 1.67 2009/02/18 14:43:22 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_signal.c,v 1.68 2009/05/29 14:19:13 njoly Exp $"); #define COMPAT_LINUX 1 @@ -63,6 +63,7 @@ __KERNEL_RCSID(0, "$NetBSD: linux_signal.c,v 1.67 2009/02/18 14:43:22 njoly Exp #include <sys/signal.h> #include <sys/signalvar.h> #include <sys/malloc.h> +#include <sys/wait.h> #include <sys/syscallargs.h> @@ -686,3 +687,27 @@ native_to_linux_si_code(int code) return code; } + +int +native_to_linux_si_status(int code, int status) +{ + int sts; + + switch (code) { + case CLD_CONTINUED: + sts = LINUX_SIGCONT; + break; + case CLD_EXITED: + sts = WEXITSTATUS(status); + break; + case CLD_STOPPED: + case CLD_TRAPPED: + case CLD_DUMPED: + case CLD_KILLED: + default: + sts = native_to_linux_signo[WTERMSIG(status)]; + break; + } + + return sts; +} |
