cvs commit: src/sys/sys proc.h signalvar.h src/sys/kern kern_exit.c kern_proc.c kern_sig.c kern_thread.c

David Xu davidxu at FreeBSD.org
Tue Nov 8 01:09:27 PST 2005


davidxu     2005-11-08 09:09:26 UTC

  FreeBSD src repository

  Modified files:
    sys/sys              proc.h signalvar.h 
    sys/kern             kern_exit.c kern_proc.c kern_sig.c 
                         kern_thread.c 
  Log:
  Add support for queueing SIGCHLD same as other UNIX systems did.
  
  For each child process whose status has been changed, a SIGCHLD instance
  is queued, if the signal is stilling pending, and process changed status
  several times, signal information is updated to reflect latest process
  status. If wait() returns because the status of a child process is
  available, pending SIGCHLD signal associated with the child process is
  discarded. Any other pending SIGCHLD signals remain pending.
  
  The signal information is allocated at the same time when proc structure
  is allocated, if process signal queue is fully filled or there is a memory
  shortage, it can still send the signal to process.
  
  There is a booting time tunable kern.sigqueue.queue_sigchild which
  can control the behavior, setting it to zero disables the SIGCHLD queueing
  feature, the tunable will be removed if the function is proved that it is
  stable enough.
  
  Tested on: i386 (SMP and UP)
  
  Revision  Changes    Path
  1.271     +25 -3     src/sys/kern/kern_exit.c
  1.234     +4 -0      src/sys/kern/kern_proc.c
  1.312     +87 -10    src/sys/kern/kern_sig.c
  1.222     +15 -0     src/sys/kern/kern_thread.c
  1.442     +4 -0      src/sys/sys/proc.h
  1.74      +1 -1      src/sys/sys/signalvar.h


More information about the cvs-all mailing list