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>