t3hn3rd
c70c0b52c3
Rebase: Fixed accidentally removed unit tests.
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2026-03-07 21:05:12 +00:00
t3hn3rd
452cc0c8c8
Rebased on develop & remove test code from Kernel main.
continuous-integration/drone/push Build is passing
2026-03-07 20:59:42 +00:00
t3hn3rd
3d334b8e8b
feature: SHA-1 Hashing
...
- Add SHA-1 hashing implementation with Init/Update/Final API and inline test in kernel,
following the same interface as MD5 & the fpc rtl.
2026-03-07 20:58:51 +00:00
t3hn3rd
b9643a7b56
feature: SHA-1 Hashing
...
- Add SHA-1 hashing implementation with Init/Update/Final API and inline test in kernel,
following the same interface as MD5 & the fpc rtl.
2026-03-07 20:58:22 +00:00
Aaron
6902a406b0
Merge pull request 'GPU Stack, V8086 Monitor & BGA Driver' ( #50 ) from feature/gpu-stack-v8086-bga into develop
...
continuous-integration/drone/push Build is passing
Reviewed-on: #50
Reviewed-by: Aaron Hance <[email protected] >
2026-03-07 20:56:19 +00:00
t3hn3rd
36ec7bfdb6
refactor: move program registration from kernel to progmanager
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
- Remove diskcmd, diskutil, notepad, partcmd, volcmd init calls and
uses from kernel.pas — these are programs, not kernel subsystems.
- Move their initialization into progmanager.init() alongside the
other baked-in programs (md5sum, base64_prog, dhclient, etc.).
- Remove diskcmd, diskutil, notepad from kernel's uses clause.
- Add a splash.update() call for the auto-mount volumes step.
- Suppress FPC warnings in compile_sources.sh (-v0e instead of -v0ew).
2026-03-07 20:39:43 +00:00
t3hn3rd
6c3c0e63d5
fix: Rebase borked kernel.pas - added missing deps
2026-03-07 20:31:38 +00:00
t3hn3rd
df71c59aea
feature: add boot splash screen with embedded TGA logo
...
- New splash unit (src/prog/splash.pas) displays a centered logo,
progress bar and status label during kernel boot. Manually drives
LVGL rendering + video.Flush since gfxd isn't running yet.
- Embed img/asuro.tga into the kernel via NASM incbin stub
(src/stub/splash_tga.asm), assembled in compile_stub.sh.
- Build an lv_image_dsc_t at runtime from the decoded TGA pixel data
and display it at 50% scale using lv_image_set_scale(128).
- Move LVGL init earlier in kernel.pas (right after video enable) so
the splash screen is available before VFS/drivers/network init.
- Sprinkle splash.update() calls throughout kmain to show boot
progress (VFS → drivers → buses → network → tests → desktop).
- Fix targa.pas parser: rename Magic→IDLength, remove erroneous Data
pointer field, compute pixel offset correctly (buffer+18+IDLength),
advance source pointer per pixel, handle bottom-to-top origin flip.
- Unit tests moved before desktop.init; splash.teardown called at 100%
just before handing off to the desktop environment.
2026-03-07 20:20:00 +00:00
t3hn3rd
97244a2b95
Rebase: Changes made to conform with rebase on develop
2026-03-07 20:17:24 +00:00
t3hn3rd
ecca496978
fix: show live GPU/resolution info in System Information
...
- desktop: Resolution/Graphics fields now read from video frontbuffer
and gpu.activeDriverName instead of static multiboot/hardcoded values
- gpu: markAvailable sets ActiveName when no driver is active yet, so
the initial VBE boot driver is reported before any setMode call
- kernel: whitespace cleanup
2026-03-07 20:16:26 +00:00
t3hn3rd
e52b4a9763
feature: GPU driver framework with BGA, V86 monitor, and runtime resolution switching
...
- GPU Framework (gpu.pas): Priority-ordered GPU driver registry with
mode-change callback system. Drivers register with a priority (lower =
tried first). After successful setMode, fires registered callbacks in
order (video → LVGL → desktop) for fully decoupled resolution updates.
- BGA Driver (bga.pas): Bochs Graphics Adapter via drivermanagement PCI
auto-detection (class=$03 subclass=$00 wildcard). Programs display via
I/O ports $01CE/$01CF, reads framebuffer from PCI BARs with VMware SVGA
fallback. Supports arbitrary resolutions (1920x1080, 2560x1440, etc).
- SETRES Command (setres.pas): Runtime resolution switching — just calls
gpu.setMode; video reinit, LVGL buffer realloc, and desktop relayout
all fire automatically via GPU mode-change callbacks.
- VESA/VBE: Registered as GPU fallback driver (priority 50), uses V86
INT 10h for VBE mode switching.
- TSS: Fix SS0 from $08 (code segment) to $10 (data segment); add
set_esp0/get_esp0 helpers for V86 ring-0 stack management.
- VMM: Add map_page_user() for identity-mapping first 4MB with User bit
(required for V86 IVT/BDA/video ROM access).
- Desktop: relayout procedure + GPU callback registration for automatic
dock/watermark repositioning on resolution change.
- V86 Monitor (v86.pas): Full Virtual 8086 mode monitor for executing
real-mode BIOS interrupts from protected mode. Naked GPF handler with
instruction emulation (INT, IRET, CLI, STI, PUSHF/POPF, IN/OUT, HLT,
0x66 prefix for 32-bit variants). Thunk-based entry via IRET into VM86.
- Kernel init order: gpu.init → video.init → vesa.init → bga.init;
drivermanagement.init moved earlier (before video) so PCI scan detects
BGA before first use.
2026-03-07 20:16:25 +00:00
admin
f78eaa3811
Merge pull request 'Storage system overhaul: VFS, FAT32, ISO9660, AHCI/IDE refactor, GUI apps & boot drive mounting' ( #49 ) from feature/storage-system into develop
...
continuous-integration/drone/push Build is passing
Reviewed-on: #49
Reviewed-by: admin <[email protected] >
2026-03-07 19:53:14 +00:00
Aaron
acb4a15e41
Fix file headers
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2026-03-07 19:40:18 +00:00
Aaron
d3581eea2e
update header
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2026-03-07 19:37:26 +00:00
Aaron
1fc00e3e7c
chore: ignore lessons_learnt.md
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2026-03-07 19:33:57 +00:00
Aaron
2f837ace6e
chore: remove lessons_learnt.md from tracking
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2026-03-07 19:33:40 +00:00
Aaron
f8182b24b3
removed another bad file
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2026-03-07 19:24:59 +00:00
Aaron
f0531ff861
Removed bad files
continuous-integration/drone/push Build is passing
2026-03-07 19:22:40 +00:00
Aaron
3d9c4cb49a
feat: add processmanager.create to diskutil and notepad
...
continuous-integration/drone/push Build is passing
- diskutil: add proc_pid global, diskutil_entry idle proc, create process
on launch with setWindowOwner, kill on close, zero proc_pid in init
- notepad: add pid field to TNotepadState, notepad_entry idle proc, create
process on launch with setWindowOwner, kill pid in doCloseWindow
- both apps now appear in PS and are manageable via KILL/TERMINATE
2026-03-07 19:18:55 +00:00
Aaron
3a733b1559
feat: auto-mount boot drive to /boot; fix FAT32 deleted entry triple fault
...
continuous-integration/drone/push Build is passing
- Decode multiboot boot_device byte in storagemanager to identify boot device
- Add isBootDevice to TStorage_Device; propagate isBootDrive to volumes
- Create /boot VFS directory at init; mount boot volume there in auto_mount_volumes
- Fix getDirEntries skipping \-marked (deleted) FAT32 entries to prevent
triple fault when navigating into a deleted directory via file picker
2026-03-07 18:58:32 +00:00
Aaron
deb513c925
storage: fix VFS corruption, ISO9660 hang, OOM; add notepad, file picker, fdtable, GPT, async I/O
...
VFS fixes:
- GetDirectoryListing(otVDIRECTORY) now returns a heap-allocated snapshot
instead of a raw live-tree pointer; FreeDirectoryListing no longer
corrupts the VFS tree (fixes page fault on repeated navigation)
- volumeGetDirectories: guard LL_Size > 0 before loop to prevent uint32
underflow (0-1 = 0xFFFFFFFF) causing 4B kalloc iterations -> OOM
- Free entry^.fileName and dirList in all branches (memory leak fix)
iso9660:
- equalsIgnoreCase: guard la=0 before loop (same uint32 underflow bug)
- readDirectoryEntries/resolvePath: add 65536/256-iter safety caps
storagemanager:
- Strip debug syslog calls that were allocating 6+ strings per I/O
(hundreds of I/Os x 6 allocs exhausted the heap)
Process manager:
- Per-process FDTable and Cwd initialised on create, freed on reap
- proc_await: use pointer-indirection spin per lesson #6 (FPC caches
non-volatile reads; raw while flag=0 returns immediately)
- graphicsrefresh: move LVGL handler from timer ISR (IF=0) to a
dedicated process so LVGL callbacks can call blocking I/O
New units:
- fdtable.pas: per-process file descriptor table (fd_alloc/get/close)
- iorequest.pas: heap allocation helpers for TIORequest
- gpt.pas: GPT header/entry read + CRC validation
- filepicker.pas: reusable OS-level open/save file picker dialog
- notepad.pas: GUI text editor with selection, indent, save-as
Shell commands (diskcmd, partcmd, volcmd, diskutil):
- Route output to stdout_buf instead of syslog (lesson #4 )
- diskutil: async add/remove/format partition; cache-based device display
Add Apache 2.0 license headers to storagemanager.pas, iso9660.pas,
fat32.pas, storagetest.pas
Lessons learnt: #9 VFS listing must return snapshot (not live pointer)
2026-03-07 18:58:32 +00:00
Aaron
789fb7971a
getting ready
2026-03-07 18:57:38 +00:00
Aaron
4e3acd6af7
Storage system: AHCI, IDE rework, VFS, volume manager, flatfs, async IO, IOAPIC
2026-03-07 18:45:25 +00:00
admin
262d064b6d
Merge pull request 'Fix: PS/2 mouse ISR blocking; convert USB polling & GFX refresh to processes; remove dead scheduler' ( #48 ) from feature/ps2-mouse-fix into develop
...
continuous-integration/drone/push Build is passing
Reviewed-on: #48
2026-03-07 00:40:20 +00:00
t3hn3rd
738e5828f6
Fix PS/2 mouse ISR blocking; convert USB polling & GFX refresh to processes; remove dead scheduler
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
PS/2 Mouse:
- Fix ISR spin-blocking by reading port $60 directly with inb() instead
of calling mouse_read(), which uses mouse_wait_long (100k iterations)
and would stall the interrupt handler waiting for the next packet byte.
Timer (PIT):
- Increase PIT frequency from ~1024 Hz to ~8 kHz (divisor 1193 -> 149)
for more granular timer ticks.
Graphics Refresh:
- Replace timer-hook-driven rendering (driver/timers/graphicsrefresh)
with a dedicated 'gfxd' process that runs a continuous render loop,
keeping the vCPU active to avoid NEM/Hyper-V pause-loop descheduling.
- Move uidebug from driver/video/ to prog/.
- Update FPS calculation to account for 8 kHz tick rate.
USB Hotplug:
- Replace timer-hook-driven polling (driver/timers/usbhotplug) with a
dedicated 'usbd' daemon process that sleeps 1s between poll cycles.
- Add bounds check in usbcore.usb_check_hotplug for empty HC list.
Cleanup:
- Remove old scheduler unit (superseded by processmanager/contextswitcher).
- Remove tss unit and tss.init() call from kernel.
- Remove unused syslog import from contextswitcher.
- Reduce BASE_QUANTUM from 8 to 5.
2026-03-07 00:29:38 +00:00
t3hn3rd
9fa1c859ac
Merge pull request 'feature: preemptive process management & TCP/IP barebones' ( #41 ) from feature/process-management into develop
...
continuous-integration/drone/push Build is passing
Reviewed-on: #41
Reviewed-by: Aaron Hance <[email protected] >
2026-03-04 20:04:24 +00:00
t3hn3rd
d01b534a3d
rebase fix: stdio.registerCommand('BSOS') removed from progmanager.pas
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
- This can sit in kernel for now, given that's where the handler is.
- TODO: Move everything to sit under prog/
2026-03-04 19:49:56 +00:00
t3hn3rd
491b0ea5c3
fix: Allocator Merge Conflicts Resolved
2026-03-04 19:43:43 +00:00
t3hn3rd
de6fde05cc
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)
2026-03-04 19:42:33 +00:00
t3hn3rd
fb675a2299
feature: implement TCP (RFC 793) protocol driver
...
Add full TCP/IP stack implementation at L4 alongside UDP and ICMP.
Core Protocol Engine:
- TCP types in nettypes.pas (header, TCB, state enum, error codes,
callbacks, OOO entry, socket structures)
- 3-way handshake (active & passive OPEN)
- Reliable data transfer with ACK and sequence number tracking
- Graceful close (FIN_WAIT, CLOSE_WAIT, LAST_ACK, TIME_WAIT)
- RST send/receive handling
- Retransmission with exponential backoff (max 5 attempts)
- Pseudo-header based checksum (RFC 793)
Server Support:
- LISTEN → SYN_RECEIVED → ESTABLISHED passive open path
- Listen backlog enforcement (configurable per-socket)
- accept() to retrieve established child connections
Robustness & Hardening:
- Delayed ACK timer (~200ms)
- Nagle's algorithm (buffer small sends while unACKed data pending)
- Jacobson/Karels RTT estimation with adaptive RTO
- Congestion control (slow start / congestion avoidance)
- Zero-window probing with exponential backoff
- MSS option negotiation in SYN/SYN-ACK (Kind=2, Len=4)
- Keep-alive (30s idle, 10s interval, 5 probes)
- Out-of-order segment reassembly (4-slot buffer)
Terminal & Testing:
- tcpconnect: active open + send "Hello, World!"
- tcplisten: passive open with syslog output
- tcphttp: HTTP/1.0 GET client
Also add push_trace() instrumentation to net, eth2, arp, ipv4,
icmp, udp, and dhcp entry points for call tracing, and register
tcp in net.init.
2026-03-04 19:39:32 +00:00
t3hn3rd
aa374b6816
Merge pull request 'refactor(memory): complete PMM/VMM/LMM rewrite - bitmap allocators, bug fixes, hardening' ( #40 ) from feature/memory-allocation-optimization into develop
...
continuous-integration/drone/push Build is passing
Reviewed-on: #40
Reviewed-by: Aaron Hance <[email protected] >
2026-03-04 19:34:44 +00:00
t3hn3rd
f427b7bcc7
refactor(memory): complete PMM/VMM/LMM rewrite - bitmap allocators, bug fixes, hardening
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
PMM Rewrite:
- Replace ~8KB record array with compact bitmaps
(PhysPresent/PhysAlloc/PhysScanned, 128B each)
- Add PhysOwner[0..1023] for per-block ownership tracking
- new_block: O(1) amortised via NextFreeHint + dword-level BSF scan,
returns 0 as OOM sentinel
- free_block: O(1) direct bit clear with double-free detection
- alloc_block: validates PhysPresent and PhysAlloc bits before allocation
- Add pmm_free_blocks/pmm_total_blocks stats functions
VMM Correctness Fixes:
- Fix free_page block extraction (Address SHR 10, was using
raw Address field)
- Fix invlpg operand (use virtual address, was passing PDE index)
- Clear PDE entry on free_page before returning block to PMM
- Remove map_page double-write (delegate to map_page_ex only)
- Add OOM propagation (new_page returns false if PMM returns 0)
- Fix missing pop_trace in new_page error path
LMM Rewrite:
- Replace per-entry record array with bitmap allocator
(93% vs 43% page efficiency)
- Layout: Header(24B) + Bitmap(64512B) + Padding + Data at 0x10000
- SIZE_PREFIX=16 for 16-byte aligned returns (SSE MOVAPS requirement)
- Next-fit bitmap scan with roving hint (NextFree) and dword-level
fast skip
- Large alloc sentinel (LARGE_ALLOC_MAGIC=$FFFFFFFE) so kfree detects
klalloc'd memory
- Implement klfree (was previously a no-op - pages could never
be returned)
- Implement try_release_page (return fully-free heap pages to VMM/PMM)
- Fix interrupt safety: stack-balanced pushfd/cli/pop +
restore_if (sti only)
Fixes Bad TSS caused by popfd restoring dangerous EFLAGS bits (NT, IOPL)
- Zero memory via rep stosd instead of byte-by-byte loop
Hardening:
- kalloc OOM now triggers BSOD instead of returning nil
(90% of callers don't check)
- Double-free detection in kfree (verify bitmap bits set before clearing)
- Guard bytes ({$IFDEF DEBUG_LMM}): $DEADBEEF sentinel for buffer overrun detection
- kpalloc: bounds check (block >= 1024 -> GPF) + syslog MMIO mapping audit log
Observability:
- Add MEMINFO command as src/prog/meminfo.pas (moved from inline kernel.pas)
- Displays multiboot memory, PMM block stats, LMM heap stats
- Register via progmanager.pas following standard prog pattern
Files changed:
- src/pmemorymanager.pas
- src/vmemorymanager.pas
- src/lmemorymanager.pas
- src/kernel.pas
- src/progmanager.pas
- src/prog/meminfo.pas
2026-03-04 19:23:46 +00:00
Aaron
4ba3c5b524
Merge pull request 'feature/Queues' ( #37 ) from feature/Queues into develop
...
continuous-integration/drone/push Build is passing
Reviewed-on: #37
2026-03-04 00:06:10 +00:00
t3hn3rd
7180ad39d8
Merge pull request 'feature: Pipeline - LVGL Build Caching' ( #38 ) from feature/lvgl-build-caching into develop
...
continuous-integration/drone/push Build is passing
Reviewed-on: #38
Reviewed-by: Aaron Hance <[email protected] >
2026-03-04 00:05:01 +00:00
Aaron
6c7bcc1911
better testing
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2026-03-04 00:00:56 +00:00
Aaron
e09c9b5595
refactor
2026-03-04 00:00:56 +00:00
Aaron
9476bb0c8a
compile
2026-03-04 00:00:56 +00:00
Aaron
8f7db8507b
Queues
2026-03-04 00:00:56 +00:00
t3hn3rd
188b1aebb0
feature: Pipeline - LVGL Build Caching
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
- Add LVGL build caching: store liblvgl.a on host mount to skip
full recompilation on subsequent builds
2026-03-03 23:22:09 +00:00
t3hn3rd
452203b7b4
Merge pull request 'bug: vtop incorrect bitmask' ( #36 ) from feature/vtop-fix into develop
...
continuous-integration/drone/push Build is passing
Reviewed-on: #36
Reviewed-by: Aaron Hance <[email protected] >
2026-03-03 20:03:47 +00:00
t3hn3rd
76c419336e
bug: vtop incorrect bitmask
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
- Fix for issue #32 in which the incorrect bitmask ($FFFFFF) is used where
$3FFFFF should be used instead. (24 vs 22 bits).
2026-03-03 19:10:08 +00:00
admin
2ad0ae8420
Merge pull request 'feature/gitattributes' ( #30 ) from feature/gitattributes into develop
...
continuous-integration/drone/push Build is passing
Reviewed-on: #30
2026-03-02 21:56:56 +00:00
t3hn3rd
c0c199bfe6
.gitattributes update
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
- Updated .gitattributes linguist excludes for compile-time directories.
2026-03-02 21:48:10 +00:00
t3hn3rd
7ec3bcb9b9
.gitattributes & doc directory
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
- Added gitattributes for linguist exclusions
- Created empty doc folder for local working docs
2026-03-02 21:41:14 +00:00
admin
4bd0a2dfbf
Merge pull request 'Merge feature/graphics-interrupts into develop' ( #14 ) from feature/graphics-interrupts into develop
...
continuous-integration/drone/push Build is passing
Reviewed-on: #14
2026-03-02 19:19:46 +00:00
admin
431e5bc8f4
Merge pull request 'Merge feature/USB into develop' ( #13 ) from feature/USB into develop
...
continuous-integration/drone/push Build is passing
Reviewed-on: #13
2026-03-02 19:14:05 +00:00
t3hn3rd
8169d93a9c
refactor: move render loop & USB hotplug to timer-driven units
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
Replace the blocking main render loop in kernel.pas with two new
timer-hooked units that are driven by the 1024Hz PIT interrupt:
- graphicsrefresh: calls desktop.update, uidebug.update, lvgl_handler
and video.Flush every 4 ticks (~256 FPS target).
- usbhotplug: calls usbcore.usb_check_hotplug every 1024 ticks (~1Hz).
The kernel main procedure now registers both timer hooks and enters an
idle STI/HLT loop (kernel.yield), allowing the CPU to sleep between
interrupts instead of busy-spinning.
Also removes the unused myUserLandFunction and reorders early syslog
init calls for clarity.
2026-03-02 19:04:42 +00:00
t3hn3rd
547251dbd0
update: Kernel.pas changes to align with USB implementation
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
- Kernel.pas updated to init USB devices & check for hotplug.
- USB Poll removed given USB stack is now interrupt driven.
2026-03-02 15:53:40 +00:00
t3hn3rd
7bbcc44c5e
Feature: USB - Hotplug, mass storage, disconnect callbacks, dynamic device lists
...
- Add disconnect callback (fnDisconnect) to TUSBDevice for safe unplug handling
- Add HotplugArmed/PortChangePending flags to TUSBHCDriver for deferred
hotplug processing from ISR context (OHCI RHSC, EHCI PCD, xHCI PSC)
- Implement usb_rescan_port() and usb_check_hotplug() in usbcore
- Add usb_bulk_transfer_wait() with timer-based timeout (bios_data_area)
- Add timer-based timeout to usb_control_msg polling loop
- Replace static device arrays with dynamic linked lists in class drivers:
usb_keyboard (KeyboardList), usb_mouse (MouseList), usb_storage (StorageList)
- Add 3-strike fail-count self-deactivation in keyboard/mouse poll loops
- Add unload() disconnect handlers for keyboard, mouse, and storage drivers
- Implement USB Mass Storage BOT driver (usb_storage.pas):
CBW/CSW transport, SCSI INQUIRY/READ_CAPACITY/READ10/WRITE10,
storagemanagement integration with read/write callbacks
- xHCI: acknowledge port status change W1C bits in event handler
- Integrate usb_check_hotplug + poll_keyboards/poll_mice into kernel main loop
2026-03-02 15:52:49 +00:00
t3hn3rd
25475a88a7
featur: USB - Add device tracking, stall recovery, removal, and terminal command
...
- Track enumerated devices per-HC via linked list (hc^.Devices)
- Add usb_clear_halt() for endpoint stall recovery (CLEAR_FEATURE)
- Add usb_remove_device() to clean up and free device records
- Add get_hc() for indexed host controller access
- Implement 'USB' terminal command showing HC info, connected devices,
speeds, class descriptors, and endpoint details
2026-03-02 15:50:55 +00:00