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)
This commit is contained in:
1 parent
789fb7971a
commit
deb513c925
32 files changed
+5100
-1854
No files matched your search
Binary file not shown.
Reference in new issue
Block a user