summaryrefslogtreecommitdiffstats
path: root/sys/compat/linux/linux_signal.h
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2008-10-19 10:02:26 +0000
committerkib <kib@FreeBSD.org>2008-10-19 10:02:26 +0000
commit29ccf7d1668ab3c3e3e82c53dbf69d4c5a9be824 (patch)
treeb27837b90bdbe0e63b7ff72ce0c5c2b29bb7cbd5 /sys/compat/linux/linux_signal.h
parent40d90afbe6bf6ae24e4859c61cb929f3f0ccc441 (diff)
downloadFreeBSD-src-29ccf7d1668ab3c3e3e82c53dbf69d4c5a9be824.zip
FreeBSD-src-29ccf7d1668ab3c3e3e82c53dbf69d4c5a9be824.tar.gz
Correctly fill siginfo for the signals delivered by linux tkill/tgkill.
It is required for async cancellation to work. Fix PROC_LOCK leak in linux_tgkill when signal delivery attempt is made to not linux process. Do not call em_find(p, ...) with p unlocked. Move common code for linux_tkill() and linux_tgkill() into linux_do_tkill(). Change linux siginfo_t definition to match actual linux one. Extend uid fields to 4 bytes from 2. The extension does not change structure layout and is binary compatible with previous definition, because i386 is little endian, and each uid field has 2 byte padding after it. Reported by: Nicolas Joly <njoly pasteur fr> Submitted by: dchangin MFC after: 1 month
Diffstat (limited to 'sys/compat/linux/linux_signal.h')
-rw-r--r--sys/compat/linux/linux_signal.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/compat/linux/linux_signal.h b/sys/compat/linux/linux_signal.h
index 5f6d5bd..ba780e9 100644
--- a/sys/compat/linux/linux_signal.h
+++ b/sys/compat/linux/linux_signal.h
@@ -31,9 +31,12 @@
#ifndef _LINUX_SIGNAL_H_
#define _LINUX_SIGNAL_H_
+#define LINUX_SI_TKILL -6;
+
void linux_to_bsd_sigset(l_sigset_t *, sigset_t *);
void bsd_to_linux_sigset(sigset_t *, l_sigset_t *);
int linux_do_sigaction(struct thread *, int, l_sigaction_t *, l_sigaction_t *);
+void ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig);
#define LINUX_SIG_VALID(sig) ((sig) <= LINUX_NSIG && (sig) > 0)
OpenPOWER on IntegriCloud