From 749df8aa6b57d818f9906392b7c3dd7f1f6bb5e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 27 Jun 2003 16:39:33 +0000 Subject: [PATCH] Added a benaphore_lock_etc() for a timeout possibility. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3690 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/lock.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/headers/private/kernel/lock.h b/headers/private/kernel/lock.h index b2b519fd4c..6a61ab72b4 100755 --- a/headers/private/kernel/lock.h +++ b/headers/private/kernel/lock.h @@ -61,6 +61,16 @@ extern void mutex_unlock(mutex *m); extern status_t benaphore_init(benaphore *ben, const char *name); extern void benaphore_destroy(benaphore *ben); +static inline status_t +benaphore_lock_etc(benaphore *ben, uint32 flags, bigtime_t timeout) +{ + if (atomic_add(&ben->count, -1) <= 0) + return acquire_sem_etc(ben->sem, 1, flags, timeout); + + return B_OK; +} + + static inline status_t benaphore_lock(benaphore *ben) {