summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_resource.c
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2000-12-13 00:17:05 +0000
committerjake <jake@FreeBSD.org>2000-12-13 00:17:05 +0000
commita4ad237eaa665b78919b8ff019591629b59df5e9 (patch)
tree43d22ede99071cd294fded182b591a4a3cb8d414 /sys/kern/kern_resource.c
parent825aa5c1b32389b54f15847261348e090c31b7fc (diff)
downloadFreeBSD-src-a4ad237eaa665b78919b8ff019591629b59df5e9.zip
FreeBSD-src-a4ad237eaa665b78919b8ff019591629b59df5e9.tar.gz
- Change the allproc_lock to use a macro, ALLPROC_LOCK(how), instead
of explicit calls to lockmgr. Also provides macros for the flags pased to specify shared, exclusive or release which map to the lockmgr flags. This is so that the use of lockmgr can be easily replaced with optimized reader-writer locks. - Add some locking that I missed the first time.
Diffstat (limited to 'sys/kern/kern_resource.c')
-rw-r--r--sys/kern/kern_resource.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c
index a10c2c9..b852cf6 100644
--- a/sys/kern/kern_resource.c
+++ b/sys/kern/kern_resource.c
@@ -121,13 +121,13 @@ getpriority(curp, uap)
case PRIO_USER:
if (uap->who == 0)
uap->who = curp->p_ucred->cr_uid;
- lockmgr(&allproc_lock, LK_SHARED, NULL, CURPROC);
+ ALLPROC_LOCK(AP_SHARED);
LIST_FOREACH(p, &allproc, p_list)
if (!p_can(curp, p, P_CAN_SEE, NULL) &&
p->p_ucred->cr_uid == uap->who &&
p->p_nice < low)
low = p->p_nice;
- lockmgr(&allproc_lock, LK_RELEASE, NULL, CURPROC);
+ ALLPROC_LOCK(AP_RELEASE);
break;
default:
@@ -189,14 +189,14 @@ setpriority(curp, uap)
case PRIO_USER:
if (uap->who == 0)
uap->who = curp->p_ucred->cr_uid;
- lockmgr(&allproc_lock, LK_SHARED, NULL, CURPROC);
+ ALLPROC_LOCK(AP_SHARED);
LIST_FOREACH(p, &allproc, p_list)
if (p->p_ucred->cr_uid == uap->who &&
!p_can(curp, p, P_CAN_SEE, NULL)) {
error = donice(curp, p, uap->prio);
found++;
}
- lockmgr(&allproc_lock, LK_RELEASE, NULL, CURPROC);
+ ALLPROC_LOCK(AP_RELEASE);
break;
default:
OpenPOWER on IntegriCloud