Spinlock save cpu flags

This commit is contained in:
2026-03-12 22:48:34 +01:00
parent 19793e9126
commit 4760818118
50 changed files with 704 additions and 461 deletions

View File

@@ -2,9 +2,13 @@
#include <sync/spin_lock.h>
#include <sys/spin_lock.h>
void spin_lock (spin_lock_t* sl) {
void spin_lock (spin_lock_t* sl, uint64_t* flags) {
spin_lock_save_flags (flags);
while (atomic_flag_test_and_set_explicit (sl, memory_order_acquire))
spin_lock_relax ();
}
void spin_unlock (spin_lock_t* sl) { atomic_flag_clear_explicit (sl, memory_order_release); }
void spin_unlock (spin_lock_t* sl, uint64_t flags) {
atomic_flag_clear_explicit (sl, memory_order_release);
spin_lock_restore_flags (flags);
}

View File

@@ -8,7 +8,8 @@
typedef atomic_flag spin_lock_t;
void spin_lock (spin_lock_t* sl);
void spin_unlock (spin_lock_t* sl);
void spin_lock (spin_lock_t* sl, uint64_t* flags);
void spin_unlock (spin_lock_t* sl, uint64_t flags);
#endif // _KERNEL_SYNC_SPIN_LOCK_H