cvs commit: src/sys/sys proc.h src/sys/kern kern_exec.c kern_thread.c

Julian Elischer julian at FreeBSD.org
Fri Oct 8 21:33:02 PDT 2004


julian      2004-10-09 04:33:02 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_5)
    sys/sys              proc.h 
    sys/kern             kern_exec.c kern_thread.c 
  Log:
  MFC:
   1.254     +46 -12    src/sys/kern/kern_exec.c
   1.203     +60 -23    src/sys/kern/kern_thread.c
   1.409     +5 -3      src/sys/sys/proc.h
  
   In original kern_execve() code, at the start of the function, it forces
   all other threads to suicide, problem is execve() could be failed, and
   a failed execve() would change threaded process to unthreaded, this side
   effect is unexpected.
   The new code introduces a new single threading mode SINGLE_BOUNDARY, in
   the mode, all threads should suspend themself at user boundary except
   the singler. we can not use SINGLE_NO_EXIT because we want to start from
   a clean state if execve() is successful, suspending other threads at unknown
   point and later resuming them from there and forcing them to exit at user
   boundary may cause the process to start from a dirty state. If execve() is
   successful, current thread upgrades to SINGLE_EXIT mode and forces other
   threads to suicide at user boundary, otherwise, other threads will be resumed
   and their interrupted syscall will be restarted.
  
  Submitted by:   davidxu
  Approved by:    re (scottl)
  
  Revision    Changes    Path
  1.249.2.2   +46 -13    src/sys/kern/kern_exec.c
  1.193.2.6   +61 -24    src/sys/kern/kern_thread.c
  1.392.2.10  +5 -3      src/sys/sys/proc.h


More information about the cvs-all mailing list