Commit Graph
45 Commits
Author SHA1 Message Date
maksw 485a6bbfe7 introduce a stable NTL_DDK driver ABI to replace direct HAL_API and kernel-header access in drivers, add code/kernel/io_ddk.c and code/public/ntlite/ddk/ headers, change DriverEntry to take (const NTL_DDK*, NTL_DRIVER_INIT*), update kmain to build the DDK once via IoInitializeDdk/IoGetDdk and hand it to both boot and runtime drivers, downgrade code/public/ntlite/ddi/io_driver.h to a legacy I/O model header pulling from ntlite/ddk instead of kernel internals, move code/third_party/lwip into code/drivers/net/lwip/third_party, fix up lwip_sources.txt and build.c include paths to match, split build.c's single CFLAGS macro into COMMON/KERNEL/USER/BOOT/DRIVER cflags. 2026-07-01 23:19:11 +02:00
maksw b7fcfce6f7 implement user mode catchable exceptions, refactor system status codes to use NTLSTATUS_ prefix, update build scripts to use shared literal macros for linker arguments, update named queue lifetime cleanup to include KeNamedQueueUnpublishHandle. 2026-06-27 20:38:43 +02:00
maksw 1f5477cf66 implement generic I/O async request object to replace file-specific async requests, refactor lwIP network stack to dispatch requests through IRPs with cancellation support, add cancellation polling to lwIP accept and receive operations using LwipSocketWaitRecvNetbuf and LwipSocketWaitAccept, introduce NetSubmitSocketIrp for routing socket operations via device IRPs, track network IRP statistics with SYS_NET_IRP_STATS, add process module lock spinlock and reference counting for process modules, implement dynamic module loading and unloading via user module handles, add POSIX dynamic loader APIs including dlopen, dlsym, dlerror, and dlclose, introduce PosixStart entry point for posix applications, add new native smoke tests for net IRPs. 2026-06-27 10:37:53 +02:00
maksw ed3d065abd add ntfs.sys standalone driver target, change default usb vhd layout formatting to ntfs, implement Fat32CreateDir for directory creation support in the fat32 file system driver, add a dedicated HAL serial output endpoint for COM1 writes in hal_serial.c and subscribe serial to HAL text streams, introduce waitable kernel timers with KeTimerCreate, KeTimerSet, and KeTimerCancel alongside spinlock-protected global timer list initialization and scheduler tick tracking, implement SyscallWriteFileAsync system call for asynchronous non-blocking file writes, refactor NetSocketConnect and NetSocketSendTo to use generic SYS_SOCKET_ADDRESS_K structures instead of being hardcoded to IPv4, update gethostbyname and DNS name resolution to support IPv6 parsing via ResolveNameFamily, update tcpserve.exe with -4 and -6 command-line flags to accept and display IPv6 addresses, append size and version headers to all kernel telemetry and statistics structures including SYS_PMM_STATS, SYS_CPU_STATS, and SYS_SCHEDULER_STATS, update winmm timeGetTime to look up high-resolution hardware frequencies via SysGetTickFrequency, integrate 14 native smoke test applications. 2026-06-26 15:18:48 +02:00
maksw 2c4a68a75f add page cache with read-ahead and dirty writeback, file-backed and anonymous mmap with CoW, VAD-based virtual memory replacing the old user region model, PFN database with eviction and reclaim, file identity for cross-open section sharing, FAT32 path cache and per-file cluster chain cache, serial.sys for COM1 keyboard input, xHCI MSI with INTx and polled fallback, PciEnableMsiAuto, waitable input queue, KeWaitForAnyEvent, per-process thread info syscall, expanded kernel stats (PFN/PTE/VAD/file-cache/disk), pool allocation tags, async I/O user buffer locking, file flush on close, add docs.md. 2026-06-20 13:17:39 +02:00
maksw ee55de0534 make usb.vhd if missing, fix clear behavior 2026-06-15 11:09:13 +02:00
maksw 6260de0085 add display subsystem and vmwaresvga driver, support absolute mouse and qemu tablet, map pci mmio to private virtual aperture, better smp panic handling, remove legacy io publish/match, add sys query display info and display command to native shell 2026-06-15 09:58:12 +02:00
maksw e41bf6e2c0 add system time, clean up pci into pci.sys, clean up syscall names, fix USERAPC1 typo 2026-06-11 18:11:59 +02:00
maksw c1a291c4c9 better ps 2026-06-09 18:37:35 +02:00
maksw 325149006c completely redesign how user mode memory is allocated, fix a few smp and scheduler bugs, terminating a process now terminates the process, telemetry, optimize text editor, new font, new color scheme 2026-06-09 18:02:28 +02:00
maksw 27b31f62b6 usb hubs, hotplug support, unplug support, saving log files to disk, smt 2026-06-09 09:14:24 +02:00
maksw b838f8d83d move keyboard and mouse out of HAL into a standalone ps2.sys driver, implement usb stack with xhci controller discovery, hid keyboard/mouse, and bulk-only mass storage, add pci msi support with capability chain walking and software irq vector allocation (slots 16-23), rewrite user virtual memory as a USER_VA_REGION descriptor arena with per-process ownership tracking and guard page support, replacing the old bump allocator and top-down image region, add MmCreateUserRegion/MmDestroyAllUserRegions so process teardown reclaims all user va in one pass, allocate a pool-backed shadow framebuffer in hal_screen to fix cursor tearing and scroll corruption, reserve ap trampoline page below 1mb in uefi bootloader before boot services exit, rewrite memset/memcpy/memmove/memcmp with __stosq/__movsq intrinsics, promote driver flag literals to macros and add multi-tu STANDALONE_DRIVERS table to build.c, split rtl8139/rtl816x into header+source, rename KbReadScancode to KbReadKey, improve page fault output with MmDebugDescribeAddress and user region dump, fix %p to %016llX throughout. 2026-06-02 00:01:20 +02:00
maksw a01772d637 use a real build system (if you can call it that) 2026-05-30 11:44:09 +02:00
maksw bfe2b55142 parallel compile, SMP, swapgs, cleanup, remove useless Reserved fields 2026-05-30 11:18:46 +02:00
maksw 6bff37746d major restructuring, prepare for smp 2026-05-28 18:53:37 +02:00
maksw b3569a2b90 better scheduler time allocation, proper quota tracking 2026-05-26 14:46:52 +02:00
maksw 03bf767ac2 add missing fault handlers instead of throwing everything into the GP bin, add more ways to crash in native shell 2026-05-26 14:46:52 +02:00
maksw e1248f4afe refactor syscall ABI and FAT32 driver to use request structs and string views natively, enforce handle access rights on object lookup, add scheduler statistics tracking, fix KiSchedule to prevent 50% idle throttling on CPU-bound threads, better document x64 initial user stack alignment, fix process teardown to properly signal exit events and manage thread counts, optimize doom file I/O with a custom handle struct to internally track position and size, add SubsystemData to TEB for generic thread-local state, apply PAGE_NX to non-executable PE sections in the loader, update native apps, tests, and shells to match new APIs, update kernel32 directory retrieval. 2026-05-26 14:46:49 +02:00
maksw 603fbdfab1 revolutionary crash dump, msvcrt.dll redirect, text editor, some win32 functions 2026-05-24 09:49:01 +02:00
maksw df13b8056c add lwIP TCP/IP stack as a runtime driver, native socket syscalls, SysGetMemoryStatus replacing CatchAllDebugBucket, fix timeGetTime to return milliseconds, fix SysSleep to interpret argument as milliseconds, SysGetTick now returns microseconds, harden all syscalls against bad user pointers with CopyFromUser/CopyToUser/MmProbeUser throughout, add networking test apps, port-forward 8080 in runa.bat, split LWIP_DRIVER_CFLAGS, add settings.ini to deploy, remove ethernet.c stub 2026-05-22 18:54:53 +02:00
maksw db175ab20a first PID is 0, separate idle to system 2026-05-20 22:42:52 +02:00
maksw 0d7f71b693 add CatchAllDebugBucket as a syscall for debugging, add a basic network card plus ethernet driver (wip) 2026-05-20 22:21:53 +02:00
maksw 09c1420a32 add support for more than one volume 2026-05-19 21:52:07 +02:00
maksw 529f816166 implement proper IRQL, DPCs, kernel and user APCs, alertable waits, async file I/O with cancellation, trap frames, selftests, a real driver/device model, native async FAT32, VFAT dotfile fixes, syscall ABI cleanup, async_apc and async_cancel tests, POSIX multi-volume paths, and pimp the readme. 2026-05-19 20:56:15 +02:00
maksw f5fd7bdd75 doom is now using the native api, add a PEB + TEB to replace the dummy and the awkward argument passing to processes, all allocations are zeroed because i had enough, small readme changes and dedication. 2026-05-18 21:30:07 +02:00
maksw ddb5d5f5d8 save fpu state properly-ish, add a guard to doom_malloc_wrapper, fix QueryPerformance* and GetSystemTimeAsFileTime 2026-05-15 14:42:39 +02:00
maksw def649b995 memory savings 2026-05-14 14:57:00 +02:00
maksw ddb074f0e0 rewrite init to restart failed processes, add file renaming, directory creation, directory renaming, directory removal, add process killing, unify shells, readme changes. 2026-05-13 10:41:48 +02:00
maksw f80e66ecde build.bat can create the image if missing, split the shell into native, posix and win32, clean up the build by moving executables into directories, the bootloader is no longer responsible to resolve drivers, fix ResolvePath, every process gets a copy of a module (dll), the child always inherits the cwd, fix function exports in posix, add unlink and exit to posix, add path translator to win32, first bugcheck. 2026-05-13 09:24:16 +02:00
maksw 0c7f461c6d add doom, disable warnings as errors, massive speedups in the fat32 driver, HAL_KEYBOARD Poll now returns the key and added IsKeyDown used by GetAsyncKeyState, slight upgrade in hal_main drain and pray, more accurate QueryTicks and by that GetTickCount, add GetTickCount64, boot.ini now dictates what executable should init launch, not the kernel, LaunchUserProcess in kmain.c now takes an argument, rearrange syscall numbers, add SysKbIsKeyDown syscall, use include windows.h over manual definitions, add fictional win32 api ClearConsoleScreenBuffer and real FlushConsoleInputBuffer and a clear command to the shell, print exit codes as signed int, StretchDIBits now can stretch, runa.bat now gives 256 MB. 2026-05-11 10:10:21 +02:00
maksw 320a24e1a5 fix writing by using a virtual image instead of a physical thumbdrive, better document the hack in KeIrqDispatch 2026-05-05 19:33:04 +02:00
maksw b5c831f593 duct taped posix.dll (just like microsoft), new cursor, more info in the fault handlers, processes now have a parse-it-yourself cmdline, add SYS_WAIT_THREAD and SYS_GET_PROCESS_PID, writing still doesn't work 2026-05-05 15:24:58 +02:00
maksw a37f5b1581 fix ps/2 mouse init, make Stall more precise, rename CurrentProcess to KeGetCurrentProcess, correct type about maneuvers, add file writing to win32 2026-05-05 10:30:13 +02:00
maksw 8c7564d5e1 add /IGNORE:4216 to HAL link step, add writing and directory listing to the FAT32 driver, add the concept of current working directory to the VFS, add writing to the VFS, more operations in the shell, rename KeCurrentThread to KeGetCurrentThread and add KeGetCurrentProcess, add STATUS_NO_MORE_FILES, change KeFault* to KePanic, add syscalls for writing to files, add a proper syscall to writing to the console, move Screen.Clear to after memory status debug print, add ObjectTypeDir to OBJECT_TYPE, extend kernel32 by file operations and upgrade user32 (and add gdi32) to match windows a bit more closely, change CreateProcessA to accept the first argument as NULL. 2026-05-04 16:27:49 +02:00
maksw a5f0acfac8 add mouse and cursor 2026-05-04 09:17:00 +02:00
maksw cbb9ff469c add NTLITE_DRIVE and NTLITE_NTPATH so i can work on my pc and my laptop, fix dynamic driver loading 2026-05-04 08:38:08 +02:00
maksw 4b57738fe3 add KePanic instead of splattering _disable __halt everywhere, implement a DMA + interrupts path to the IDE driver, move the dynamic arrays from kmain.c to ke_utils.h, remove weird unicode chars 2026-05-03 22:45:31 +02:00
maksw 83d48e09bb remove weird double spaces, remove /EXPORT from build.bat in favor of __declspec(dllexport) 2026-05-03 19:54:51 +02:00
maksw 9fa2a7e0db colonel.exe 🤑, refactor all include directives, AHCI is now interrupt driven, upgrades to IDE, implemented I/O Request Packets, fix numerous keyboard issues, change all for (;;) and while (1) to while (true), DbgPrint guarded by spinlock, fix KeSignalEvent, major KernelMain refactor, added SystemInitThread because of new blocking I/O, replace memcpy manouvers with strncpy and strncat, add: run for ide, runa for ahci, rund for debug and ide, runad for debug and ahci. 2026-05-03 19:35:48 +02:00
maksw 7f4052f41c fix the return value of LdrLoadImage, make use of __declspec(dllexport), speed up blitting, add dummy TEB, redesign the syscall interface, fix stack alignent so movaps doesn't crash, implement a shitload of win32, implement a simple shell, add bink as video.exe 😎, minor kmain.c cleanup, HAL now supports power-off events, implemented \b in hal_screen.c, fix many deadlocks, add wait for exit event for processes, completely new error codes, small readme changes. 2026-05-03 13:43:29 +02:00
maksw c13dd99150 KernelMain reports more details about memory usage, LdrResolveImports catches kernel32, user32, ole32 and winmm and redirects them to win32. 2026-05-02 15:25:39 +02:00
maksw 129be91e15 fix a few bugs in scheduling and synchronization, separate OVMF_VARS for debug 2026-05-02 11:34:30 +02:00
maksw 5cf7a20ea2 fix MmAllocateContiguous, implement polling AHCI driver. 2026-05-02 10:45:02 +02:00
maksw 84d6265410 KernelMain: more precise memory reporting, MmInitializePhysical: support more than ~1.1 GB of memory. 2026-05-01 23:54:27 +02:00
maksw 0e1479b168 i think it works 2026-04-30 23:52:46 +02:00