Commit Graph

117 Commits

Author SHA1 Message Date
Loïc Grégoire 52f62b8354 ke: optimize IPL operations 2026-08-07 15:41:12 -04:00
Loïc Grégoire 5bb264a9ae loader: rework kernel entry point 2026-08-07 15:40:58 -04:00
Loïc Grégoire 13375f294c ke/mutex: wrap lines 2026-08-05 17:52:17 -04:00
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 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 9394197e32 all: make memory model saner 2026-08-01 11:03:29 -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 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 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 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 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 a2c2e833be ex/work: dynamic thread spawning 2026-07-18 21:24:16 -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 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 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 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 2d18761822 rtl: add LinkerSet 2026-07-04 22:50:15 -04:00
Loïc Grégoire baf8516f34 ke: add tunables 2026-07-04 17:34:26 -04:00
Loïc Grégoire 4a03a10d0c everywhere: nuke UM 2026-07-02 20:01:12 -04:00
Loïc Grégoire 88d6fd10de ke: don't signal log event if high IPL 2026-07-01 13:02:07 -04:00
Loïc Grégoire 11c858c5e8 ke: add is_locked to mutex 2026-06-29 22:32:41 -04:00
Loïc Grégoire a9c933114d ps+ke: add thread reaping 2026-06-29 17:12:46 -04:00
Loïc Grégoire 25c770999f all: refactor imports 2026-06-27 10:55:19 -04:00
Loïc Grégoire f94098d0a5 ke: change mutex spinning policy 2026-06-27 10:06:17 -04:00
Loïc Grégoire 55b89c1880 ke: make thread state atomic 2026-06-27 09:57:12 -04:00
Loïc Grégoire 5353ab2e0b rtl: check all decls in interfaces 2026-06-27 09:17:25 -04:00
Loïc Grégoire 827f8b90d1 all: add console and logging machinery 2026-06-26 23:41:22 -04:00
Loïc Grégoire b67391e1f2 ke: use assert_interface for ki.impl 2026-06-26 17:46:25 -04:00
Loïc Grégoire 4ba57ad42a ke+mm: add TLB shootdown and memory reclamation. 2026-06-25 21:33:14 -04:00
Loïc Grégoire 3aa0daaee7 rtl: add AtomicBitmap 2026-06-20 13:56:54 -04:00
Loïc Grégoire 9e212277b5 ke: export Mutex 2026-06-20 12:08:59 -04:00
Loïc Grégoire 5ee68e2ddf ke: add Queue 2026-06-20 12:06:14 -04:00
Loïc Grégoire e50b1e0167 ps: initial process subsystem 2026-06-18 18:54:38 -04:00