rmlock(9): add an RM_DUPOK flag
Allows for duplicate locks to be acquired without witness complaining. Similar flags exists already for rwlock(9) and sx(9). Reviewed by: markj MFC after: 3 days Sponsored by: NetApp, Inc. Sponsored by: Klara, Inc. NetApp PR: 52 Differential Revision: https://reviews.freebsd.org/D29683n
This commit is contained in:
parent
034669e856
commit
2816bd8442
@ -26,7 +26,7 @@
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.\" Based on rwlock.9 man page
|
||||
.Dd December 27, 2019
|
||||
.Dd April 12, 2021
|
||||
.Dt RMLOCK 9
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -186,6 +186,9 @@ will assert that the
|
||||
has not been initialized multiple times without intervening calls to
|
||||
.Fn rm_destroy
|
||||
unless this option is specified.
|
||||
.It Dv RM_DUPOK
|
||||
.Xr witness 4
|
||||
should not log messages about duplicate locks being acquired.
|
||||
.El
|
||||
.It Fn rm_rlock "struct rmlock *rm" "struct rm_priotracker* tracker"
|
||||
Lock
|
||||
|
@ -289,6 +289,8 @@ rm_init_flags(struct rmlock *rm, const char *name, int opts)
|
||||
liflags |= LO_RECURSABLE;
|
||||
if (opts & RM_NEW)
|
||||
liflags |= LO_NEW;
|
||||
if (opts & RM_DUPOK)
|
||||
liflags |= LO_DUPOK;
|
||||
rm->rm_writecpus = all_cpus;
|
||||
LIST_INIT(&rm->rm_activeReaders);
|
||||
if (opts & RM_SLEEPABLE) {
|
||||
|
@ -48,6 +48,7 @@
|
||||
#define RM_RECURSE 0x00000002
|
||||
#define RM_SLEEPABLE 0x00000004
|
||||
#define RM_NEW 0x00000008
|
||||
#define RM_DUPOK 0x00000010
|
||||
|
||||
void rm_init(struct rmlock *rm, const char *name);
|
||||
void rm_init_flags(struct rmlock *rm, const char *name, int opts);
|
||||
|
Loading…
Reference in New Issue
Block a user