summaryrefslogtreecommitdiffstats
path: root/sys/sys/rwlock.h
diff options
context:
space:
mode:
authorkmacy <kmacy@FreeBSD.org>2008-12-08 21:46:55 +0000
committerkmacy <kmacy@FreeBSD.org>2008-12-08 21:46:55 +0000
commitc510d681c94d12b111437983e9f21dfb1d70b6be (patch)
tree517d99e2d2a8fea12c0332e385cf47407ba01a2c /sys/sys/rwlock.h
parent2e6f1edb43215ac92a1504930980b99efb13ee7b (diff)
downloadFreeBSD-src-c510d681c94d12b111437983e9f21dfb1d70b6be.zip
FreeBSD-src-c510d681c94d12b111437983e9f21dfb1d70b6be.tar.gz
add RW_SYSINIT_FLAGS macro and rw_sysinit_flags initialization function
Diffstat (limited to 'sys/sys/rwlock.h')
-rw-r--r--sys/sys/rwlock.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/sys/sys/rwlock.h b/sys/sys/rwlock.h
index 2b45667..9636fb9 100644
--- a/sys/sys/rwlock.h
+++ b/sys/sys/rwlock.h
@@ -132,6 +132,7 @@
void rw_init_flags(struct rwlock *rw, const char *name, int opts);
void rw_destroy(struct rwlock *rw);
void rw_sysinit(void *arg);
+void rw_sysinit_flags(void *arg);
int rw_wowned(struct rwlock *rw);
void _rw_wlock(struct rwlock *rw, const char *file, int line);
int _rw_try_wlock(struct rwlock *rw, const char *file, int line);
@@ -187,6 +188,12 @@ struct rw_args {
const char *ra_desc;
};
+struct rw_args_flags {
+ struct rwlock *ra_rw;
+ const char *ra_desc;
+ int ra_flags;
+};
+
#define RW_SYSINIT(name, rw, desc) \
static struct rw_args name##_args = { \
(rw), \
@@ -197,6 +204,18 @@ struct rw_args {
SYSUNINIT(name##_rw_sysuninit, SI_SUB_LOCK, SI_ORDER_MIDDLE, \
rw_destroy, (rw))
+
+#define RW_SYSINIT_FLAGS(name, rw, desc, flags) \
+ static struct rw_args_flags name##_args = { \
+ (rw), \
+ (desc), \
+ (flags), \
+ }; \
+ SYSINIT(name##_rw_sysinit, SI_SUB_LOCK, SI_ORDER_MIDDLE, \
+ rw_sysinit_flags, &name##_args); \
+ SYSUNINIT(name##_rw_sysuninit, SI_SUB_LOCK, SI_ORDER_MIDDLE, \
+ rw_destroy, (rw))
+
/*
* Options passed to rw_init_flags().
*/
OpenPOWER on IntegriCloud