git.cappig.dev / apheleiaOS.git master

e26d991597b43df6bb770a191a841388391dac04 master
cappig <[email protected]> ยท 4 months ago
Add hashmap indexing and tighten WM/WS resize flow

* Add a new libs/data hashmap subsystem with numeric keys plus collision-safe string-key buckets and adopt it in VFS child lookup, scheduler PID lookup, PCI BSF lookup, and WM window-id lookup

* Rework WM state/loop paths to simplify drag geometry handling, cache window index lookups, batch forwarded mouse-move events, and stop forwarding events consumed by WM chrome actions

* Harden WS framebuffer IO around resize by tracking owner IO geometry separately from compositor geometry and applying resize acknowledgements on window event reads

* Update term resize/input flow so resize events are processed before key forwarding, remove fixed pixel caps in term_screen, and keep winsize sync reliable under rapid resize

* Improve boot/runtime plumbing with arch_phys_map_can_persist() gating for framebuffer VRAM mappings, immediate scheduler first-switch startup, and more tolerant init/getty tty/session setup
19 files changed, 1408 insertions, 237 deletions
kernel/arch/arch.h +1 -0
kernel/arch/x86/arch.c +8 -0
kernel/sched/scheduler.c +82 -35
kernel/sys/framebuffer_dev.c +6 -3
kernel/sys/pci.c +31 -0
kernel/sys/vfs.c +104 -29
kernel/sys/vfs.h +2 -0
kernel/sys/ws.c +78 -29
libs/data/hashmap.c created
libs/data/hashmap.h created
user/getty/main.c +5 -5
user/init/main.c +41 -4
user/term/main.c +32 -9
user/term/term_screen.c +0 -4
user/term/term_screen.h +0 -4
user/wm/main.c +1 -2
user/wm/wm.h +2 -1
user/wm/wm_loop.c +153 -51
user/wm/wm_state.c +262 -61