diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-07 17:37:26 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-07 17:37:26 -0400 |
| commit | 434ddcd907832b1febc7d70e4faa52109c7eb3bd (patch) | |
| tree | 00c1ade91f9806d831f10e6006732b294e73f613 /sys/lock.c | |
| parent | 8d48bbd9746228b63bafa5f92b621998d7d8f3d3 (diff) | |
| download | jove-kernel-434ddcd907832b1febc7d70e4faa52109c7eb3bd.tar.gz jove-kernel-434ddcd907832b1febc7d70e4faa52109c7eb3bd.tar.bz2 jove-kernel-434ddcd907832b1febc7d70e4faa52109c7eb3bd.zip | |
add memory region object for better memory managment
Diffstat (limited to 'sys/lock.c')
| -rw-r--r-- | sys/lock.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/sys/lock.c b/sys/lock.c new file mode 100644 index 0000000..095a08e --- /dev/null +++ b/sys/lock.c @@ -0,0 +1,25 @@ +#include "lock.h" + +extern int _kernel_panic_unlock; + +void +take_mutex(atomic_flag *lock) +{ + if(_kernel_panic_unlock) return; + while(atomic_flag_test_and_set(lock)) { + __builtin_ia32_pause(); + } +} + +int +try_take_mutex(atomic_flag *lock) +{ + if(_kernel_panic_unlock) return 0; + return atomic_flag_test_and_set(lock); +} + +void +release_mutex(atomic_flag *lock) +{ + atomic_flag_clear(lock); +} |
