Commit Graph

47 Commits

Author SHA1 Message Date
Loïc Grégoire 6701f17fb1 ke: clean up wait after continuation 2026-10-04 11:37:52 -04:00
Loïc Grégoire b802919fc2 ke: add lock warden 2026-10-04 11:36:28 -04:00
Loïc Grégoire 8013e84d9f ke/sched: style fixes 2026-09-20 00:24:44 -04:00
Loïc Grégoire 7d871ca75f ke/sched: fix IPL window when stealing threads.
There was a window where a thread could get stolen from a CPU but never
enqueued, since IPL doesn't stay raised the whole time, and the CPU could
therefore get preempted. Keep IPL raised across the whole operation until the
thread is enqueued.
2026-09-20 00:12:54 -04:00
Loïc Grégoire e7655e9725 ke: fix scheduler deadlock on switching 2026-09-19 22:19:30 -04:00
Loïc Grégoire 497e08bd7b all: standardize suffixes
ki -> kep
mi -> mmp
2026-09-02 22:20:25 -04:00
Loïc Grégoire d640053477 ke: disable stack donation for realtime threads 2026-09-02 20:37:26 -04:00
Loïc Grégoire 8226a205a0 ke: add continuations 2026-08-29 20:03:22 -04:00
Loïc Grégoire 07b3893859 ke/sched: add pin helpers 2026-08-20 21:33:22 -04:00
Loïc Grégoire f6f20599ba ke/sched: add hard affinity cpumask 2026-08-20 21:19:50 -04:00
Loïc Grégoire 3204a5de6b ke/sched: make soft affinity tunable 2026-08-20 20:38:37 -04:00
Loïc Grégoire 0e48c47674 ke: move priority out of thread 2026-08-20 16:41:06 -04:00
Loïc Grégoire ee0c6aad67 ke: scheduler overhaul 2026-08-19 18:04:12 -04:00
Loïc Grégoire 5cd981070e ke/sched: check for pending DPCs in idle 2026-08-09 16:44:49 -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 02d2fb5144 ke/timer: make DPC parameter explicit 2026-08-01 22:43:32 -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 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 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 2d18761822 rtl: add LinkerSet 2026-07-04 22:50:15 -04:00
Loïc Grégoire a9c933114d ps+ke: add thread reaping 2026-06-29 17:12:46 -04:00
Loïc Grégoire 55b89c1880 ke: make thread state atomic 2026-06-27 09:57:12 -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 5ee68e2ddf ke: add Queue 2026-06-20 12:06:14 -04:00
Loïc Grégoire 42b10b886e ke: make DPC handlers take in DPC pointer as parameter 2026-06-18 10:38:31 -04:00
Loïc Grégoire 68e0f7f8f7 ke: add turnstile and mutex 2026-06-12 15:53:10 -04:00
Loïc Grégoire 6265a8dd0d ke: add mechanisms for updating priority 2026-05-22 22:08:12 -04:00
Loïc Grégoire 3a701067cd rtl: add BitMap
Adds a new BitMap type in rtl for static bitmaps, now used to back
ke.CpuMask.
2026-05-08 14:58:57 -04:00
Loïc Grégoire 764b446ef1 fix(ke/sched): fix various bugs 2026-05-02 12:13:46 -04:00
Loïc Grégoire a46782adca build: switch to zonfig 2026-04-24 10:35:53 -04:00
Loïc Grégoire b646115dfc refactor(ke): read_time_nano -> read_time 2026-04-19 08:41:26 -04:00
Loïc Grégoire a7e319c922 Revert "refactor: time -> clock"
This reverts commit 44cf08e57c.
2026-04-19 08:38:45 -04:00
Loïc Grégoire 8fc133cc3c feat: fireworks! 2026-04-18 20:44:52 -04:00
Loïc Grégoire 44cf08e57c refactor: time -> clock 2026-04-18 14:07:42 -04:00
Loïc Grégoire a1db75746a feat(pl/pc): add APIC timer support 2026-04-18 11:18:33 -04:00
Loïc Grégoire 1aa6743f43 refactor: use root instead of base 2026-04-17 20:58:25 -04:00
Loïc Grégoire 927ea2e1b8 fix(ke/sched): fix typo 2026-04-17 20:35:29 -04:00
Loïc Grégoire faf76ca485 refactor: remove ke.Cpu struct 2026-03-30 17:45:49 -04:00
Loïc Grégoire 35094cb298 style(ke): rename timecounter to time 2026-03-28 01:25:06 -04:00
Loïc Grégoire b89ee0e3e5 fix(ke): fix various scheduler bugs 2026-03-24 22:22:26 -04:00
Loïc Grégoire 47ce377d1b feat(ke): add load balancing 2026-03-24 08:06:56 -04:00
Loïc Grégoire 020e81f34b feat: use per-cpu sections 2026-03-23 20:29:34 -04:00
Loïc Grégoire 9e065ee023 initial commit 2026-03-21 22:47:06 -04:00