Skip to content

Commit c946021

Browse files
committed
Add support for giving struct sig debug names
1 parent 1b92a73 commit c946021

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+813
-485
lines changed

kos/cpp.hint

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1395,6 +1395,38 @@
13951395

13961396

13971397

1398+
// <kos/sched/shared-lock.h>
1399+
#define DEFINE_SHARED_LOCK(x) struct shared_lock x={}
1400+
#define DEFINE_SHARED_LOCK_LOCKED(x) struct shared_lock x={}
1401+
#define DEFINE_SHARED_LOCK_NAMED(x,...) struct shared_lock x={}
1402+
#define DEFINE_SHARED_LOCK_LOCKED_NAMED(x,...) struct shared_lock x={}
1403+
1404+
1405+
1406+
// <kos/sched/shared-rwlock.h>
1407+
#define DEFINE_SHARED_RWLOCK(x) struct shared_rwlock x={}
1408+
#define DEFINE_SHARED_RWLOCK_READ(x) struct shared_rwlock x={}
1409+
#define DEFINE_SHARED_RWLOCK_WRITE(x) struct shared_rwlock x={}
1410+
#define DEFINE_SHARED_RWLOCK_NAMED(x,...) struct shared_rwlock x={}
1411+
#define DEFINE_SHARED_RWLOCK_READ_NAMED(x,...) struct shared_rwlock x={}
1412+
#define DEFINE_SHARED_RWLOCK_WRITE_NAMED(x,...) struct shared_rwlock x={}
1413+
1414+
1415+
1416+
// <kos/sched/shared-recursive-rwlock.h>
1417+
#define DEFINE_SHARED_RECURSIVE_RWLOCK(x) struct shared_recursive_rwlock x={}
1418+
#define DEFINE_SHARED_RECURSIVE_RWLOCK_READ(x) struct shared_recursive_rwlock x={}
1419+
#define DEFINE_SHARED_RECURSIVE_RWLOCK_NAMED(x,...) struct shared_recursive_rwlock x={}
1420+
#define DEFINE_SHARED_RECURSIVE_RWLOCK_READ_NAMED(x,...) struct shared_recursive_rwlock x={}
1421+
1422+
1423+
1424+
// <kos/sched/shared-recursive-lock.h>
1425+
#define DEFINE_SHARED_RECURSIVE_LOCK(x) struct shared_recursive_lock x={}
1426+
#define DEFINE_SHARED_RECURSIVE_LOCK_NAMED(x,...) struct shared_recursive_lock x={}
1427+
1428+
1429+
13981430
// <bits/types.h>
13991431
#define __FS_TYPE(x) x##_t
14001432
#define __FS_ALTTYPE(x) x##_t
@@ -1929,6 +1961,9 @@
19291961
#define PAGEDIR_P_BEGINUSE_KEEP_PR(...)
19301962
#define PAGEDIR_P_ENDUSE_KEEP_PR(...)
19311963

1964+
#define DEFINE_SIG(x) struct sig x={}
1965+
#define DEFINE_SIG_NAMED(x,...) struct sig x={}
1966+
19321967
#define IF_HAVE_PHYS_IDENTITY(...) __VA_ARGS__
19331968
#define IF_PHYS_IDENTITY(a,b,...) do{__VA_ARGS__;}while(0)
19341969
#define IF_PHYS_IDENTITY_PAGE(a,...) do{__VA_ARGS__;}while(0)

kos/include/kos/hybrid/sched-signal.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,23 @@ __DECL_BEGIN
4242

4343
#ifdef __KERNEL__
4444
typedef struct sig sched_signal_t;
45-
#define SCHED_SIGNAL_INIT SIG_INIT
45+
#define SCHED_SIGNAL_INIT(self) SIG_INIT(self)
46+
#define SCHED_SIGNAL_INIT_NAMED(self, name) SIG_INIT_NAMED(self, name)
4647
#else /* __KERNEL__ */
4748
typedef lfutex_t sched_signal_t;
48-
#define SCHED_SIGNAL_INIT 0
49+
#define SCHED_SIGNAL_INIT(self) 0
50+
#define SCHED_SIGNAL_INIT_NAMED(self, name) 0
4951
#endif /* !__KERNEL__ */
5052

5153
#ifdef __INTELLISENSE__
5254

5355
/* Initialize a given signal */
5456
void sched_signal_init(sched_signal_t *__self);
57+
void sched_signal_init_named(sched_signal_t *__self, char const *__name);
5558

