Loïc Grégoire
bec872bc26
all: refactor coding style
2026-08-05 17:43:46 -04:00
Loïc Grégoire
2a09642f4d
ke: rework kernel initialization
2026-08-05 16:10:37 -04:00
Loïc Grégoire
4aaae63349
ke: add generic IPI mechanism
2026-08-03 20:00:45 -04:00
Loïc Grégoire
312902931f
ps: fix stack freeing bug
...
The thread could still be running on its stack whenever the stack ends
up getting reaped, which would free and reuse the stack before it
stops being used. Lock and unlock the thread to wait until it finishes
switching.
2026-08-02 21:45:47 -04:00
Loïc Grégoire
e36416304b
all: type-safe time units
2026-08-02 00:02:44 -04:00
Loïc Grégoire
24372a2b4e
ke/wait: add wait_reason
2026-08-02 00:02:00 -04:00
Loïc Grégoire
05c7694776
ke/wait: make timeout parameter explicit
2026-08-01 22:44:22 -04:00
Loïc Grégoire
02d2fb5144
ke/timer: make DPC parameter explicit
2026-08-01 22:43:32 -04:00
Loïc Grégoire
00d69c4a18
ex: add string interning
2026-08-01 19:11:31 -04:00
Loïc Grégoire
f37ca349dd
rcu/hashtable: make init take a struct
2026-08-01 19:11:08 -04:00
Loïc Grégoire
5bba618575
mm/zone: more SMR features
2026-08-01 19:10:26 -04:00
Loïc Grégoire
9394197e32
all: make memory model saner
2026-08-01 11:03:29 -04:00
Loïc Grégoire
b9819487fa
rcu/hashtable: more comments
2026-08-01 10:15:37 -04:00
Loïc Grégoire
fe0f4ce4cd
rcu: add hashtable
2026-08-01 10:07:24 -04:00
Loïc Grégoire
0f0ddffb2c
ex: add DelayedWorkItem
...
Separate WorkItem from DelayedWorkItem so that the former doesn't pay
the price of a timer and a Dpc if it won't ever get delayed.
2026-08-01 09:53:17 -04:00
Loïc Grégoire
1569bc2b29
ke/smr: fix compile errors
2026-07-27 19:37:41 -04:00
Loïc Grégoire
9c48a5207c
ke/smr: expose simpler APIs
2026-07-26 20:41:01 -04:00
Loïc Grégoire
1dedb5dba1
tests: add tests
2026-07-24 19:56:25 -04:00
Loïc Grégoire
092616d1c2
ke/smr: make tracker struct smaller
2026-07-24 19:55:07 -04:00
Loïc Grégoire
2d8fc2a6f0
ke/sched: update priority in clock()
2026-07-24 19:50:58 -04:00
Loïc Grégoire
a969624f20
ke/smr: add support for preemptible SMR
2026-07-23 16:39:43 -04:00
Loïc Grégoire
e4621e03c1
ke/turnstile: add support for multiple owners
2026-07-23 16:38:59 -04:00
Loïc Grégoire
85b0ee5320
ke/sched: fix promotion path
...
Threads that get promoted should preempt the next thread if possible.
2026-07-23 16:37:30 -04:00
Loïc Grégoire
00ae1a21f2
rtl: add consts to List
2026-07-22 17:00:13 -04:00
Loïc Grégoire
5a30511866
ke/sched: fix priority formula
...
Hogs got promoted while other threads got demoted :(
2026-07-22 16:59:42 -04:00
Loïc Grégoire
8b92a302a2
mm/zone: remove slab coloring
...
This simplifies the code and fixes a race condition where the color
was read and updated without taking the zone lock in slab_create().
I don't think coloring is very useful these days anyway.
2026-07-20 20:46:00 -04:00
Loïc Grégoire
878be31c7a
ke/sched: fix lock inversion in scheduler
...
Taking next's lock can be a lock inversion with the turnstile code.
Use a switching field instead and spin on that.
2026-07-19 20:40:50 -04:00
Loïc Grégoire
ea33fcab30
mm/zone: add SMR zones
2026-07-19 16:51:22 -04:00
Loïc Grégoire
6284ba7824
ke/smr: add deferred advance
2026-07-19 16:28:09 -04:00
Loïc Grégoire
3ffca18054
ke: initial SMR implementation
2026-07-19 11:27:42 -04:00
Loïc Grégoire
a954844eca
rtl: add acq barrier
2026-07-19 11:27:33 -04:00
Loïc Grégoire
a2c2e833be
ex/work: dynamic thread spawning
2026-07-18 21:24:16 -04:00
Loïc Grégoire
c1043f224a
ex: rename workqueue to work
2026-07-18 16:48:03 -04:00
Loïc Grégoire
782196275b
mm+ke: make shootdowns use HandoffList
2026-07-18 16:45:32 -04:00
Loïc Grégoire
d21cefaf10
ke/spinlock: use std.atomic
2026-07-18 16:11:05 -04:00
Loïc Grégoire
fddd9865f7
ke/mutex: do TTAS spin
...
This is better to do than `pause`-ing in a CAS loop.
2026-07-18 16:08:34 -04:00
Loïc Grégoire
89259141bb
loader: pass cmdline (oops)
2026-07-18 14:42:54 -04:00
Loïc Grégoire
301946c774
all: use root boot info pointer
2026-07-18 14:41:30 -04:00
Loïc Grégoire
072239dc32
loader: detect CPU features
2026-07-18 14:37:30 -04:00
Loïc Grégoire
96d2bee857
loader: map pfndb and cleanup
2026-07-18 14:06:36 -04:00
Loïc Grégoire
3c72101228
rework entry point
2026-07-17 21:26:13 -04:00
Loïc Grégoire
a79c7a07cb
loader: initial loader code
2026-07-16 19:48:01 -04:00
Loïc Grégoire
26ec72fb36
ke: many scheduler improvements
...
Added:
- PELT
- Decaying CPU affinity
- Better load-balancing metrics overall
- Better comments
And refined overall scheduler behavior
2026-07-12 21:46:16 -04:00
Loïc Grégoire
f9b2eeffb0
build: add arch module to docs
2026-07-12 18:16:49 -04:00
Loïc Grégoire
f6dec9f334
rtl: fix LinkerSet on release builds
...
LLVM seemed to like doing DCE on those symbols, so export them to
ensure they are used. The `Tag` mess is because we need to generate
a unique symbol name, and the pointer cast is so we can export e.g zig
functions. This is messy.
2026-07-12 17:15:48 -04:00
Loïc Grégoire
2a38cd4f4d
ke/turnstile: fix a bunch of bugs
2026-07-08 12:46:18 -04:00
Loïc Grégoire
5fbc61ecb1
ke/mutex: fix possible use-after-free
...
A thread might get reaped between loading the owner and its state,
leading to a possible use-after-free.
2026-07-08 11:15:31 -04:00
Loïc Grégoire
898ceb171e
mm/zone: oops fix compile error
2026-07-05 20:24:47 -04:00
Loïc Grégoire
f416f3bf6c
mm/zone: pad CPUs to their own cache lines
2026-07-05 00:32:44 -04:00
Loïc Grégoire
ed7c449ad2
rtl: add CachePadded
2026-07-05 00:28:04 -04:00