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 | |
| parent | 4c494f7678a94d301a0b4643623bcfe63b8f2cbb (diff) | |
Add native to linux siginfo si_status translation, used on i386 and
amd64.
Diffstat (limited to 'sys/compat/linux/common')
| -rw-r--r-- | sys/compat/linux/common/linux_signal.c | 29 | ||||
| -rw-r--r-- | sys/compat/linux/common/linux_signal.h | 3 |
2 files changed, 29 insertions, 3 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; +} diff --git a/sys/compat/linux/common/linux_signal.h b/sys/compat/linux/common/linux_signal.h index 31036b9b472..1c442252b3f 100644 --- a/sys/compat/linux/common/linux_signal.h +++ b/sys/compat/linux/common/linux_signal.h @@ -1,4 +1,4 @@ -/* $NetBSD: linux_signal.h,v 1.29 2008/10/19 09:44:31 njoly Exp $ */ +/* $NetBSD: linux_signal.h,v 1.30 2009/05/29 14:19:13 njoly Exp $ */ /*- * Copyright (c) 1995, 1998 The NetBSD Foundation, Inc. @@ -93,6 +93,7 @@ void native_to_linux_sigaltstack(struct linux_sigaltstack *, const struct sigaltstack *); int native_to_linux_si_code(int); +int native_to_linux_si_status(int, int); __END_DECLS #endif /* !_KERNEL */ |
