summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_resource.c
diff options
context:
space:
mode:
authoralfred <alfred@FreeBSD.org>2002-01-20 22:48:49 +0000
committeralfred <alfred@FreeBSD.org>2002-01-20 22:48:49 +0000
commit5a34a0d3bb35b4a49c1c17b4ad15e78c968f8564 (patch)
tree4e0efba165929b475fd7a3617420031ff8ef138b /sys/kern/kern_resource.c
parentb7343f3a64aa97cf9b1d01c289b742ad95c01528 (diff)
downloadFreeBSD-src-5a34a0d3bb35b4a49c1c17b4ad15e78c968f8564.zip
FreeBSD-src-5a34a0d3bb35b4a49c1c17b4ad15e78c968f8564.tar.gz
use mutex pool mutexes for uidinfo locking.
replace mutex_lock calls on uidinfo with macro calls: mtx_lock(&uidp->ui_mtx) -> UIDINFO_LOCK(uidp) Terry Lambert <tlambert2@mindspring.com> helped with this.
Diffstat (limited to 'sys/kern/kern_resource.c')
-rw-r--r--sys/kern/kern_resource.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c
index 93712d1..a037de8 100644
--- a/sys/kern/kern_resource.c
+++ b/sys/kern/kern_resource.c
@@ -859,7 +859,7 @@ uifind(uid)
free(uip, M_UIDINFO);
uip = old_uip;
} else {
- mtx_init(&uip->ui_mtx, "uidinfo struct", MTX_DEF);
+ uip->ui_mtxp = mtx_pool_alloc();
uip->ui_uid = uid;
LIST_INSERT_HEAD(UIHASH(uid), uip, ui_hash);
}
@@ -877,9 +877,9 @@ uihold(uip)
struct uidinfo *uip;
{
- mtx_lock(&uip->ui_mtx);
+ UIDINFO_LOCK(uip);
uip->ui_ref++;
- mtx_unlock(&uip->ui_mtx);
+ UIDINFO_UNLOCK(uip);
}
/*-
@@ -903,18 +903,18 @@ uifree(uip)
{
/* Prepare for optimal case. */
- mtx_lock(&uip->ui_mtx);
+ UIDINFO_LOCK(uip);
if (--uip->ui_ref != 0) {
- mtx_unlock(&uip->ui_mtx);
+ UIDINFO_UNLOCK(uip);
return;
}
/* Prepare for suboptimal case. */
uip->ui_ref++;
- mtx_unlock(&uip->ui_mtx);
+ UIDINFO_UNLOCK(uip);
mtx_lock(&uihashtbl_mtx);
- mtx_lock(&uip->ui_mtx);
+ UIDINFO_LOCK(uip);
/*
* We must subtract one from the count again because we backed out
@@ -932,13 +932,13 @@ uifree(uip)
if (uip->ui_proccnt != 0)
printf("freeing uidinfo: uid = %d, proccnt = %ld\n",
uip->ui_uid, uip->ui_proccnt);
- mtx_destroy(&uip->ui_mtx);
+ UIDINFO_UNLOCK(uip);
FREE(uip, M_UIDINFO);
return;
}
mtx_unlock(&uihashtbl_mtx);
- mtx_unlock(&uip->ui_mtx);
+ UIDINFO_UNLOCK(uip);
}
/*
@@ -952,16 +952,16 @@ chgproccnt(uip, diff, max)
int max;
{
- mtx_lock(&uip->ui_mtx);
+ UIDINFO_LOCK(uip);
/* don't allow them to exceed max, but allow subtraction */
if (diff > 0 && uip->ui_proccnt + diff > max && max != 0) {
- mtx_unlock(&uip->ui_mtx);
+ UIDINFO_UNLOCK(uip);
return (0);
}
uip->ui_proccnt += diff;
if (uip->ui_proccnt < 0)
printf("negative proccnt for uid = %d\n", uip->ui_uid);
- mtx_unlock(&uip->ui_mtx);
+ UIDINFO_UNLOCK(uip);
return (1);
}
@@ -979,12 +979,12 @@ chgsbsize(uip, hiwat, to, max)
int s;
s = splnet();
- mtx_lock(&uip->ui_mtx);
+ UIDINFO_LOCK(uip);
new = uip->ui_sbsize + to - *hiwat;
/* don't allow them to exceed max, but allow subtraction */
if (to > *hiwat && new > max) {
splx(s);
- mtx_unlock(&uip->ui_mtx);
+ UIDINFO_UNLOCK(uip);
return (0);
}
uip->ui_sbsize = new;
@@ -992,6 +992,6 @@ chgsbsize(uip, hiwat, to, max)
if (uip->ui_sbsize < 0)
printf("negative sbsize for uid = %d\n", uip->ui_uid);
splx(s);
- mtx_unlock(&uip->ui_mtx);
+ UIDINFO_UNLOCK(uip);
return (1);
}
OpenPOWER on IntegriCloud