diff options
author | 2020-12-15 10:23:01 +0000 | |
---|---|---|
committer | 2020-12-15 10:23:01 +0000 | |
commit | 45300472ceee5803da9aec8506af42fa6fef9be4 (patch) | |
tree | 8bacd8ea5075e51ef9c1075ec9fb63903a8dffaf | |
parent | Fix return value variable type in tls_keypair_load_cert (diff) | |
download | wireguard-openbsd-45300472ceee5803da9aec8506af42fa6fef9be4.tar.xz wireguard-openbsd-45300472ceee5803da9aec8506af42fa6fef9be4.zip |
Add helpers around rw_status(9) to help checking if a lock is held.
ok visa@
-rw-r--r-- | sys/sys/rwlock.h | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/sys/sys/rwlock.h b/sys/sys/rwlock.h index 4b32e387ff4..9e6a7a26895 100644 --- a/sys/sys/rwlock.h +++ b/sys/sys/rwlock.h @@ -1,4 +1,4 @@ -/* $OpenBSD: rwlock.h,v 1.26 2019/07/16 01:40:49 jsg Exp $ */ +/* $OpenBSD: rwlock.h,v 1.27 2020/12/15 10:23:01 mpi Exp $ */ /* * Copyright (c) 2002 Artur Grabowski <art@openbsd.org> * @@ -168,6 +168,29 @@ int rw_enter(struct rwlock *, int); void rw_exit(struct rwlock *); int rw_status(struct rwlock *); +static inline int +rw_read_held(struct rwlock *rwl) +{ + return (rw_status(rwl) == RW_READ); +} + +static inline int +rw_write_held(struct rwlock *rwl) +{ + return (rw_status(rwl) == RW_WRITE); +} + +static inline int +rw_lock_held(struct rwlock *rwl) +{ + int status; + + status = rw_status(rwl); + + return (status == RW_READ || status == RW_WRITE); +} + + void _rrw_init_flags(struct rrwlock *, const char *, int, const struct lock_type *); int rrw_enter(struct rrwlock *, int); |