cvs commit: src/sys/alpha/alpha machdep.c trap.c
src/sys/alpha/linux linux_sysvec.c src/sys/alpha/osf1
osf1_signal.c osf1_signal.h src/sys/amd64/amd64 machdep.c trap.c
src/sys/amd64/ia32 ia32_signal.c ia32_syscall.c ...
David Xu
davidxu at FreeBSD.org
Fri Oct 14 05:43:48 PDT 2005
davidxu 2005-10-14 12:43:47 UTC
FreeBSD src repository
Modified files:
sys/alpha/alpha machdep.c trap.c
sys/alpha/linux linux_sysvec.c
sys/alpha/osf1 osf1_signal.c osf1_signal.h
sys/amd64/amd64 machdep.c trap.c
sys/amd64/ia32 ia32_signal.c ia32_syscall.c
sys/amd64/linux32 linux32_sysvec.c
sys/arm/arm machdep.c trap.c undefined.c
sys/compat/ia32 ia32_signal.h
sys/compat/linux linux_misc.c
sys/compat/svr4 svr4_signal.h
sys/fs/procfs procfs_ctl.c
sys/i386/i386 machdep.c trap.c
sys/i386/linux linux_sysvec.c
sys/i386/svr4 svr4_machdep.c
sys/ia64/ia32 ia32_signal.c ia32_trap.c
sys/ia64/ia64 machdep.c trap.c
sys/kern init_sysent.c kern_exec.c kern_exit.c
kern_kse.c kern_sig.c kern_thr.c
kern_thread.c subr_trap.c syscalls.master
sys/pc98/pc98 machdep.c
sys/powerpc/powerpc machdep.c trap.c
sys/sparc64/sparc64 machdep.c trap.c
sys/sys proc.h signalvar.h sysent.h
Log:
1. Change prototype of trapsignal and sendsig to use ksiginfo_t *, most
changes in MD code are trivial, before this change, trapsignal and
sendsig use discrete parameters, now they uses member fields of
ksiginfo_t structure. For sendsig, this change allows us to pass
POSIX realtime signal value to user code.
2. Remove cpu_thread_siginfo, it is no longer needed because we now always
generate ksiginfo_t data and feed it to libpthread.
3. Add p_sigqueue to proc structure to hold shared signals which were
blocked by all threads in the proc.
4. Add td_sigqueue to thread structure to hold all signals delivered to
thread.
5. i386 and amd64 now return POSIX standard si_code, other arches will
be fixed.
6. In this sigqueue implementation, pending signal set is kept as before,
an extra siginfo list holds additional siginfo_t data for signals.
kernel code uses psignal() still behavior as before, it won't be failed
even under memory pressure, only exception is when deleting a signal,
we should call sigqueue_delete to remove signal from sigqueue but
not SIGDELSET. Current there is no kernel code will deliver a signal
with additional data, so kernel should be as stable as before,
a ksiginfo can carry more information, for example, allow signal to
be delivered but throw away siginfo data if memory is not enough.
SIGKILL and SIGSTOP have fast path in sigqueue_add, because they can
not be caught or masked.
The sigqueue() syscall allows user code to queue a signal to target
process, if resource is unavailable, EAGAIN will be returned as
specification said.
Just before thread exits, signal queue memory will be freed by
sigqueue_flush.
Current, all signals are allowed to be queued, not only realtime signals.
Earlier patch reviewed by: jhb, deischen
Tested on: i386, amd64
Revision Changes Path
1.236 +22 -34 src/sys/alpha/alpha/machdep.c
1.126 +7 -1 src/sys/alpha/alpha/trap.c
1.96 +1 -1 src/sys/alpha/linux/linux_sysvec.c
1.43 +6 -2 src/sys/alpha/osf1/osf1_signal.c
1.4 +1 -1 src/sys/alpha/osf1/osf1_signal.h
1.641 +15 -33 src/sys/amd64/amd64/machdep.c
1.295 +40 -8 src/sys/amd64/amd64/trap.c
1.12 +48 -14 src/sys/amd64/ia32/ia32_signal.c
1.9 +6 -1 src/sys/amd64/ia32/ia32_syscall.c
1.10 +27 -9 src/sys/amd64/linux32/linux32_sysvec.c
1.18 +7 -16 src/sys/arm/arm/machdep.c
1.18 +7 -3 src/sys/arm/arm/trap.c
1.9 +18 -3 src/sys/arm/arm/undefined.c
1.8 +3 -1 src/sys/compat/ia32/ia32_signal.h
1.171 +1 -1 src/sys/compat/linux/linux_misc.c
1.12 +3 -1 src/sys/compat/svr4/svr4_signal.h
1.54 +1 -1 src/sys/fs/procfs/procfs_ctl.c
1.618 +66 -62 src/sys/i386/i386/machdep.c
1.282 +41 -12 src/sys/i386/i386/trap.c
1.139 +26 -10 src/sys/i386/linux/linux_sysvec.c
1.36 +6 -3 src/sys/i386/svr4/svr4_machdep.c
1.10 +2 -2 src/sys/ia64/ia32/ia32_signal.c
1.6 +12 -2 src/sys/ia64/ia32/ia32_trap.c
1.203 +10 -21 src/sys/ia64/ia64/machdep.c
1.116 +5 -1 src/sys/ia64/ia64/trap.c
1.198 +1 -0 src/sys/kern/init_sysent.c
1.280 +1 -1 src/sys/kern/kern_exec.c
1.266 +2 -2 src/sys/kern/kern_exit.c
1.219 +9 -8 src/sys/kern/kern_kse.c
1.307 +502 -171 src/sys/kern/kern_sig.c
1.35 +2 -1 src/sys/kern/kern_thr.c
1.218 +7 -0 src/sys/kern/kern_thread.c
1.282 +5 -1 src/sys/kern/subr_trap.c
1.200 +1 -1 src/sys/kern/syscalls.master
1.366 +47 -17 src/sys/pc98/pc98/machdep.c
1.91 +7 -22 src/sys/powerpc/powerpc/machdep.c
1.56 +7 -1 src/sys/powerpc/powerpc/trap.c
1.126 +7 -23 src/sys/sparc64/sparc64/machdep.c
1.75 +7 -1 src/sys/sparc64/sparc64/trap.c
1.437 +7 -4 src/sys/sys/proc.h
1.70 +27 -3 src/sys/sys/signalvar.h
1.46 +3 -2 src/sys/sys/sysent.h
More information about the cvs-src
mailing list