* The rw_lock now behaves just like a recursive locker if KDEBUG_RW_LOCK_DEBUG
is defined to 1; this allows asserting the read lock case, too.
* Added ASSERT_{READ|WRITE}_LOCKED_RW_LOCK() macros. The read assertion is only
working when KDEBUG_RW_LOCK_DEBUG is defined to 1, the write assertion works
always.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26686 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -54,12 +54,25 @@ typedef struct rw_lock {
|
||||
|
||||
|
||||
#if KDEBUG
|
||||
# define KDEBUG_RW_LOCK_DEBUG 0
|
||||
// Define to 1 if you want to use ASSERT_READ_LOCKED_RW_LOCK().
|
||||
// The rw_lock will just behave like a recursive locker then.
|
||||
# define ASSERT_LOCKED_RECURSIVE(r) \
|
||||
{ ASSERT(find_thread(NULL) == (r)->lock.holder); }
|
||||
# define ASSERT_LOCKED_MUTEX(m) { ASSERT(find_thread(NULL) == (m)->holder); }
|
||||
# define ASSERT_WRITE_LOCKED_RW_LOCK(l) \
|
||||
{ ASSERT(find_thread(NULL) == (l)->holder); }
|
||||
# if KDEBUG_RW_LOCK_DEBUG
|
||||
# define ASSERT_READ_LOCKED_RW_LOCK(l) \
|
||||
{ ASSERT(find_thread(NULL) == (l)->holder); }
|
||||
# else
|
||||
# define ASSERT_READ_LOCKED_RW_LOCK(l) do {} while (false)
|
||||
# endif
|
||||
#else
|
||||
# define ASSERT_LOCKED_RECURSIVE(r) do {} while (false)
|
||||
# define ASSERT_LOCKED_MUTEX(m) do {} while (false)
|
||||
# define ASSERT_LOCKED_RECURSIVE(r) do {} while (false)
|
||||
# define ASSERT_LOCKED_MUTEX(m) do {} while (false)
|
||||
# define ASSERT_WRITE_LOCKED_RW_LOCK(m) do {} while (false)
|
||||
# define ASSERT_READ_LOCKED_RW_LOCK(l) do {} while (false)
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user