aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_proc.c
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2001-03-28 11:52:56 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2001-03-28 11:52:56 +0000
commit1005a129e5ff4af4709d281023e8a101a28fcb82 (patch)
tree0e149b4a15299675308712c4196c45b696f76c14 /sys/kern/kern_proc.c
parent11f1917f8ae19359d8672d966f4cf966e115c7a7 (diff)
downloadsrc-1005a129e5ff4af4709d281023e8a101a28fcb82.tar.gz
src-1005a129e5ff4af4709d281023e8a101a28fcb82.zip
Convert the allproc and proctree locks from lockmgr locks to sx locks.
Notes
Notes: svn path=/head/; revision=74927
Diffstat (limited to 'sys/kern/kern_proc.c')
-rw-r--r--sys/kern/kern_proc.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index 36b01ef10369..67e78bba60fb 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -43,6 +43,7 @@
#include <sys/filedesc.h>
#include <sys/tty.h>
#include <sys/signalvar.h>
+#include <sys/sx.h>
#include <vm/vm.h>
#include <sys/lock.h>
#include <vm/pmap.h>
@@ -73,8 +74,8 @@ struct pgrphashhead *pgrphashtbl;
u_long pgrphash;
struct proclist allproc;
struct proclist zombproc;
-struct lock allproc_lock;
-struct lock proctree_lock;
+struct sx allproc_lock;
+struct sx proctree_lock;
vm_zone_t proc_zone;
vm_zone_t ithread_zone;
@@ -86,8 +87,8 @@ procinit()
{
int i, j;
- lockinit(&allproc_lock, PZERO, "allproc", 0, 0);
- lockinit(&proctree_lock, PZERO, "proctree", 0, 0);
+ sx_init(&allproc_lock, "allproc");
+ sx_init(&proctree_lock, "proctree");
LIST_INIT(&allproc);
LIST_INIT(&zombproc);
pidhashtbl = hashinit(maxproc / 4, M_PROC, &pidhash);
@@ -120,13 +121,13 @@ inferior(p)
{
int rval = 1;
- PROCTREE_LOCK(PT_SHARED);
+ sx_slock(&proctree_lock);
for (; p != curproc; p = p->p_pptr)
if (p->p_pid == 0) {
rval = 0;
break;
}
- PROCTREE_LOCK(PT_RELEASE);
+ sx_sunlock(&proctree_lock);
return (rval);
}
@@ -139,11 +140,11 @@ pfind(pid)
{
register struct proc *p;
- ALLPROC_LOCK(AP_SHARED);
+ sx_slock(&allproc_lock);
LIST_FOREACH(p, PIDHASH(pid), p_hash)
if (p->p_pid == pid)
break;
- ALLPROC_LOCK(AP_RELEASE);
+ sx_sunlock(&allproc_lock);
return (p);
}
@@ -308,7 +309,7 @@ fixjobc(p, pgrp, entering)
* Check p's parent to see whether p qualifies its own process
* group; if so, adjust count for p's process group.
*/
- PROCTREE_LOCK(PT_SHARED);
+ sx_slock(&proctree_lock);
if ((hispgrp = p->p_pptr->p_pgrp) != pgrp &&
hispgrp->pg_session == mysession) {
if (entering)
@@ -331,7 +332,7 @@ fixjobc(p, pgrp, entering)
else if (--hispgrp->pg_jobc == 0)
orphanpg(hispgrp);
}
- PROCTREE_LOCK(PT_RELEASE);
+ sx_sunlock(&proctree_lock);
}
/*
@@ -520,11 +521,11 @@ zpfind(pid_t pid)
{
struct proc *p;
- ALLPROC_LOCK(AP_SHARED);
+ sx_slock(&allproc_lock);
LIST_FOREACH(p, &zombproc, p_list)
if (p->p_pid == pid)
break;
- ALLPROC_LOCK(AP_RELEASE);
+ sx_sunlock(&allproc_lock);
return (p);
}
@@ -580,7 +581,7 @@ sysctl_kern_proc(SYSCTL_HANDLER_ARGS)
if (error)
return (error);
}
- ALLPROC_LOCK(AP_SHARED);
+ sx_slock(&allproc_lock);
for (doingzomb=0 ; doingzomb < 2 ; doingzomb++) {
if (!doingzomb)
p = LIST_FIRST(&allproc);
@@ -637,12 +638,12 @@ sysctl_kern_proc(SYSCTL_HANDLER_ARGS)
error = sysctl_out_proc(p, req, doingzomb);
if (error) {
- ALLPROC_LOCK(AP_RELEASE);
+ sx_sunlock(&allproc_lock);
return (error);
}
}
}
- ALLPROC_LOCK(AP_RELEASE);
+ sx_sunlock(&allproc_lock);
return (0);
}