summaryrefslogtreecommitdiff
path: root/kern/spinlock_i.h
diff options
context:
space:
mode:
Diffstat (limited to 'kern/spinlock_i.h')
-rw-r--r--kern/spinlock_i.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/kern/spinlock_i.h b/kern/spinlock_i.h
index bf9bf2c7..444ced94 100644
--- a/kern/spinlock_i.h
+++ b/kern/spinlock_i.h
@@ -24,6 +24,7 @@
#include <kern/assert.h>
#include <kern/atomic.h>
#include <kern/error.h>
+#include <kern/macros.h>
#include <kern/spinlock_types.h>
#include <machine/cpu.h>
@@ -42,7 +43,7 @@ spinlock_lock_fast(struct spinlock *lock)
prev = atomic_cas_seq_cst(&lock->value, SPINLOCK_UNLOCKED, SPINLOCK_LOCKED);
- if (prev != SPINLOCK_UNLOCKED) {
+ if (unlikely(prev != SPINLOCK_UNLOCKED)) {
return ERROR_BUSY;
}
@@ -56,7 +57,7 @@ spinlock_unlock_fast(struct spinlock *lock)
prev = atomic_cas_seq_cst(&lock->value, SPINLOCK_LOCKED, SPINLOCK_UNLOCKED);
- if (prev != SPINLOCK_LOCKED) {
+ if (unlikely(prev != SPINLOCK_LOCKED)) {
return ERROR_BUSY;
}
@@ -74,7 +75,7 @@ spinlock_lock_common(struct spinlock *lock)
error = spinlock_lock_fast(lock);
- if (error) {
+ if (unlikely(error)) {
spinlock_lock_slow(lock);
}
}
@@ -86,7 +87,7 @@ spinlock_unlock_common(struct spinlock *lock)
error = spinlock_unlock_fast(lock);
- if (error) {
+ if (unlikely(error)) {
spinlock_unlock_slow(lock);
}
}