Date: Tue, 22 Apr 2003 13:00:26 -0700 (PDT) From: John Baldwin <jhb@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/fs/procfs procfs_ctl.c src/sys/sys proc.h src/sys/vm vm_glue.c Message-ID: <200304222000.h3MK0Q6l040269@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
jhb 2003/04/22 13:00:26 PDT
FreeBSD src repository
Modified files:
sys/fs/procfs procfs_ctl.c
sys/sys proc.h
sys/vm vm_glue.c
Log:
- Always call faultin() in _PHOLD() if PS_INMEM is clear. This closes a
race where a thread could assume that a process was swapped in by
PHOLD() when it actually wasn't fully swapped in yet.
- In faultin(), always msleep() if PS_SWAPPINGIN is set instead of doing
this check after bumping p_lock in the PS_INMEM == 0 case. Also,
sched_lock is only needed for setting and clearning swapping PS_*
flags and the swap thread inhibitor.
- Don't set and clear the thread swap inhibitor in the same loops as the
pmap_swapin/out_thread() since we have to do it under sched_lock.
Instead, mimic the treatment of the PS_INMEM flag and use separate loops
to set the inhibitors when clearing PS_INMEM and clear the inhibitors
when setting PS_INMEM.
- swapout() now returns with the proc lock held as it holds the lock
while adjusting the swapping-related PS_* flags so that the proc lock
can be used to test those flags.
- Only use the proc lock to check the swapping-related PS_* flags in
several places.
- faultin() no longer requires sched_lock to be held by callers.
- Rename PS_SWAPPING to PS_SWAPPINGOUT to be less ambiguous now that we
have PS_SWAPPINGIN.
Revision Changes Path
1.50 +0 -2 src/sys/fs/procfs/procfs_ctl.c
1.320 +4 -6 src/sys/sys/proc.h
1.166 +36 -42 src/sys/vm/vm_glue.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304222000.h3MK0Q6l040269>
