summaryrefslogtreecommitdiff
path: root/sys/compat/linux/common/linux_signal.c
diff options
context:
space:
mode:
authornjoly <njoly@NetBSD.org>2009-05-29 14:19:12 +0000
committernjoly <njoly@NetBSD.org>2009-05-29 14:19:12 +0000
commitd22e6f64ab506ef4ba2c366aca4e71ba2f666207 (patch)
tree001b92ea46346e2f01801daa015b32e38001d563 /sys/compat/linux/common/linux_signal.c
parent4c494f7678a94d301a0b4643623bcfe63b8f2cbb (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.c29
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;
+}