freebsd-nq/sys/fs
John Baldwin 91d5354a2c Locking for the per-process resource limits structure.
- struct plimit includes a mutex to protect a reference count.  The plimit
  structure is treated similarly to struct ucred in that is is always copy
  on write, so having a reference to a structure is sufficient to read from
  it without needing a further lock.
- The proc lock protects the p_limit pointer and must be held while reading
  limits from a process to keep the limit structure from changing out from
  under you while reading from it.
- Various global limits that are ints are not protected by a lock since
  int writes are atomic on all the archs we support and thus a lock
  wouldn't buy us anything.
- All accesses to individual resource limits from a process are abstracted
  behind a simple lim_rlimit(), lim_max(), and lim_cur() API that return
  either an rlimit, or the current or max individual limit of the specified
  resource from a process.
- dosetrlimit() was renamed to kern_setrlimit() to match existing style of
  other similar syscall helper functions.
- The alpha OSF/1 compat layer no longer calls getrlimit() and setrlimit()
  (it didn't used the stackgap when it should have) but uses lim_rlimit()
  and kern_setrlimit() instead.
- The svr4 compat no longer uses the stackgap for resource limits calls,
  but uses lim_rlimit() and kern_setrlimit() instead.
- The ibcs2 compat no longer uses the stackgap for resource limits.  It
  also no longer uses the stackgap for accessing sysctl's for the
  ibcs2_sysconf() syscall but uses kernel_sysctl() instead.  As a result,
  ibcs2_sysconf() no longer needs Giant.
- The p_rlimit macro no longer exists.

Submitted by:	mtm (mostly, I only did a few cleanups and catchups)
Tested on:	i386
Compiled on:	alpha, amd64
2004-02-04 21:52:57 +00:00
..
cd9660 Spell magic '16' number as IO_SEQSHIFT. 2004-01-19 20:03:43 +00:00
coda - Implement selwakeuppri() which allows raising the priority of a 2003-11-09 09:17:26 +00:00
deadfs Finish cleanup of vprint() which was begun with changing v_tag to a string. 2003-03-03 19:15:40 +00:00
devfs Fix style(9) of my previous commit. 2004-01-21 18:03:54 +00:00
fdescfs Locking for the per-process resource limits structure. 2004-02-04 21:52:57 +00:00
fifofs Use "fip->fi_readers == 0 && fip->fi_writers == 0" as the condition for 2003-11-16 01:11:11 +00:00
hpfs DuH! 2003-10-18 14:10:28 +00:00
msdosfs Locking for the per-process resource limits structure. 2004-02-04 21:52:57 +00:00
ntfs Avoid sign extension when casting signed characters to unsigned wide 2003-12-16 01:52:54 +00:00
nullfs Don't try to unlock the directory vnode in null_lookup() if the lock is 2004-01-11 23:44:32 +00:00
nwfs Locking for the per-process resource limits structure. 2004-02-04 21:52:57 +00:00
portalfs Initialize struct vfsops C99-sparsely. 2003-06-12 20:48:38 +00:00
procfs Locking for the per-process resource limits structure. 2004-02-04 21:52:57 +00:00
pseudofs Constify, and add an API function to find a named node in a directory. 2003-12-07 17:41:19 +00:00
smbfs Locking for the per-process resource limits structure. 2004-02-04 21:52:57 +00:00
specfs Initialize b_iooffset correctly. 2003-11-13 09:58:09 +00:00
udf Re-arrange and consolidate some random debugging stuff 2003-12-07 05:04:49 +00:00
umapfs Initialize struct vfsops C99-sparsely. 2003-06-12 20:48:38 +00:00
unionfs Do not allow operations which cause known file-system corruption. 2004-01-16 22:55:25 +00:00