aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_racct.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/kern_racct.c')
-rw-r--r--sys/kern/kern_racct.c76
1 files changed, 39 insertions, 37 deletions
diff --git a/sys/kern/kern_racct.c b/sys/kern/kern_racct.c
index 419c69e904b1..bbd50ca6e213 100644
--- a/sys/kern/kern_racct.c
+++ b/sys/kern/kern_racct.c
@@ -93,6 +93,10 @@ SYSCTL_UINT(_kern_racct, OID_AUTO, pcpu_threshold, CTLFLAG_RW, &pcpu_threshold,
static struct mtx racct_lock;
MTX_SYSINIT(racct_lock, &racct_lock, "racct lock", MTX_DEF);
+#define RACCT_LOCK() mtx_lock(&racct_lock)
+#define RACCT_UNLOCK() mtx_unlock(&racct_lock)
+#define RACCT_LOCK_ASSERT() mtx_assert(&racct_lock, MA_OWNED)
+
static uma_zone_t racct_zone;
static void racct_sub_racct(struct racct *dest, const struct racct *src);
@@ -391,7 +395,7 @@ racct_add_racct(struct racct *dest, const struct racct *src)
int i;
ASSERT_RACCT_ENABLED();
- mtx_assert(&racct_lock, MA_OWNED);
+ RACCT_LOCK_ASSERT();
/*
* Update resource usage in dest.
@@ -413,7 +417,7 @@ racct_sub_racct(struct racct *dest, const struct racct *src)
int i;
ASSERT_RACCT_ENABLED();
- mtx_assert(&racct_lock, MA_OWNED);
+ RACCT_LOCK_ASSERT();
/*
* Update resource usage in dest.
@@ -466,7 +470,7 @@ racct_destroy_locked(struct racct **racctp)
SDT_PROBE1(racct, , racct, destroy, racctp);
- mtx_assert(&racct_lock, MA_OWNED);
+ RACCT_LOCK_ASSERT();
KASSERT(racctp != NULL, ("NULL racctp"));
KASSERT(*racctp != NULL, ("NULL racct"));
@@ -493,9 +497,9 @@ racct_destroy(struct racct **racct)
if (!racct_enable)
return;
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
racct_destroy_locked(racct);
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
}
/*
@@ -509,7 +513,7 @@ racct_adjust_resource(struct racct *racct, int resource,
{
ASSERT_RACCT_ENABLED();
- mtx_assert(&racct_lock, MA_OWNED);
+ RACCT_LOCK_ASSERT();
KASSERT(racct != NULL, ("NULL racct"));
racct->r_resources[resource] += amount;
@@ -574,9 +578,9 @@ racct_add(struct proc *p, int resource, uint64_t amount)
SDT_PROBE3(racct, , rusage, add, p, resource, amount);
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
error = racct_add_locked(p, resource, amount, 0);
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
return (error);
}
@@ -593,9 +597,9 @@ racct_add_force(struct proc *p, int resource, uint64_t amount)
SDT_PROBE3(racct, , rusage, add__force, p, resource, amount);
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
racct_add_locked(p, resource, amount, 1);
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
}
static void
@@ -625,9 +629,9 @@ racct_add_cred(struct ucred *cred, int resource, uint64_t amount)
if (!racct_enable)
return;
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
racct_add_cred_locked(cred, resource, amount);
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
}
static int
@@ -703,9 +707,9 @@ racct_set(struct proc *p, int resource, uint64_t amount)
SDT_PROBE3(racct, , rusage, set__force, p, resource, amount);
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
error = racct_set_locked(p, resource, amount, 0);
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
return (error);
}
@@ -718,9 +722,9 @@ racct_set_force(struct proc *p, int resource, uint64_t amount)
SDT_PROBE3(racct, , rusage, set, p, resource, amount);
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
racct_set_locked(p, resource, amount, 1);
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
}
/*
@@ -800,7 +804,7 @@ racct_sub(struct proc *p, int resource, uint64_t amount)
KASSERT(RACCT_CAN_DROP(resource),
("%s: called for non-droppable resource %d", __func__, resource));
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
KASSERT(amount <= p->p_racct->r_resources[resource],
("%s: freeing %ju of resource %d, which is more "
"than allocated %jd for %s (pid %d)", __func__, amount, resource,
@@ -808,7 +812,7 @@ racct_sub(struct proc *p, int resource, uint64_t amount)
racct_adjust_resource(p->p_racct, resource, -amount);
racct_sub_cred_locked(p->p_ucred, resource, amount);
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
}
static void
@@ -843,9 +847,9 @@ racct_sub_cred(struct ucred *cred, int resource, uint64_t amount)
if (!racct_enable)
return;
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
racct_sub_cred_locked(cred, resource, amount);
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
}
/*
@@ -866,7 +870,7 @@ racct_proc_fork(struct proc *parent, struct proc *child)
PROC_LOCK(parent);
PROC_LOCK(child);
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
#ifdef RCTL
error = rctl_proc_fork(parent, child);
@@ -896,7 +900,7 @@ racct_proc_fork(struct proc *parent, struct proc *child)
error += racct_add_locked(child, RACCT_NTHR, 1, 0);
out:
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
PROC_UNLOCK(child);
PROC_UNLOCK(parent);
@@ -919,10 +923,10 @@ racct_proc_fork_done(struct proc *child)
if (!racct_enable)
return;
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
rctl_enforce(child, RACCT_NPROC, 0);
rctl_enforce(child, RACCT_NTHR, 0);
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
#endif
}
@@ -958,7 +962,7 @@ racct_proc_exit(struct proc *p)
pct_estimate = 0;
pct = racct_getpcpu(p, pct_estimate);
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
racct_set_locked(p, RACCT_CPU, runtime, 0);
racct_add_cred_locked(p->p_ucred, RACCT_PCTCPU, pct);
@@ -970,7 +974,7 @@ racct_proc_exit(struct proc *p)
racct_set_locked(p, i, 0, 0);
}
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
PROC_UNLOCK(p);
#ifdef RCTL
@@ -1003,7 +1007,7 @@ racct_proc_ucred_changed(struct proc *p, struct ucred *oldcred,
newpr = newcred->cr_prison;
oldpr = oldcred->cr_prison;
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
if (newuip != olduip) {
racct_sub_racct(olduip->ui_racct, p->p_racct);
racct_add_racct(newuip->ui_racct, p->p_racct);
@@ -1020,7 +1024,7 @@ racct_proc_ucred_changed(struct proc *p, struct ucred *oldcred,
racct_add_racct(pr->pr_prison_racct->prr_racct,
p->p_racct);
}
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
#ifdef RCTL
rctl_proc_ucred_changed(p, newcred);
@@ -1033,12 +1037,10 @@ racct_move(struct racct *dest, struct racct *src)
ASSERT_RACCT_ENABLED();
- mtx_lock(&racct_lock);
-
+ RACCT_LOCK();
racct_add_racct(dest, src);
racct_sub_racct(src, src);
-
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
}
static void
@@ -1112,7 +1114,7 @@ racct_decay_callback(struct racct *racct, void *dummy1, void *dummy2)
int64_t r_old, r_new;
ASSERT_RACCT_ENABLED();
- mtx_assert(&racct_lock, MA_OWNED);
+ RACCT_LOCK_ASSERT();
r_old = racct->r_resources[RACCT_PCTCPU];
@@ -1128,14 +1130,14 @@ static void
racct_decay_pre(void)
{
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
}
static void
racct_decay_post(void)
{
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
}
static void
@@ -1203,13 +1205,13 @@ racctd(void)
} else
pct_estimate = 0;
pct = racct_getpcpu(p, pct_estimate);
- mtx_lock(&racct_lock);
+ RACCT_LOCK();
racct_set_locked(p, RACCT_PCTCPU, pct, 1);
racct_set_locked(p, RACCT_CPU, runtime, 0);
racct_set_locked(p, RACCT_WALLCLOCK,
(uint64_t)wallclock.tv_sec * 1000000 +
wallclock.tv_usec, 0);
- mtx_unlock(&racct_lock);
+ RACCT_UNLOCK();
PROC_UNLOCK(p);
}