diff options
author | Ian Moffett <ian@osmora.org> | 2025-07-03 18:22:48 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-07-03 18:24:01 -0400 |
commit | 777e3da31b198ff16b89a1b684904d5a2101960a (patch) | |
tree | 48934558a88665a25afe1817b267e8469764fdfa | |
parent | 3a809b9faadfd0a8d898aede15cabfd24ee1a13f (diff) |
kernel: synch: Use md_pause() in spinwait loop
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r-- | sys/kern/kern_synch.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index 0d36d7f..497aff7 100644 --- a/sys/kern/kern_synch.c +++ b/sys/kern/kern_synch.c @@ -35,6 +35,7 @@ #include <sys/atomic.h> #include <sys/syslog.h> #include <sys/spinlock.h> +#include <machine/cdefs.h> #include <dev/timer.h> #include <string.h> @@ -83,7 +84,9 @@ spinlock_usleep(struct spinlock *lock, size_t usec_max) void spinlock_acquire(struct spinlock *lock) { - while (__atomic_test_and_set(&lock->lock, __ATOMIC_ACQUIRE)); + while (__atomic_test_and_set(&lock->lock, __ATOMIC_ACQUIRE)) { + md_pause(); + } } /* |