feature: preemptive process management - implementation progress
Implement a preemptive multitasking system for the Asuro kernel. Context Switching & Scheduling: - Custom IRQ0 ISR (contextswitcher.pas) with PUSHAD/POPAD ESP-swap - Round-robin scheduler with priority-based quantum - Process table using DList of PProcessContext pointers - Idle process (PID 0) replaces kernel HLT loop Process Lifecycle: - create/kill/terminate/sendMessage API (processmanager.pas) - Process states: Created, Running, Ready, Suspended, Awaiting, Finished, Error - Parent-child tracking (ParentID, smChildExited notification on reap) - proc_yield, proc_sleep_ms, proc_await, proc_suspend, proc_exit Resource Binding & Cleanup: - Per-process resource list (bindResource/unbindResource/unbindAllResources) - TCP sockets auto-bound to owning process (OwnerPID on TTCPSocket) - socket_cleanup + auto-unbind in DestroySocket VTerminal Refactor: - Multi-instance design (heap-allocated TVTermState per terminal) - Foreground process with incremental stdout/stderr drain via LVGL timer - Ctrl+C kills foreground process (killForeground) - Per-terminal CWD, dir stack, FS builtins (CD/LS/PUSHD/POPD) - Background job support (& suffix, JOBS/FG commands) - Command history (Up/Down arrow) Command Consolidation: - 14 commands extracted from 9 units into centralized progmanager.pas - Command procedures exported in host unit interfaces - E1000/TRACER/stdio builtins kept in-place (conditional/circular) New Units: - src/include/proctypes.pas — process type definitions - src/processmanager.pas — core process manager - src/prog/ping.pas — standalone ICMP ping process - src/prog/testcmd.pas — test command (proc_sleep_ms demo) - src/testprocs.pas — process subsystem smoke tests Misc: - ICMP callbacks gain userData parameter for concurrency-safe ping - CLI/STI guards on kalloc/kfree (lmemorymanager.pas) - LV_KEY_CTRLC constant + Ctrl+C interception in LVGL keyboard hook - Window owner PID tracking (windows.pas) - ISR_32 gate override support (isrmanager.pas)
This commit is contained in:
1 parent
fb675a2299
commit
de6fde05cc
23 files changed
+2309
-376
No files matched your search
@@ -31,6 +31,7 @@ type
|
||||
|
||||
procedure init;
|
||||
procedure registerISR(INT_N : uint8; callback : TISRHook);
|
||||
procedure dispatchHooks(INT_N : uint8);
|
||||
|
||||
implementation
|
||||
|
||||
@@ -51,6 +52,15 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure dispatchHooks(INT_N : uint8);
|
||||
var
|
||||
i : uint8;
|
||||
begin
|
||||
for i:=0 to MAX_HOOKS do begin
|
||||
if Hooks[INT_N][i] <> nil then Hooks[INT_N][i]();
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure ISR_N(INT_N : uint8);
|
||||
var
|
||||
i : uint8;
|
||||
|
||||
Reference in new issue
Block a user