From a6eb4749435c116e9f2611abb401959834ef805d Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Sun, 9 Apr 2017 16:07:26 +0200 Subject: kern/semaphore: optimize for binary semaphores --- kern/semaphore.h | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'kern/semaphore.h') diff --git a/kern/semaphore.h b/kern/semaphore.h index db66af9b..01111856 100644 --- a/kern/semaphore.h +++ b/kern/semaphore.h @@ -66,7 +66,7 @@ semaphore_trywait(struct semaphore *semaphore) prev = semaphore_dec(semaphore); - if (prev == 0) { + if (unlikely(prev == 0)) { return ERROR_AGAIN; } @@ -86,11 +86,9 @@ semaphore_wait(struct semaphore *semaphore) prev = semaphore_dec(semaphore); - if (prev != 0) { - return; + if (unlikely(prev == 0)) { + semaphore_wait_slow(semaphore); } - - semaphore_wait_slow(semaphore); } /* @@ -108,11 +106,9 @@ semaphore_post(struct semaphore *semaphore) prev = semaphore_inc(semaphore); - if (prev != 0) { - return; + if (unlikely(prev == 0)) { + semaphore_post_slow(semaphore); } - - semaphore_post_slow(semaphore); } /* -- cgit v1.2.3