diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2025-01-16 14:19:25 -0500 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2025-01-16 14:19:25 -0500 |
commit | 95bc3ed03bf192e3e62278850101fb94d46ab660 (patch) | |
tree | d7b17cde6f8fbda4442109ab495fcb96e5757a3e /src/ioq.c | |
parent | f04557374dd37a15842197ce075be600276d341d (diff) | |
download | bfs-95bc3ed03bf192e3e62278850101fb94d46ab660.tar.xz |
ioq: Don't unroll the spin loop
Diffstat (limited to 'src/ioq.c')
-rw-r--r-- | src/ioq.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -277,10 +277,13 @@ static struct ioq_monitor *ioq_slot_monitor(struct ioqq *ioqq, ioq_slot *slot) { /** Atomically wait for a slot to change. */ _noinline static uintptr_t ioq_slot_wait(struct ioqq *ioqq, ioq_slot *slot, uintptr_t value) { - // Try spinning a few times before blocking uintptr_t ret; + + // Try spinning a few times before blocking + _nounroll for (int i = 0; i < 10; ++i) { // Exponential backoff + _nounroll for (int j = 0; j < (1 << i); ++j) { spin_loop(); } |