diff options
author | Mark Johnston <markj@FreeBSD.org> | 2017-11-21 14:59:23 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2017-11-21 14:59:23 +0000 |
commit | 755230eb9f87f66fd4bd20862e73bad612e36199 (patch) | |
tree | ee9c735acaf1618e6019f215d9f0608a7ea8f182 | |
parent | 2b378326f89d75b9612cc912f7fa2257cca9a97f (diff) | |
download | src-755230eb9f87f66fd4bd20862e73bad612e36199.tar.gz src-755230eb9f87f66fd4bd20862e73bad612e36199.zip |
Clean up the SYSINIT_FLAGS definitions for rwlock(9) and rmlock(9).
Avoid duplication in their macro definitions, and document them. No
functional change intended.
MFC after: 1 week
Notes
Notes:
svn path=/head/; revision=326060
-rw-r--r-- | share/man/man9/Makefile | 3 | ||||
-rw-r--r-- | share/man/man9/rmlock.9 | 8 | ||||
-rw-r--r-- | share/man/man9/rwlock.9 | 6 | ||||
-rw-r--r-- | share/man/man9/sx.9 | 14 | ||||
-rw-r--r-- | sys/kern/kern_rmlock.c | 13 | ||||
-rw-r--r-- | sys/kern/kern_rwlock.c | 11 | ||||
-rw-r--r-- | sys/sys/rmlock.h | 22 | ||||
-rw-r--r-- | sys/sys/rwlock.h | 20 |
8 files changed, 35 insertions, 62 deletions
diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 400995fb0d6f..8b3783d21b3f 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -1548,6 +1548,7 @@ MLINKS+=rmlock.9 rm_assert.9 \ rmlock.9 rm_runlock.9 \ rmlock.9 rm_sleep.9 \ rmlock.9 RM_SYSINIT.9 \ + rmlock.9 RM_SYSINIT_FLAGS.9 \ rmlock.9 rm_try_rlock.9 \ rmlock.9 rm_wlock.9 \ rmlock.9 rm_wowned.9 \ @@ -1580,6 +1581,7 @@ MLINKS+=rwlock.9 rw_assert.9 \ rwlock.9 rw_unlock.9 \ rwlock.9 rw_sleep.9 \ rwlock.9 RW_SYSINIT.9 \ + rwlock.9 RW_SYSINIT_FLAGS.9 \ rwlock.9 rw_try_rlock.9 \ rwlock.9 rw_try_upgrade.9 \ rwlock.9 rw_try_wlock.9 \ @@ -1788,6 +1790,7 @@ MLINKS+=sx.9 sx_assert.9 \ sx.9 sx_slock_sig.9 \ sx.9 sx_sunlock.9 \ sx.9 SX_SYSINIT.9 \ + sx.9 SX_SYSINIT_FLAGS.9 \ sx.9 sx_try_slock.9 \ sx.9 sx_try_upgrade.9 \ sx.9 sx_try_xlock.9 \ diff --git a/share/man/man9/rmlock.9 b/share/man/man9/rmlock.9 index ee033a6bc6b0..d56d97cef6e1 100644 --- a/share/man/man9/rmlock.9 +++ b/share/man/man9/rmlock.9 @@ -26,7 +26,7 @@ .\" $FreeBSD$ .\" .\" Based on rwlock.9 man page -.Dd December 13, 2014 +.Dd November 11, 2017 .Dt RMLOCK 9 .Os .Sh NAME @@ -42,7 +42,8 @@ .Nm rm_wowned , .Nm rm_sleep , .Nm rm_assert , -.Nm RM_SYSINIT +.Nm RM_SYSINIT , +.Nm RM_SYSINIT_FLAGS .Nd kernel reader/writer lock optimized for read-mostly access patterns .Sh SYNOPSIS .In sys/param.h @@ -74,7 +75,8 @@ .Ft void .Fn rm_assert "struct rmlock *rm" "int what" .In sys/kernel.h -.Fn RM_SYSINIT "name" "struct rmlock *rm" "const char *desc" "int opts" +.Fn RM_SYSINIT "name" "struct rmlock *rm" "const char *desc" +.Fn RM_SYSINIT_FLAGS "name" "struct rmlock *rm" "const char *desc" "int flags" .Sh DESCRIPTION Read-mostly locks allow shared access to protected data by multiple threads, or exclusive access by a single thread. diff --git a/share/man/man9/rwlock.9 b/share/man/man9/rwlock.9 index 9ee16fc7cebc..a23b44b278e3 100644 --- a/share/man/man9/rwlock.9 +++ b/share/man/man9/rwlock.9 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 28, 2016 +.Dd November 11, 2017 .Dt RWLOCK 9 .Os .Sh NAME @@ -45,7 +45,8 @@ .Nm rw_initialized , .Nm rw_wowned , .Nm rw_assert , -.Nm RW_SYSINIT +.Nm RW_SYSINIT , +.Nm RW_SYSINIT_FLAGS .Nd kernel reader/writer lock .Sh SYNOPSIS .In sys/param.h @@ -88,6 +89,7 @@ .Fn rw_assert "const struct rwlock *rw" "int what" .In sys/kernel.h .Fn RW_SYSINIT "name" "struct rwlock *rw" "const char *desc" +.Fn RW_SYSINIT_FLAGS "name" "struct rwlock *rw" "const char *desc" "int flags" .Sh DESCRIPTION Reader/writer locks allow shared access to protected data by multiple threads, or exclusive access by a single thread. diff --git a/share/man/man9/sx.9 b/share/man/man9/sx.9 index f09584a91222..a911e07e083a 100644 --- a/share/man/man9/sx.9 +++ b/share/man/man9/sx.9 @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 28, 2016 +.Dd November 11, 2017 .Dt SX 9 .Os .Sh NAME @@ -49,7 +49,8 @@ .Nm sx_xholder , .Nm sx_xlocked , .Nm sx_assert , -.Nm SX_SYSINIT +.Nm SX_SYSINIT , +.Nm SX_SYSINIT_FLAGS .Nd kernel shared/exclusive lock .Sh SYNOPSIS .In sys/param.h @@ -95,7 +96,8 @@ .Ft void .Fn sx_assert "const struct sx *sx" "int what" .In sys/kernel.h -.Fn SX_SYSINIT "name" "struct sx *sx" "const char *description" +.Fn SX_SYSINIT "name" "struct sx *sx" "const char *desc" +.Fn SX_SYSINIT_FLAGS "name" "struct sx *sx" "const char *desc" "int flags" .Sh DESCRIPTION Shared/exclusive locks are used to protect data that are read far more often than they are written. @@ -295,6 +297,12 @@ but with an additional argument, .Fa name , that is used in generating unique variable names for the related structures associated with the lock and the sysinit routine. +The +.Fn SX_SYSINIT_FLAGS +macro can similarly be used to initialize a given +.Fa sx +lock using +.Fn sx_init_flags . .Pp A thread may not hold both a shared lock and an exclusive lock on the same lock simultaneously; diff --git a/sys/kern/kern_rmlock.c b/sys/kern/kern_rmlock.c index 123b24845f8e..a77fa946e4bf 100644 --- a/sys/kern/kern_rmlock.c +++ b/sys/kern/kern_rmlock.c @@ -338,17 +338,10 @@ rm_wowned(const struct rmlock *rm) void rm_sysinit(void *arg) { - struct rm_args *args = arg; + struct rm_args *args; - rm_init(args->ra_rm, args->ra_desc); -} - -void -rm_sysinit_flags(void *arg) -{ - struct rm_args_flags *args = arg; - - rm_init_flags(args->ra_rm, args->ra_desc, args->ra_opts); + args = arg; + rm_init_flags(args->ra_rm, args->ra_desc, args->ra_flags); } static int diff --git a/sys/kern/kern_rwlock.c b/sys/kern/kern_rwlock.c index 6cd6e3da4cc7..393979947ce8 100644 --- a/sys/kern/kern_rwlock.c +++ b/sys/kern/kern_rwlock.c @@ -240,16 +240,9 @@ _rw_destroy(volatile uintptr_t *c) void rw_sysinit(void *arg) { - struct rw_args *args = arg; - - rw_init((struct rwlock *)args->ra_rw, args->ra_desc); -} - -void -rw_sysinit_flags(void *arg) -{ - struct rw_args_flags *args = arg; + struct rw_args *args; + args = arg; rw_init_flags((struct rwlock *)args->ra_rw, args->ra_desc, args->ra_flags); } diff --git a/sys/sys/rmlock.h b/sys/sys/rmlock.h index b065df42b6f4..da5d7274e780 100644 --- a/sys/sys/rmlock.h +++ b/sys/sys/rmlock.h @@ -103,35 +103,21 @@ void _rm_assert(const struct rmlock *rm, int what, const char *file, struct rm_args { struct rmlock *ra_rm; const char *ra_desc; + int ra_flags; }; -struct rm_args_flags { - struct rmlock *ra_rm; - const char *ra_desc; - int ra_opts; -}; - -#define RM_SYSINIT(name, rm, desc) \ +#define RM_SYSINIT_FLAGS(name, rm, desc, flags) \ static struct rm_args name##_args = { \ (rm), \ (desc), \ + (flags), \ }; \ SYSINIT(name##_rm_sysinit, SI_SUB_LOCK, SI_ORDER_MIDDLE, \ rm_sysinit, &name##_args); \ SYSUNINIT(name##_rm_sysuninit, SI_SUB_LOCK, SI_ORDER_MIDDLE, \ rm_destroy, (rm)) - -#define RM_SYSINIT_FLAGS(name, rm, desc, opts) \ - static struct rm_args name##_args = { \ - (rm), \ - (desc), \ - (opts), \ - }; \ - SYSINIT(name##_rm_sysinit, SI_SUB_LOCK, SI_ORDER_MIDDLE, \ - rm_sysinit_flags, &name##_args); \ - SYSUNINIT(name##_rm_sysuninit, SI_SUB_LOCK, SI_ORDER_MIDDLE, \ - rm_destroy, (rm)) +#define RM_SYSINIT(name, rm, desc) RM_SYSINIT_FLAGS(name, rm, desc, 0) #if defined(INVARIANTS) || defined(INVARIANT_SUPPORT) #define RA_LOCKED LA_LOCKED diff --git a/sys/sys/rwlock.h b/sys/sys/rwlock.h index aa4b0cc2ab76..cd888259d9f3 100644 --- a/sys/sys/rwlock.h +++ b/sys/sys/rwlock.h @@ -220,35 +220,21 @@ void __rw_assert(const volatile uintptr_t *c, int what, const char *file, struct rw_args { void *ra_rw; const char *ra_desc; -}; - -struct rw_args_flags { - void *ra_rw; - const char *ra_desc; int ra_flags; }; -#define RW_SYSINIT(name, rw, desc) \ +#define RW_SYSINIT_FLAGS(name, rw, desc, flags) \ static struct rw_args name##_args = { \ (rw), \ (desc), \ + (flags), \ }; \ SYSINIT(name##_rw_sysinit, SI_SUB_LOCK, SI_ORDER_MIDDLE, \ rw_sysinit, &name##_args); \ SYSUNINIT(name##_rw_sysuninit, SI_SUB_LOCK, SI_ORDER_MIDDLE, \ _rw_destroy, __DEVOLATILE(void *, &(rw)->rw_lock)) - -#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, __DEVOLATILE(void *, &(rw)->rw_lock)) +#define RW_SYSINIT(name, rw, desc) RW_SYSINIT_FLAGS(name, rw, desc, 0) /* * Options passed to rw_init_flags(). |