git: kernel - Major signal path adjustments to fix races, tsleep race fixes, +more
Matthew Dillon
dillon at crater.dragonflybsd.org
Tue Nov 15 15:26:32 PST 2011
commit 4643740aa6f3eac7d3dfab05967ec55b5d8ba984
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Tue Nov 15 15:23:41 2011 -0800
kernel - Major signal path adjustments to fix races, tsleep race fixes, +more
* Refactor the signal code to properly hold the lp->lwp_token. In
particular the ksignal() and lwp_signotify() paths.
* The tsleep() path must also hold lp->lwp_token to properly handle
lp->lwp_stat states and interlocks.
* Refactor the timeout code in tsleep() to ensure that endtsleep() is only
called from the proper context, and fix races between endtsleep() and
lwkt_switch().
* Rename proc->p_flag to proc->p_flags
* Rename lwp->lwp_flag to lwp->lwp_flags
* Add lwp->lwp_mpflags and move flags which require atomic ops (are adjusted
when not the current thread) to the new field.
* Add td->td_mpflags and move flags which require atomic ops (are adjusted
when not the current thread) to the new field.
* Add some freeze testing code to the x86-64 trap code (default disabled).
Summary of changes:
lib/libkvm/kvm_proc.c | 4 +-
sys/ddb/db_ps.c | 6 +-
sys/dev/raid/vinum/.gdbinit.kernel | 12 +-
sys/dev/raid/vinum/vinumdaemon.c | 2 +-
sys/emulation/43bsd/43bsd_signal.c | 2 +-
.../linux/i386/linprocfs/linprocfs_vnops.c | 2 +-
sys/emulation/linux/i386/linux_ptrace.c | 6 +-
sys/emulation/linux/i386/linux_sysvec.c | 6 +-
sys/emulation/linux/linux_file.c | 2 +-
sys/emulation/ndis/ntoskrnl_var.h | 2 +-
sys/kern/init_main.c | 4 +-
sys/kern/kern_acct.c | 2 +-
sys/kern/kern_checkpoint.c | 2 +-
sys/kern/kern_clock.c | 14 +-
sys/kern/kern_descrip.c | 16 +-
sys/kern/kern_exec.c | 18 +-
sys/kern/kern_exit.c | 40 ++--
sys/kern/kern_fork.c | 18 +-
sys/kern/kern_intr.c | 4 +-
sys/kern/kern_jail.c | 2 +-
sys/kern/kern_kinfo.c | 8 +-
sys/kern/kern_kthread.c | 15 +-
sys/kern/kern_ktrace.c | 2 +-
sys/kern/kern_proc.c | 4 +-
sys/kern/kern_prot.c | 6 +-
sys/kern/kern_resource.c | 5 +-
sys/kern/kern_sig.c | 230 +++++++++-----------
sys/kern/kern_synch.c | 179 ++++++---------
sys/kern/kern_threads.c | 4 +-
sys/kern/kern_time.c | 4 +-
sys/kern/kern_timeout.c | 2 +-
sys/kern/kern_upcall.c | 8 +-
sys/kern/lwkt_thread.c | 18 +-
sys/kern/subr_prf.c | 5 +-
sys/kern/subr_prof.c | 2 +-
sys/kern/subr_taskqueue.c | 4 +-
sys/kern/sys_generic.c | 2 +-
sys/kern/sys_process.c | 19 +-
sys/kern/tty.c | 16 +-
sys/kern/tty_pty.c | 3 +-
sys/kern/tty_tty.c | 5 +-
sys/kern/usched_bsd4.c | 35 ++--
sys/kern/usched_dummy.c | 16 +-
sys/kern/vfs_journal.c | 4 +-
sys/net/if.c | 2 +-
sys/net/netisr.c | 2 +-
sys/netproto/smb/smb_subr.c | 2 +-
sys/platform/pc32/i386/db_trace.c | 2 +-
sys/platform/pc32/i386/machdep.c | 2 +-
sys/platform/pc32/i386/trap.c | 40 ++--
sys/platform/pc64/x86_64/machdep.c | 2 +-
sys/platform/pc64/x86_64/trap.c | 62 ++++--
sys/platform/vkernel/i386/cpu_regs.c | 2 +-
sys/platform/vkernel/i386/trap.c | 40 ++--
sys/platform/vkernel64/x86_64/cpu_regs.c | 2 +-
sys/platform/vkernel64/x86_64/trap.c | 40 ++--
sys/sys/proc.h | 91 ++++----
sys/sys/signal2.h | 2 +-
sys/sys/thread.h | 39 ++--
sys/sys/tty.h | 2 +-
sys/vfs/procfs/procfs.h | 2 +-
sys/vfs/procfs/procfs_ctl.c | 24 +-
sys/vfs/procfs/procfs_dbregs.c | 4 +-
sys/vfs/procfs/procfs_fpregs.c | 4 +-
sys/vfs/procfs/procfs_map.c | 2 +-
sys/vfs/procfs/procfs_mem.c | 4 +-
sys/vfs/procfs/procfs_regs.c | 4 +-
sys/vfs/procfs/procfs_status.c | 7 +-
sys/vfs/procfs/procfs_type.c | 2 +-
sys/vfs/procfs/procfs_vnops.c | 8 +-
sys/vm/vm_fault.c | 11 +-
sys/vm/vm_glue.c | 10 +-
sys/vm/vm_meter.c | 10 +-
sys/vm/vm_pageout.c | 6 +-
74 files changed, 586 insertions(+), 604 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4643740aa6f3eac7d3dfab05967ec55b5d8ba984
--
DragonFly BSD source repository
More information about the Commits
mailing list