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