From a7dea2c5d51c4c259b1da866b8f624b44acd657b Mon Sep 17 00:00:00 2001 From: Daniil Tatianin <99danilt@gmail.com> Date: Tue, 6 Oct 2026 15:19:29 +0300 Subject: [PATCH 001/152] locking: move the locks into kernel/locking The spinlock, the mutex and the seqlock were in the kernel root for lack of a home, and the reader-writer locks to come would have joined them there. The headers move to . Signed-off-by: Daniil Tatianin <99danilt@gmail.com> --- kernel/CMakeLists.txt | 3 +-- kernel/arch/x86_64/ioapic.c | 2 +- kernel/arch/x86_64/pci_type1.c | 2 +- kernel/arch/x86_64/vector_alloc.c | 2 +- kernel/include/{ => locking}/mutex.h | 2 +- kernel/include/{ => locking}/seq.h | 2 +- kernel/include/{ => locking}/spinlock.h | 0 kernel/include/memory/alloc_cache.h | 2 +- kernel/include/memory/page.h | 2 +- kernel/include/private/irq.h | 2 +- kernel/irq/request.c | 2 +- kernel/locking/CMakeLists.txt | 4 ++++ kernel/{ => locking}/mutex.c | 2 +- kernel/{ => locking}/spinlock.c | 2 +- kernel/memory/alloc.c | 2 +- kernel/memory/buddy.c | 2 +- kernel/memory/page_table.c | 2 +- kernel/memory/valloc.c | 2 +- kernel/time/counter_device.c | 2 +- kernel/time/keeper.c | 4 ++-- tests/CMakeLists.txt | 16 +++++++++++----- tests/test-cases/test_mutex.c | 2 +- 22 files changed, 35 insertions(+), 26 deletions(-) rename kernel/include/{ => locking}/mutex.h (95%) rename kernel/include/{ => locking}/seq.h (98%) rename kernel/include/{ => locking}/spinlock.h (100%) create mode 100644 kernel/locking/CMakeLists.txt rename kernel/{ => locking}/mutex.c (95%) rename kernel/{ => locking}/spinlock.c (98%) diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 4e57b995..e37be5e9 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -103,8 +103,6 @@ ultra_sources( console.c log.c symbols.c - spinlock.c - mutex.c unwind.c param.c log_ring.c @@ -167,6 +165,7 @@ ultra_link_options( add_subdirectory(arch/${ULTRA_ARCH}) add_subdirectory(common) +add_subdirectory(locking) add_subdirectory(irq) add_subdirectory(memory) add_subdirectory(time) diff --git a/kernel/arch/x86_64/ioapic.c b/kernel/arch/x86_64/ioapic.c index 65cb19cd..4cf7b1a0 100644 --- a/kernel/arch/x86_64/ioapic.c +++ b/kernel/arch/x86_64/ioapic.c @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include diff --git a/kernel/arch/x86_64/pci_type1.c b/kernel/arch/x86_64/pci_type1.c index b38bbd22..17d8d69e 100644 --- a/kernel/arch/x86_64/pci_type1.c +++ b/kernel/arch/x86_64/pci_type1.c @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include diff --git a/kernel/arch/x86_64/vector_alloc.c b/kernel/arch/x86_64/vector_alloc.c index 78de1541..20f4b7ba 100644 --- a/kernel/arch/x86_64/vector_alloc.c +++ b/kernel/arch/x86_64/vector_alloc.c @@ -2,7 +2,7 @@ #include #include -#include +#include #include #include diff --git a/kernel/include/mutex.h b/kernel/include/locking/mutex.h similarity index 95% rename from kernel/include/mutex.h rename to kernel/include/locking/mutex.h index a6a54da2..be727b0a 100644 --- a/kernel/include/mutex.h +++ b/kernel/include/locking/mutex.h @@ -1,6 +1,6 @@ #pragma once -#include +#include /* * A mutual exclusion lock for process context only. Holders are diff --git a/kernel/include/seq.h b/kernel/include/locking/seq.h similarity index 98% rename from kernel/include/seq.h rename to kernel/include/locking/seq.h index 7c4ed5ed..b8221afb 100644 --- a/kernel/include/seq.h +++ b/kernel/include/locking/seq.h @@ -3,7 +3,7 @@ #include #include -#include +#include #include #include diff --git a/kernel/include/spinlock.h b/kernel/include/locking/spinlock.h similarity index 100% rename from kernel/include/spinlock.h rename to kernel/include/locking/spinlock.h diff --git a/kernel/include/memory/alloc_cache.h b/kernel/include/memory/alloc_cache.h index 8b837a4e..adaae0f7 100644 --- a/kernel/include/memory/alloc_cache.h +++ b/kernel/include/memory/alloc_cache.h @@ -5,7 +5,7 @@ #include -#include +#include struct alloc_cache { const char *name; diff --git a/kernel/include/memory/page.h b/kernel/include/memory/page.h index 5a744748..cffbf9c4 100644 --- a/kernel/include/memory/page.h +++ b/kernel/include/memory/page.h @@ -40,7 +40,7 @@ #include #include #include -#include +#include /* * Page type values are split into two main categories: diff --git a/kernel/include/private/irq.h b/kernel/include/private/irq.h index 5db30bf1..897f0179 100644 --- a/kernel/include/private/irq.h +++ b/kernel/include/private/irq.h @@ -6,7 +6,7 @@ #include #include -#include +#include #include struct irq_domain; diff --git a/kernel/irq/request.c b/kernel/irq/request.c index cc222e86..0ae393ae 100644 --- a/kernel/irq/request.c +++ b/kernel/irq/request.c @@ -3,7 +3,7 @@ #include #include -#include +#include #include #include #include diff --git a/kernel/locking/CMakeLists.txt b/kernel/locking/CMakeLists.txt new file mode 100644 index 00000000..cfb50c51 --- /dev/null +++ b/kernel/locking/CMakeLists.txt @@ -0,0 +1,4 @@ +ultra_sources( + spinlock.c + mutex.c +) diff --git a/kernel/mutex.c b/kernel/locking/mutex.c similarity index 95% rename from kernel/mutex.c rename to kernel/locking/mutex.c index c28c7d8d..24ddb1ef 100644 --- a/kernel/mutex.c +++ b/kernel/locking/mutex.c @@ -1,4 +1,4 @@ -#include +#include #include #include diff --git a/kernel/spinlock.c b/kernel/locking/spinlock.c similarity index 98% rename from kernel/spinlock.c rename to kernel/locking/spinlock.c index 51083632..6e6a84de 100644 --- a/kernel/spinlock.c +++ b/kernel/locking/spinlock.c @@ -1,7 +1,7 @@ #include #include -#include +#include #include #define CURRENT_TICKET_SHIFT 16 diff --git a/kernel/memory/alloc.c b/kernel/memory/alloc.c index 7f88dd3a..002f20c9 100644 --- a/kernel/memory/alloc.c +++ b/kernel/memory/alloc.c @@ -15,7 +15,7 @@ #include #include -#include +#include #include #include #include diff --git a/kernel/memory/buddy.c b/kernel/memory/buddy.c index 71cf1b2a..5412d157 100644 --- a/kernel/memory/buddy.c +++ b/kernel/memory/buddy.c @@ -17,7 +17,7 @@ #include #include -#include +#include #include #define BUDDY_NUM_ORDERS (BUDDY_MAX_ORDER + 1) diff --git a/kernel/memory/page_table.c b/kernel/memory/page_table.c index 29e518eb..32fcc9d5 100644 --- a/kernel/memory/page_table.c +++ b/kernel/memory/page_table.c @@ -1,7 +1,7 @@ #include #include -#include +#include #define MAKE_GENERIC_PTN_POPULATE_IMPL(lvl, child_lvl) \ bool pt##lvl##_populate( \ diff --git a/kernel/memory/valloc.c b/kernel/memory/valloc.c index 6d5f4268..038b598c 100644 --- a/kernel/memory/valloc.c +++ b/kernel/memory/valloc.c @@ -27,7 +27,7 @@ #include #include -#include +#include #include #include diff --git a/kernel/time/counter_device.c b/kernel/time/counter_device.c index 818a5c8f..fdc167d6 100644 --- a/kernel/time/counter_device.c +++ b/kernel/time/counter_device.c @@ -8,7 +8,7 @@ #include #include -#include +#include static LIST_HEAD(s_counter_devices); static DEFINE_SPINLOCK(s_counter_lock); diff --git a/kernel/time/keeper.c b/kernel/time/keeper.c index 194b1a2e..46d0b28a 100644 --- a/kernel/time/keeper.c +++ b/kernel/time/keeper.c @@ -5,8 +5,8 @@ #include #include -#include -#include +#include +#include #include