Added a lazy_recursive_lock implementation -- identical to recursive_lock,

just using a lazy_mutex instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34341 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2009-11-29 11:14:50 +00:00
parent 6e06922908
commit 8bef23107e
2 changed files with 82 additions and 6 deletions
+20 -6
View File
@@ -60,12 +60,26 @@ typedef struct recursive_lock {
int recursion;
} recursive_lock;
extern status_t recursive_lock_init(recursive_lock *lock, const char *name);
extern void recursive_lock_destroy(recursive_lock *lock);
extern status_t recursive_lock_lock(recursive_lock *lock);
extern status_t recursive_lock_trylock(recursive_lock *lock);
extern void recursive_lock_unlock(recursive_lock *lock);
extern int32 recursive_lock_get_recursion(recursive_lock *lock);
status_t recursive_lock_init(recursive_lock *lock, const char *name);
void recursive_lock_destroy(recursive_lock *lock);
status_t recursive_lock_lock(recursive_lock *lock);
void recursive_lock_unlock(recursive_lock *lock);
int32 recursive_lock_get_recursion(recursive_lock *lock);
typedef struct lazy_recursive_lock {
lazy_mutex lock;
thread_id holder;
int recursion;
} lazy_recursive_lock;
status_t lazy_recursive_lock_init(lazy_recursive_lock *lock,
const char *name);
// name will not be cloned and must rename valid
void lazy_recursive_lock_destroy(lazy_recursive_lock *lock);
status_t lazy_recursive_lock_lock(lazy_recursive_lock *lock);
void lazy_recursive_lock_unlock(lazy_recursive_lock *lock);
int32 lazy_recursive_lock_get_recursion(lazy_recursive_lock *lock);
#ifdef __cplusplus
} // extern "C"