5659
/* Initialize an already zero-initialized signal */
5760
void sched_signal_cinit(sched_signal_t *__self);
61+
void sched_signal_cinit_named(sched_signal_t *__self, char const *__name);
5862

5963
/* Broadcast a signal, waking all threads waiting on it. */
6064
__SIZE_TYPE__ sched_signal_broadcast(sched_signal_t *__self);
@@ -74,6 +78,8 @@ __SIZE_TYPE__ sched_signal_sendmany(sched_signal_t *__self, __SIZE_TYPE__ __max_
7478

7579
#define sched_signal_init sig_init
7680
#define sched_signal_cinit sig_cinit
81+
#define sched_signal_init_named sig_init_named
82+
#define sched_signal_cinit_named sig_cinit_named
7783
#define sched_signal_broadcast sig_broadcast
7884
#define sched_signal_broadcast_for_fini sig_broadcast_for_fini
7985
#define sched_signal_send sig_send
@@ -85,6 +91,8 @@ __SIZE_TYPE__ sched_signal_sendmany(sched_signal_t *__self, __SIZE_TYPE__ __max_
8591

8692
#define sched_signal_init(self) (*(self) = 0)
8793
#define sched_signal_cinit(self) (__hybrid_assert(*(self) == 0))
94+
#define sched_signal_init_named(self, name) sched_signal_init(self)
95+
#define sched_signal_cinit_named(self, name) sched_signal_cinit(self)
8896

8997
#ifdef __CRT_HAVE_futexlock_wakeall
9098
#define sched_signal_broadcast futexlock_wakeall

kos/include/kos/sched/shared-lock.h

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* HASH CRC-32:0x18d149c7 */
1+
/* HASH CRC-32:0xdaf3f771 */
22
/* Copyright (c) 2019-2025 Griefer@Work *
33
* *
44
* This software is provided 'as-is', without any express or implied *
@@ -53,24 +53,43 @@ __SYSDECL_BEGIN
5353

5454
#ifdef __KERNEL__
5555
#if __SIZEOF_INT__ < __SIZEOF_POINTER__
56-
#define SHARED_LOCK_INIT { 0, {}, SIG_INIT }
57-
#define SHARED_LOCK_INIT_LOCKED { 1, {}, SIG_INIT }
56+
#define SHARED_LOCK_INIT(self) { 0, {}, SIG_INIT(self.sl_sig) }
57+
#define SHARED_LOCK_INIT_LOCKED(self) { 1, {}, SIG_INIT(self.sl_sig) }
58+
#define SHARED_LOCK_INIT_NAMED(self, name) { 0, {}, SIG_INIT_NAMED(self, name ".sl_sig") }
59+
#define SHARED_LOCK_INIT_LOCKED_NAMED(self, name) { 1, {}, SIG_INIT_NAMED(self, name ".sl_sig") }
5860
#else /* __SIZEOF_INT__ < __SIZEOF_POINTER__ */
59-
#define SHARED_LOCK_INIT { 0, SIG_INIT }
60-
#define SHARED_LOCK_INIT_LOCKED { 1, SIG_INIT }
61+
#define SHARED_LOCK_INIT(self) { 0, SIG_INIT(self.sl_sig) }
62+
#define SHARED_LOCK_INIT_LOCKED(self) { 1, SIG_INIT(self.sl_sig) }
63+
#define SHARED_LOCK_INIT_NAMED(self, name) { 0, SIG_INIT_NAMED(name ".sl_sig") }
64+
#define SHARED_LOCK_INIT_LOCKED_NAMED(self, name) { 1, SIG_INIT_NAMED(name ".sl_sig") }
6165
#endif /* __SIZEOF_INT__ >= __SIZEOF_POINTER__ */
62-
#define shared_lock_init(self) (void)(sig_init(&(self)->sl_sig), (self)->sl_lock = 0)
63-
#define shared_lock_init_locked(self) (void)(sig_init(&(self)->sl_sig), (self)->sl_lock = 1)
64-
#define shared_lock_cinit(self) (void)(sig_cinit(&(self)->sl_sig), __hybrid_assert((self)->sl_lock == 0))
65-
#define shared_lock_cinit_locked(self) (void)(sig_cinit(&(self)->sl_sig), (self)->sl_lock = 1)
66+
#define shared_lock_init(self) (void)(sig_init(&(self)->sl_sig), (self)->sl_lock = 0)
67+
#define shared_lock_init_locked(self) (void)(sig_init(&(self)->sl_sig), (self)->sl_lock = 1)
68+
#define shared_lock_cinit(self) (void)(sig_cinit(&(self)->sl_sig), __hybrid_assert((self)->sl_lock == 0))
69+
#define shared_lock_cinit_locked(self) (void)(sig_cinit(&(self)->sl_sig), (self)->sl_lock = 1)
70+
#define shared_lock_init_named(self, name) (void)(sig_init_named(&(self)->sl_sig, name ".sl_sig"), (self)->sl_lock = 0)
71+
#define shared_lock_init_locked_named(self, name) (void)(sig_init_named(&(self)->sl_sig, name ".sl_sig"), (self)->sl_lock = 1)
72+
#define shared_lock_cinit_named(self, name) (void)(sig_cinit_named(&(self)->sl_sig, name ".sl_sig"), __hybrid_assert((self)->sl_lock == 0))
73+
#define shared_lock_cinit_locked_named(self, name) (void)(sig_cinit_named(&(self)->sl_sig, name ".sl_sig"), (self)->sl_lock = 1)
6674
#else /* __KERNEL__ */
67-
#define SHARED_LOCK_INIT { 0 }
68-
#define SHARED_LOCK_INIT_LOCKED { 1 }
69-
#define shared_lock_init(self) (void)((self)->sl_lock = 0)
70-
#define shared_lock_init_locked(self) (void)((self)->sl_lock = 1)
71-
#define shared_lock_cinit(self) (void)(__hybrid_assert((self)->sl_lock == 0))
72-
#define shared_lock_cinit_locked(self) (void)(__hybrid_assert((self)->sl_lock == 0), (self)->sl_lock = 1)
75+
#define SHARED_LOCK_INIT(self) { 0 }
76+
#define SHARED_LOCK_INIT_LOCKED(self) { 1 }
77+
#define SHARED_LOCK_INIT_NAMED(self, name) SHARED_LOCK_INIT(self)
78+
#define SHARED_LOCK_INIT_LOCKED_NAMED(self, name) SHARED_LOCK_INIT_LOCKED(self)
79+
#define shared_lock_init(self) (void)((self)->sl_lock = 0)
80+
#define shared_lock_init_locked(self) (void)((self)->sl_lock = 1)
81+
#define shared_lock_cinit(self) (void)(__hybrid_assert((self)->sl_lock == 0))
82+
#define shared_lock_cinit_locked(self) (void)(__hybrid_assert((self)->sl_lock == 0), (self)->sl_lock = 1)
83+
#define shared_lock_init_named(self, name) shared_lock_init(self)
84+
#define shared_lock_init_locked_named(self, name) shared_lock_init_locked(self)
85+
#define shared_lock_cinit_named(self, name) shared_lock_cinit(self)
86+
#define shared_lock_cinit_locked_named(self, name) shared_lock_cinit_locked(self)
7387
#endif /* !__KERNEL__ */
88+
#define DEFINE_SHARED_LOCK(self) struct shared_lock self = SHARED_LOCK_INIT(self)
89+
#define DEFINE_SHARED_LOCK_LOCKED(self) struct shared_lock self = SHARED_LOCK_INIT_LOCKED(self)
90+
#define DEFINE_SHARED_LOCK_NAMED(self, name) struct shared_lock self = SHARED_LOCK_INIT_NAMED(self, name)
91+
#define DEFINE_SHARED_LOCK_LOCKED_NAMED(self, name) struct shared_lock self = SHARED_LOCK_INIT_LOCKED_NAMED(self, name)
92+
7493
#define shared_lock_acquired(self) (!__shared_lock_available(self))
7594
#define shared_lock_available(self) __shared_lock_available(self)
7695
#ifdef __KERNEL__

kos/include/kos/sched/shared-recursive-lock.h

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* HASH CRC-32:0x3c0f4c24 */
1+
/* HASH CRC-32:0x6a4f6ad6 */
22
/* Copyright (c) 2019-2025 Griefer@Work *
33
* *
44
* This software is provided 'as-is', without any express or implied *
@@ -54,17 +54,23 @@ __SYSDECL_BEGIN
5454
* rationale, see `<kos/sched/shared-recursive-rwlock.h>'.
5555
*/
5656

57-
#define SHARED_RECURSIVE_LOCK_INIT { SHARED_LOCK_INIT, __SHARED_RECURSIVE_LOCK_BADTID, 0 }
58-
#define shared_recursive_lock_init(self) (void)(shared_lock_init(&(self)->sr_lock), (self)->sr_owner = __SHARED_RECURSIVE_LOCK_BADTID, (self)->sr_rcnt = 0)
57+
#define SHARED_RECURSIVE_LOCK_INIT(self) { SHARED_LOCK_INIT(self.sr_lock), __SHARED_RECURSIVE_LOCK_BADTID, 0 }
58+
#define SHARED_RECURSIVE_LOCK_INIT_NAMED(self, name) { SHARED_LOCK_INIT_NAMED(self.sr_lock, name ".sr_lock"), __SHARED_RECURSIVE_LOCK_BADTID, 0 }
59+
#define shared_recursive_lock_init(self) (void)(shared_lock_init(&(self)->sr_lock), (self)->sr_owner = __SHARED_RECURSIVE_LOCK_BADTID, (self)->sr_rcnt = 0)
60+
#define shared_recursive_lock_init_named(self, name) (void)(shared_lock_init_named(&(self)->sr_lock, name ".sr_lock"), (self)->sr_owner = __SHARED_RECURSIVE_LOCK_BADTID, (self)->sr_rcnt = 0)
5961
#ifdef __SHARED_RECURSIVE_LOCK_BADTID_ISZERO
60-
#define shared_recursive_lock_cinit(self) (shared_lock_cinit(&(self)->sr_lock), __hybrid_assert((self)->sr_owner == __SHARED_RECURSIVE_LOCK_BADTID), __hybrid_assert((self)->sr_rcnt == 0))
62+
#define shared_recursive_lock_cinit(self) (shared_lock_cinit(&(self)->sr_lock), __hybrid_assert((self)->sr_owner == __SHARED_RECURSIVE_LOCK_BADTID), __hybrid_assert((self)->sr_rcnt == 0))
63+
#define shared_recursive_lock_cinit_named(self, name) (shared_lock_cinit_named(&(self)->sr_lock, name ".sr_lock"), __hybrid_assert((self)->sr_owner == __SHARED_RECURSIVE_LOCK_BADTID), __hybrid_assert((self)->sr_rcnt == 0))
6164
#else /* __SHARED_RECURSIVE_LOCK_BADTID_ISZERO */
62-
#define shared_recursive_lock_cinit(self) (shared_lock_cinit(&(self)->sr_lock), (self)->sr_owner = __SHARED_RECURSIVE_LOCK_BADTID, __hybrid_assert((self)->sr_rcnt == 0))
65+
#define shared_recursive_lock_cinit(self) (shared_lock_cinit(&(self)->sr_lock), (self)->sr_owner = __SHARED_RECURSIVE_LOCK_BADTID, __hybrid_assert((self)->sr_rcnt == 0))
66+
#define shared_recursive_lock_cinit_named(self, name) (shared_lock_cinit_named(&(self)->sr_lock, name ".sr_lock"), (self)->sr_owner = __SHARED_RECURSIVE_LOCK_BADTID, __hybrid_assert((self)->sr_rcnt == 0))
6367
#endif /* !__SHARED_RECURSIVE_LOCK_BADTID_ISZERO */
6468
#ifdef shared_lock_broadcast_for_fini
6569
#define shared_recursive_lock_broadcast_for_fini(self) \
6670
shared_lock_broadcast_for_fini(&(self)->sr_lock)
6771
#endif /* shared_lock_broadcast_for_fini */
72+
#define DEFINE_SHARED_RECURSIVE_LOCK(self) struct shared_recursive_lock self = SHARED_RECURSIVE_LOCK_INIT(self)
73+
#define DEFINE_SHARED_RECURSIVE_LOCK_NAMED(self, name) struct shared_recursive_lock self = SHARED_RECURSIVE_LOCK_INIT_NAMED(self, name)
6874

6975
/* Check if locking is possible, or a lock is being held. */
7076
#define shared_recursive_lock_available(self) (shared_lock_available(&(self)->sr_lock) || __shared_recursive_lock_isown(self))

kos/include/kos/sched/shared-recursive-rwlock.h

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* HASH CRC-32:0xbad572fd */
1+
/* HASH CRC-32:0x80470306 */
22
/* Copyright (c) 2019-2025 Griefer@Work *
33
* *
44
* This software is provided 'as-is', without any express or implied *
@@ -71,21 +71,34 @@ __SYSDECL_BEGIN
7171
* able to do recursive write-locks.
7272
*/
7373

74-
#define SHARED_RECURSIVE_RWLOCK_INIT { SHARED_RWLOCK_INIT, __SHARED_RECURSIVE_RWLOCK_BADTID, 0 }
75-
#define SHARED_RECURSIVE_RWLOCK_INIT_READ { SHARED_RWLOCK_INIT_READ, __SHARED_RECURSIVE_RWLOCK_BADTID, 0 }
76-
#define shared_recursive_rwlock_init(self) (void)(shared_rwlock_init(&(self)->srr_lock), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, (self)->srr_wrcnt = 0)
77-
#define shared_recursive_rwlock_init_read(self) (void)(shared_rwlock_init_read(&(self)->srr_lock), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, (self)->srr_wrcnt = 0)
78-
#define shared_recursive_rwlock_init_write(self) (void)(shared_rwlock_init_write(&(self)->srr_lock), __shared_recursive_rwlock_setown(self))
74+
#define SHARED_RECURSIVE_RWLOCK_INIT(self) { SHARED_RWLOCK_INIT(self.srr_lock), __SHARED_RECURSIVE_RWLOCK_BADTID, 0 }
75+
#define SHARED_RECURSIVE_RWLOCK_INIT_READ(self) { SHARED_RWLOCK_INIT_READ(self.srr_lock), __SHARED_RECURSIVE_RWLOCK_BADTID, 0 }
76+
#define SHARED_RECURSIVE_RWLOCK_INIT_NAMED(self, name) { SHARED_RWLOCK_INIT_NAMED(self.srr_lock, name ".srr_lock"), __SHARED_RECURSIVE_RWLOCK_BADTID, 0 }
77+
#define SHARED_RECURSIVE_RWLOCK_INIT_READ_NAMED(self, name) { SHARED_RWLOCK_INIT_READ_NAMED(self.srr_lock, name ".srr_lock"), __SHARED_RECURSIVE_RWLOCK_BADTID, 0 }
78+
#define shared_recursive_rwlock_init(self) (void)(shared_rwlock_init(&(self)->srr_lock), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, (self)->srr_wrcnt = 0)
79+
#define shared_recursive_rwlock_init_read(self) (void)(shared_rwlock_init_read(&(self)->srr_lock), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, (self)->srr_wrcnt = 0)
80+
#define shared_recursive_rwlock_init_write(self) (void)(shared_rwlock_init_write(&(self)->srr_lock), __shared_recursive_rwlock_setown(self))
81+
#define shared_recursive_rwlock_init_named(self, name) (void)(shared_rwlock_init_named(&(self)->srr_lock, name ".srr_lock"), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, (self)->srr_wrcnt = 0)
82+
#define shared_recursive_rwlock_init_read_named(self, name) (void)(shared_rwlock_init_read_named(&(self)->srr_lock, name ".srr_lock"), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, (self)->srr_wrcnt = 0)
83+
#define shared_recursive_rwlock_init_write_named(self, name) (void)(shared_rwlock_init_write_named(&(self)->srr_lock, name ".srr_lock"), __shared_recursive_rwlock_setown(self))
7984
#ifdef __SHARED_RECURSIVE_RWLOCK_BADTID_ISZERO
80-
#define shared_recursive_rwlock_cinit(self) (shared_rwlock_cinit(&(self)->srr_lock), __hybrid_assert((self)->srr_writer == __SHARED_RECURSIVE_RWLOCK_BADTID), __hybrid_assert((self)->srr_wrcnt == 0))
81-
#define shared_recursive_rwlock_cinit_read(self) (shared_rwlock_cinit_read(&(self)->srr_lock), __hybrid_assert((self)->srr_writer == __SHARED_RECURSIVE_RWLOCK_BADTID), __hybrid_assert((self)->srr_wrcnt == 0))
85+
#define shared_recursive_rwlock_cinit(self) (shared_rwlock_cinit(&(self)->srr_lock), __hybrid_assert((self)->srr_writer == __SHARED_RECURSIVE_RWLOCK_BADTID), __hybrid_assert((self)->srr_wrcnt == 0))
86+
#define shared_recursive_rwlock_cinit_read(self) (shared_rwlock_cinit_read(&(self)->srr_lock), __hybrid_assert((self)->srr_writer == __SHARED_RECURSIVE_RWLOCK_BADTID), __hybrid_assert((self)->srr_wrcnt == 0))
87+
#define shared_recursive_rwlock_cinit_named(self, name) (shared_rwlock_cinit_named(&(self)->srr_lock, name ".srr_lock"), __hybrid_assert((self)->srr_writer == __SHARED_RECURSIVE_RWLOCK_BADTID), __hybrid_assert((self)->srr_wrcnt == 0))
88+
#define shared_recursive_rwlock_cinit_read_named(self, name) (shared_rwlock_cinit_read_named(&(self)->srr_lock, name ".srr_lock"), __hybrid_assert((self)->srr_writer == __SHARED_RECURSIVE_RWLOCK_BADTID), __hybrid_assert((self)->srr_wrcnt == 0))
8289
#else /* __SHARED_RECURSIVE_RWLOCK_BADTID_ISZERO */
83-
#define shared_recursive_rwlock_cinit(self) (shared_rwlock_cinit(&(self)->srr_lock), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, __hybrid_assert((self)->srr_wrcnt == 0))
84-
#define shared_recursive_rwlock_cinit_read(self) (shared_rwlock_cinit_read(&(self)->srr_lock), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, __hybrid_assert((self)->srr_wrcnt == 0))
90+
#define shared_recursive_rwlock_cinit(self) (shared_rwlock_cinit(&(self)->srr_lock), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, __hybrid_assert((self)->srr_wrcnt == 0))
91+
#define shared_recursive_rwlock_cinit_read(self) (shared_rwlock_cinit_read(&(self)->srr_lock), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, __hybrid_assert((self)->srr_wrcnt == 0))
92+
#define shared_recursive_rwlock_cinit_named(self, name) (shared_rwlock_cinit_named(&(self)->srr_lock, name ".srr_lock"), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, __hybrid_assert((self)->srr_wrcnt == 0))
93+
#define shared_recursive_rwlock_cinit_read_named(self, name) (shared_rwlock_cinit_read_named(&(self)->srr_lock, name ".srr_lock"), (self)->srr_writer = __SHARED_RECURSIVE_RWLOCK_BADTID, __hybrid_assert((self)->srr_wrcnt == 0))
8594
#endif /* !__SHARED_RECURSIVE_RWLOCK_BADTID_ISZERO */
86-
#define shared_recursive_rwlock_cinit_write(self) (void)(shared_rwlock_cinit_write(&(self)->srr_lock), __shared_recursive_rwlock_setown(self))
87-
#define shared_recursive_rwlock_broadcast_for_fini(self) \
88-
shared_rwlock_broadcast_for_fini(&(self)->srr_lock)
95+
#define shared_recursive_rwlock_cinit_write(self) (void)(shared_rwlock_cinit_write(&(self)->srr_lock), __shared_recursive_rwlock_setown(self))
96+
#define shared_recursive_rwlock_cinit_write_named(self, name) (void)(shared_rwlock_cinit_write_named(&(self)->srr_lock, name ".srr_lock"), __shared_recursive_rwlock_setown(self))
97+
#define shared_recursive_rwlock_broadcast_for_fini(self) shared_rwlock_broadcast_for_fini(&(self)->srr_lock)
98+
#define DEFINE_SHARED_RECURSIVE_RWLOCK(self) struct shared_recursive_rwlock self = SHARED_RECURSIVE_RWLOCK_INIT(self)
99+
#define DEFINE_SHARED_RECURSIVE_RWLOCK_READ(self) struct shared_recursive_rwlock self = SHARED_RECURSIVE_RWLOCK_INIT_READ(self)
100+
#define DEFINE_SHARED_RECURSIVE_RWLOCK_NAMED(self, name) struct shared_recursive_rwlock self = SHARED_RECURSIVE_RWLOCK_INIT_NAMED(self, name)
101+
#define DEFINE_SHARED_RECURSIVE_RWLOCK_READ_NAMED(self, name) struct shared_recursive_rwlock self = SHARED_RECURSIVE_RWLOCK_INIT_READ_NAMED(self, name)
89102

90103
/* Check if reading/writing is possible, or a read/write lock is being held. */
91104
#define shared_recursive_rwlock_canread(self) (shared_rwlock_canread(&(self)->srr_lock) || __shared_recursive_rwlock_isown(self))

0 commit comments

Comments
 (0)