svn commit: r341701 - in head/sys: kern sys
Mateusz Guzik
mjg at FreeBSD.org
Fri Dec 7 16:47:36 UTC 2018
Author: mjg
Date: Fri Dec 7 16:47:34 2018
New Revision: 341701
URL: https://svnweb.freebsd.org/changeset/base/341701
Log:
racct: add RACCT_ENABLED macro and racct_set_unlocked
This allows to remove PROC_LOCK/UNLOCK pairs spread thorought the kernel
only used to appease racct_set.
Sponsored by: The FreeBSD Foundation
Modified:
head/sys/kern/kern_racct.c
head/sys/sys/racct.h
Modified: head/sys/kern/kern_racct.c
==============================================================================
--- head/sys/kern/kern_racct.c Fri Dec 7 16:44:52 2018 (r341700)
+++ head/sys/kern/kern_racct.c Fri Dec 7 16:47:34 2018 (r341701)
@@ -726,6 +726,18 @@ racct_set_locked(struct proc *p, int resource, uint64_
* even if it's above the limit.
*/
int
+racct_set_unlocked(struct proc *p, int resource, uint64_t amount)
+{
+ int error;
+
+ ASSERT_RACCT_ENABLED();
+ PROC_LOCK(p);
+ error = racct_set(p, resource, amount);
+ PROC_UNLOCK(p);
+ return (error);
+}
+
+int
racct_set(struct proc *p, int resource, uint64_t amount)
{
int error;
Modified: head/sys/sys/racct.h
==============================================================================
--- head/sys/sys/racct.h Fri Dec 7 16:44:52 2018 (r341700)
+++ head/sys/sys/racct.h Fri Dec 7 16:47:34 2018 (r341701)
@@ -164,12 +164,14 @@ extern struct mtx racct_lock;
#define RACCT_UNLOCK() mtx_unlock(&racct_lock)
#define RACCT_LOCK_ASSERT() mtx_assert(&racct_lock, MA_OWNED)
+#define RACCT_ENABLED() __predict_false(racct_enable)
+
#define RACCT_PROC_LOCK(p) do { \
- if (__predict_false(racct_enable)) \
+ if (RACCT_ENABLED()) \
PROC_LOCK(p); \
} while (0)
#define RACCT_PROC_UNLOCK(p) do { \
- if (__predict_false(racct_enable)) \
+ if (RACCT_ENABLED()) \
PROC_UNLOCK(p); \
} while (0)
@@ -178,6 +180,7 @@ void racct_add_cred(struct ucred *cred, int resource,
void racct_add_force(struct proc *p, int resource, uint64_t amount);
void racct_add_buf(struct proc *p, const struct buf *bufp, int is_write);
int racct_set(struct proc *p, int resource, uint64_t amount);
+int racct_set_unlocked(struct proc *p, int resource, uint64_t amount);
void racct_set_force(struct proc *p, int resource, uint64_t amount);
void racct_sub(struct proc *p, int resource, uint64_t amount);
void racct_sub_cred(struct ucred *cred, int resource, uint64_t amount);
More information about the svn-src-all
mailing list