diff options
author | Seigo Tanimura <tanimura@FreeBSD.org> | 2002-02-23 11:12:57 +0000 |
---|---|---|
committer | Seigo Tanimura <tanimura@FreeBSD.org> | 2002-02-23 11:12:57 +0000 |
commit | f591779bb575703cbb6674d324afb4bd212b8cbb (patch) | |
tree | 2289c653c0f7aa23498f82b603c33107952652ec /sys/kern/init_main.c | |
parent | 4aaca8854285a47e7fd520d5a2797dbf03d05bec (diff) | |
download | src-f591779bb575703cbb6674d324afb4bd212b8cbb.tar.gz src-f591779bb575703cbb6674d324afb4bd212b8cbb.zip |
Lock struct pgrp, session and sigio.
New locks are:
- pgrpsess_lock which locks the whole pgrps and sessions,
- pg_mtx which protects the pgrp members, and
- s_mtx which protects the session members.
Please refer to sys/proc.h for the coverage of these locks.
Changes on the pgrp/session interface:
- pgfind() needs the pgrpsess_lock held.
- The caller of enterpgrp() is responsible to allocate a new pgrp and
session.
- Call enterthispgrp() in order to enter an existing pgrp.
- pgsignal() requires a pgrp lock held.
Reviewed by: jhb, alfred
Tested on: cvsup.jp.FreeBSD.org
(which is a quad-CPU machine running -current)
Notes
Notes:
svn path=/head/; revision=91140
Diffstat (limited to 'sys/kern/init_main.c')
-rw-r--r-- | sys/kern/init_main.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index 6b698e470413..6de34efa2a03 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -305,12 +305,14 @@ proc0_init(void *dummy __unused) */ LIST_INSERT_HEAD(&allproc, p, p_list); LIST_INSERT_HEAD(PIDHASH(0), p, p_hash); + mtx_init(&pgrp0.pg_mtx, "process group", MTX_DEF); p->p_pgrp = &pgrp0; LIST_INSERT_HEAD(PGRPHASH(0), &pgrp0, pg_hash); LIST_INIT(&pgrp0.pg_members); LIST_INSERT_HEAD(&pgrp0.pg_members, p, p_pglist); pgrp0.pg_session = &session0; + mtx_init(&session0.s_mtx, "session", MTX_DEF); session0.s_count = 1; session0.s_leader = p; |