git.cappig.dev / apheleiaOS.git master

f088f3b746355e211c60105849d6d9d70d03c351 master
cappig <[email protected]> ยท 3 months ago
Modularize scheduler core and harden ownership flow

* Split the monolithic scheduler into focused modules for state/context, runqueue selection, wait queues, creation/cred, and tick/query paths while keeping the shared plumbing in scheduler_internal.h.

* Tighten multicore scheduling invariants with explicit running_cpu and handoff ownership checks, runqueue repair and migration paths, stricter context validation, and more robust wake, sleep, stop, continue, and waitpid handling.

* Expand scheduler observability through richer /dev/sched metrics, including ownership-conflict tracking, and align hot x86 wallclock, tick, and TLB counters to avoid SMP 64-bit access hazards.

* Remove the rc.local WM/clock autostart override now that runtime startup is expected to come from the main boot path.
91 files changed, 9719 insertions, 4214 deletions
freeze.png created
freeze.ppm created
freeze2.png created
freeze2.ppm created
kernel/arch/arch.h +10 -2
kernel/arch/x86/arch.c +167 -21
kernel/arch/x86/build/build.mk +1 -2
kernel/arch/x86/drivers/ahci.c +21 -19
kernel/arch/x86/drivers/ahci.h +1 -0
kernel/arch/x86/drivers/ata.c +143 -44
kernel/arch/x86/drivers/serial.c +29 -7
kernel/arch/x86/drivers/usb_xhci_event.c +3 -3
kernel/arch/x86/drivers/usb_xhci_init.c +5 -15
kernel/arch/x86/drivers/usb_xhci_internal.h +3 -2
kernel/arch/x86/drivers/usb_xhci_port.c +1 -1
kernel/arch/x86/gdt.c +18 -4
kernel/arch/x86/gdt.h +1 -0
kernel/arch/x86/idt.c +3 -0
kernel/arch/x86/irq.c +63 -14
kernel/arch/x86/mm/heap.c +8 -8
kernel/arch/x86/mm/phys_window.c +53 -57
kernel/arch/x86/mm/physical.c +33 -33
kernel/arch/x86/rtc.c +9 -0
kernel/arch/x86/smp.c +33 -12
kernel/arch/x86/smp.h +3 -0
kernel/arch/x86/smp_trampoline32.asm +1 -1
kernel/arch/x86/smp_trampoline64.asm +1 -1
kernel/drivers/framebuffer.c +101 -34
kernel/drivers/usb_msc.c +24 -23
kernel/fs/ext2fs.c +77 -0
kernel/sched/scheduler.c +163 -3037
kernel/sched/scheduler.h +95 -5
kernel/sched/scheduler_balance.c created
kernel/sched/scheduler_context.c created
kernel/sched/scheduler_create.c created
kernel/sched/scheduler_cred.c created
kernel/sched/scheduler_fd.c created
kernel/sched/scheduler_internal.h created
kernel/sched/scheduler_mem.c created
kernel/sched/scheduler_mem.h created
kernel/sched/scheduler_pick.c created
kernel/sched/scheduler_query.c created
kernel/sched/scheduler_runqueue.c created
kernel/sched/scheduler_select.c created
kernel/sched/scheduler_state.c created
kernel/sched/scheduler_thread.c created
kernel/sched/scheduler_tick.c created
kernel/sched/scheduler_wait.c created
kernel/sched/scheduler_waitpid.c created
kernel/sched/scheduler_waitq.c created
kernel/sched/signal.c +14 -10
kernel/sys/console.c +101 -36
kernel/sys/devfs.c +80 -34
kernel/sys/disk.c +69 -7
kernel/sys/exec.c +4 -6
kernel/sys/keyboard.c +33 -8
kernel/sys/lock.c created
kernel/sys/lock.h +165 -1
kernel/sys/mouse.c +33 -8
kernel/sys/procfs.c +132 -16
kernel/sys/pty.c +126 -33
kernel/sys/stats.c removed
kernel/sys/stats.h removed
kernel/sys/syscall.c +199 -24
kernel/sys/time.c +6 -1
kernel/sys/tty.c +31 -0
kernel/sys/tty.h +3 -0
kernel/sys/tty_input.c +69 -11
kernel/sys/tty_input.h +3 -0
kernel/sys/usb_core.c +68 -53
kernel/sys/vfs.c +167 -72
kernel/sys/vfs.h +8 -0
kernel/sys/ws.c +392 -151
libs/data/list.c +98 -13
libs/data/list.h +5 -2
libs/fs/ext2.h +6 -6
libs/gui/ui.c +88 -30
libs/libc/sys/ioctl.h +2 -0
libs/libc/termios.h +1 -1
libs/libc_usr/time.c +71 -19
userland/core/sh/main.c +84 -1
userland/tools/clock/main.c +52 -17
userland/ui/term/term_pty.c +4 -0
userland/ui/term/term_screen.c +31 -9
userland/ui/wm/main.c +59 -124
userland/ui/wm/wm.h +1 -0
userland/ui/wm/wm_background.c +7 -73
userland/ui/wm/wm_color.c created
userland/ui/wm/wm_color.h created
userland/ui/wm/wm_loop.c +46 -0
userland/ui/wm/wm_state.c +119 -18