redo boot around an explicit system volume and fixed kernel/HAL images, redo volumes and filesystem paths around capabilities instead of drive numbers and kernel CWD state, add a capability/security model with derived and revocable handles and security contexts, add port IPC and rssrv to manage the userspace resource namespace and publish the system volume, move process, dll and path loading to userspace and add process builder syscalls, init now supervises rssrv and the session process, redo the syscall ABI around request structs and four arguments, add a volume manager and proper partition arrival/removal handling so FAT and NTFS mount dynamically, clean up the HAL/DDK boundary so drivers don't depend on HAL internals, save fpu state properly now, the serial driver doesn't hang on a missing port, fix AHCI startup races, fix timeout accounting, fix shared mmap writeback, more smoke tests

This commit is contained in:
maksw committed 2026-08-20 12:33:17 +02:00
1 parent 4add6789ba
commit f882d339fb
232 files changed
+20934 -8898

No files matched your search

+181 -190
View File
@@ -1,20 +1,14 @@
; syscall_stubs.asm - user-mode INT 0x40 stubs exported by syscall.dll (MASM64)
; syscall_stubs.asm - user-mode INT 0x40 stubs for syscall.dll and syscall_s.lib (MASM64)
;
; Calling convention (kernel side):
; RAX = syscall number
; RCX = arg 0
; RDX = arg 1
; R8 = arg 2
; R9 = arg 3
; R10 = arg 4 (our extension - loaded from the stack by SYSCALL_STUB6)
; R11 = arg 5 (our extension - loaded from the stack by SYSCALL_STUB6)
; Calling convention:
; RAX = syscall number.
; RCX = arg 0.
; RDX = arg 1.
; R8 = arg 2.
; R9 = arg 3.
;
; User-mode callers follow standard MS x64: args 1-4 in RCX/RDX/R8/R9,
; args 5+ on the stack above the home area ([rsp+28h], [rsp+30h], ...).
;
; SYSCALL_STUB2/3 - 4 or fewer args: pure register passing, no stack read.
; SYSCALL_STUB5 - exactly 5 args: loads [rsp+28h] -> R10 only.
; SYSCALL_STUB6 - 5 or 6 args: loads [rsp+28h] -> R10 and [rsp+30h] -> R11.
; Syscalls never consume stack arguments. Operations that need more than four
; logical arguments use a request structure.
INCLUDE syscall_nr.inc
@@ -28,42 +22,13 @@ SYS_USER_APC_FRAME_SystemArgument2 EQU 40
.CODE
; ---------------------------------------------------------------------------
SYSCALL_STUB2 MACRO name, nr
SYSCALL_STUB MACRO name, nr
PUBLIC Sys&name
IFDEF NTL_SYSCALL_STATIC
Sys&name PROC
ELSE
Sys&name PROC EXPORT
mov rax, nr
int 40h
ret
Sys&name ENDP
ENDM
; ---------------------------------------------------------------------------
SYSCALL_STUB3 MACRO name, nr
PUBLIC Sys&name
Sys&name PROC EXPORT
mov rax, nr
int 40h
ret
Sys&name ENDP
ENDM
; ---------------------------------------------------------------------------
SYSCALL_STUB5 MACRO name, nr
PUBLIC Sys&name
Sys&name PROC EXPORT
mov r10, [rsp+28h] ; 5th argument
mov rax, nr
int 40h
ret
Sys&name ENDP
ENDM
; ---------------------------------------------------------------------------
SYSCALL_STUB6 MACRO name, nr
PUBLIC Sys&name
Sys&name PROC EXPORT
mov r10, [rsp+28h] ; 5th argument
mov r11, [rsp+30h] ; 6th argument
ENDIF
mov rax, nr
int 40h
ret
@@ -73,43 +38,45 @@ ENDM
; ---------------------------------------------------------------------------
; Process & thread lifecycle
; ---------------------------------------------------------------------------
SYSCALL_STUB2 ExitProcess, SYS_EXIT_PROCESS
SYSCALL_STUB2 ExitThread, SYS_EXIT_THREAD
SYSCALL_STUB2 CreateProcess, SYS_CREATE_PROCESS
SYSCALL_STUB3 WaitSingle, SYS_WAIT_SINGLE
SYSCALL_STUB2 WaitMany, SYS_WAIT_MANY
SYSCALL_STUB2 OpenInputQueue, SYS_OPEN_INPUT_QUEUE
SYSCALL_STUB2 GetProcessExitCode, SYS_GET_PROCESS_EXIT_CODE
SYSCALL_STUB2 OpenProcess, SYS_OPEN_PROCESS
SYSCALL_STUB2 KillProcess, SYS_KILL_PROCESS
SYSCALL_STUB2 GetProcessList, SYS_GET_PROCESS_LIST
SYSCALL_STUB2 GetProcessPid, SYS_GET_PROCESS_PID
SYSCALL_STUB2 GetThreadList, SYS_GET_THREAD_LIST
SYSCALL_STUB2 LoadModule, SYS_LOAD_MODULE
SYSCALL_STUB2 UnloadModule, SYS_UNLOAD_MODULE
SYSCALL_STUB2 GetModuleInfo, SYS_GET_MODULE_INFO
SYSCALL_STUB2 GetModuleExport, SYS_GET_MODULE_EXPORT
SYSCALL_STUB2 GetModuleList, SYS_GET_MODULE_LIST
SYSCALL_STUB ExitProcess, SYS_EXIT_PROCESS
SYSCALL_STUB ExitThread, SYS_EXIT_THREAD
SYSCALL_STUB CreateProcessObject, SYS_CREATE_PROCESS_OBJECT
SYSCALL_STUB AllocProcessVm, SYS_ALLOC_PROCESS_VM
SYSCALL_STUB ProtectProcessVm, SYS_PROTECT_PROCESS_VM
SYSCALL_STUB StartProcess, SYS_START_PROCESS
SYSCALL_STUB WaitSingle, SYS_WAIT_SINGLE
SYSCALL_STUB WaitMany, SYS_WAIT_MANY
SYSCALL_STUB OpenInputQueue, SYS_OPEN_INPUT_QUEUE
SYSCALL_STUB GetProcessExitCode, SYS_GET_PROCESS_EXIT_CODE
SYSCALL_STUB OpenProcess, SYS_OPEN_PROCESS
SYSCALL_STUB KillProcess, SYS_KILL_PROCESS
SYSCALL_STUB GetProcessList, SYS_GET_PROCESS_LIST
SYSCALL_STUB GetProcessPid, SYS_GET_PROCESS_PID
SYSCALL_STUB GetThreadList, SYS_GET_THREAD_LIST
SYSCALL_STUB2 CreateThread, SYS_CREATE_THREAD
SYSCALL_STUB2 ResumeThread, SYS_RESUME_THREAD
SYSCALL_STUB2 GetCurrentTid, SYS_GET_CURRENT_TID
SYSCALL_STUB2 GetCurrentPid, SYS_GET_CURRENT_PID
SYSCALL_STUB2 SetThreadPriority, SYS_SET_THREAD_PRIORITY
SYSCALL_STUB2 Yield, SYS_YIELD
SYSCALL_STUB2 Sleep, SYS_SLEEP
SYSCALL_STUB2 SetUserApcDispatcher, SYS_SET_USER_APC_DISPATCHER
SYSCALL_STUB2 ApcReturn, SYS_APC_RETURN
SYSCALL_STUB2 SetExceptionDispatcher, SYS_SET_EXCEPTION_DISPATCHER
SYSCALL_STUB2 GetExceptionDispatcher, SYS_GET_EXCEPTION_DISPATCHER
SYSCALL_STUB2 ContinueException, SYS_CONTINUE_EXCEPTION
SYSCALL_STUB2 RaiseException, SYS_RAISE_EXCEPTION
SYSCALL_STUB CreateThread, SYS_CREATE_THREAD
SYSCALL_STUB ResumeThread, SYS_RESUME_THREAD
SYSCALL_STUB GetCurrentTid, SYS_GET_CURRENT_TID
SYSCALL_STUB GetCurrentPid, SYS_GET_CURRENT_PID
SYSCALL_STUB SetThreadPriority, SYS_SET_THREAD_PRIORITY
SYSCALL_STUB Yield, SYS_YIELD
SYSCALL_STUB Sleep, SYS_SLEEP
SYSCALL_STUB SetUserApcDispatcher, SYS_SET_USER_APC_DISPATCHER
SYSCALL_STUB ApcReturn, SYS_APC_RETURN
SYSCALL_STUB SetExceptionDispatcher, SYS_SET_EXCEPTION_DISPATCHER
SYSCALL_STUB GetExceptionDispatcher, SYS_GET_EXCEPTION_DISPATCHER
SYSCALL_STUB ContinueException, SYS_CONTINUE_EXCEPTION
SYSCALL_STUB RaiseException, SYS_RAISE_EXCEPTION
; ---------------------------------------------------------------------------
; User APC dispatcher
; ---------------------------------------------------------------------------
PUBLIC SysUserApcDispatcher
IFDEF NTL_SYSCALL_STATIC
SysUserApcDispatcher PROC
ELSE
SysUserApcDispatcher PROC EXPORT
ENDIF
; Kernel enters here with RSP pointing at SYS_USER_APC_FRAME. There is no
; return address because this is an IRET redirection. Preserve RBX because
; the original user context resumes after SysApcReturn.
@@ -137,152 +104,176 @@ SysUserApcDispatcher ENDP
; ---------------------------------------------------------------------------
; Virtual memory and handles
; ---------------------------------------------------------------------------
SYSCALL_STUB2 AllocVm, SYS_ALLOC_VM
SYSCALL_STUB2 FreeVm, SYS_FREE_VM
SYSCALL_STUB2 ProtectVm, SYS_PROTECT_VM
SYSCALL_STUB2 QueryVm, SYS_QUERY_VM
SYSCALL_STUB2 CloseHandle, SYS_CLOSE_HANDLE
SYSCALL_STUB2 DuplicateHandle, SYS_DUPLICATE_HANDLE
SYSCALL_STUB AllocVm, SYS_ALLOC_VM
SYSCALL_STUB FreeVm, SYS_FREE_VM
SYSCALL_STUB ProtectVm, SYS_PROTECT_VM
SYSCALL_STUB QueryVm, SYS_QUERY_VM
SYSCALL_STUB CloseHandle, SYS_CLOSE_HANDLE
SYSCALL_STUB DuplicateHandle, SYS_DUPLICATE_HANDLE
SYSCALL_STUB DeriveHandle, SYS_DERIVE_HANDLE
SYSCALL_STUB RevokeHandle, SYS_REVOKE_HANDLE
SYSCALL_STUB DeriveSecurityContext, SYS_DERIVE_SECURITY_CONTEXT
SYSCALL_STUB QuerySecurityContext, SYS_QUERY_SECURITY_CONTEXT
; ---------------------------------------------------------------------------
; Synchronization objects
; ---------------------------------------------------------------------------
SYSCALL_STUB2 CreateMutex, SYS_CREATE_MUTEX
SYSCALL_STUB2 TryAcquireMutex, SYS_TRY_ACQUIRE_MUTEX
SYSCALL_STUB2 ReleaseMutex, SYS_RELEASE_MUTEX
SYSCALL_STUB CreateMutex, SYS_CREATE_MUTEX
SYSCALL_STUB TryAcquireMutex, SYS_TRY_ACQUIRE_MUTEX
SYSCALL_STUB ReleaseMutex, SYS_RELEASE_MUTEX
SYSCALL_STUB2 CreateSem, SYS_CREATE_SEM
SYSCALL_STUB2 TryWaitSem, SYS_TRY_WAIT_SEM
SYSCALL_STUB2 SignalSem, SYS_SIGNAL_SEM
SYSCALL_STUB CreateSem, SYS_CREATE_SEM
SYSCALL_STUB TryWaitSem, SYS_TRY_WAIT_SEM
SYSCALL_STUB SignalSem, SYS_SIGNAL_SEM
SYSCALL_STUB2 CreateEvent, SYS_CREATE_EVENT
SYSCALL_STUB2 SignalEvent, SYS_SIGNAL_EVENT
SYSCALL_STUB2 ClearEvent, SYS_CLEAR_EVENT
SYSCALL_STUB CreateEvent, SYS_CREATE_EVENT
SYSCALL_STUB SignalEvent, SYS_SIGNAL_EVENT
SYSCALL_STUB ClearEvent, SYS_CLEAR_EVENT
; ---------------------------------------------------------------------------
; Queues and named queues
; ---------------------------------------------------------------------------
SYSCALL_STUB2 CreateQueue, SYS_CREATE_QUEUE
SYSCALL_STUB2 SendQueue, SYS_SEND_QUEUE
SYSCALL_STUB2 RecvQueue, SYS_RECV_QUEUE
SYSCALL_STUB2 PublishQueue, SYS_PUBLISH_QUEUE
SYSCALL_STUB2 UnpublishQueue, SYS_UNPUBLISH_QUEUE
SYSCALL_STUB2 OpenNamedQueue, SYS_OPEN_NAMED_QUEUE
SYSCALL_STUB2 OpenNamedQueueOwnerProcess, SYS_OPEN_NAMED_QUEUE_OWNER_PROCESS
SYSCALL_STUB CreateQueue, SYS_CREATE_QUEUE
SYSCALL_STUB SendQueue, SYS_SEND_QUEUE
SYSCALL_STUB RecvQueue, SYS_RECV_QUEUE
SYSCALL_STUB PublishQueue, SYS_PUBLISH_QUEUE
SYSCALL_STUB UnpublishQueue, SYS_UNPUBLISH_QUEUE
SYSCALL_STUB OpenNamedQueue, SYS_OPEN_NAMED_QUEUE
SYSCALL_STUB OpenNamedQueueOwnerProcess, SYS_OPEN_NAMED_QUEUE_OWNER_PROCESS
; ---------------------------------------------------------------------------
; Files, directories, and current directory
; LPC-like Ports and well-known system services
; ---------------------------------------------------------------------------
SYSCALL_STUB2 OpenFile, SYS_OPEN_FILE
SYSCALL_STUB2 ReadFile, SYS_READ_FILE
SYSCALL_STUB2 WriteFile, SYS_WRITE_FILE
SYSCALL_STUB2 ReadFileAsync, SYS_READ_FILE_ASYNC
SYSCALL_STUB2 WriteFileAsync, SYS_WRITE_FILE_ASYNC
SYSCALL_STUB2 CancelIo, SYS_CANCEL_IO
SYSCALL_STUB2 SeekFile, SYS_SEEK_FILE
SYSCALL_STUB2 GetFilePos, SYS_GET_FILE_POS
SYSCALL_STUB2 GetFileSize, SYS_GET_FILE_SIZE
SYSCALL_STUB2 GetFileStat, SYS_GET_FILE_STAT
SYSCALL_STUB2 StatFile, SYS_STAT_FILE
SYSCALL_STUB2 TruncateFile, SYS_TRUNCATE_FILE
SYSCALL_STUB2 FlushFile, SYS_FLUSH_FILE
SYSCALL_STUB2 DeleteFile, SYS_DELETE_FILE
SYSCALL_STUB2 RenameFile, SYS_RENAME_FILE
SYSCALL_STUB2 LockFile, SYS_LOCK_FILE
SYSCALL_STUB2 UnlockFile, SYS_UNLOCK_FILE
SYSCALL_STUB CreatePort, SYS_CREATE_PORT
SYSCALL_STUB ConnectPort, SYS_CONNECT_PORT
SYSCALL_STUB AcceptPort, SYS_ACCEPT_PORT
SYSCALL_STUB SendPort, SYS_SEND_PORT
SYSCALL_STUB ReceivePort, SYS_RECEIVE_PORT
SYSCALL_STUB CallPort, SYS_CALL_PORT
SYSCALL_STUB ReplyPort, SYS_REPLY_PORT
SYSCALL_STUB DisconnectPort, SYS_DISCONNECT_PORT
SYSCALL_STUB RegisterSystemService, SYS_REGISTER_SYSTEM_SERVICE
SYSCALL_STUB UnregisterSystemService, SYS_UNREGISTER_SYSTEM_SERVICE
SYSCALL_STUB ConnectSystemService, SYS_CONNECT_SYSTEM_SERVICE
SYSCALL_STUB2 OpenDir, SYS_OPEN_DIR
SYSCALL_STUB2 ReadDir, SYS_READ_DIR
SYSCALL_STUB2 CreateDir, SYS_CREATE_DIR
SYSCALL_STUB2 RemoveDir, SYS_REMOVE_DIR
SYSCALL_STUB2 SetCwd, SYS_SET_CWD
SYSCALL_STUB2 RealPath, SYS_REAL_PATH
; ---------------------------------------------------------------------------
; Mounted-volume manager control plane
; ---------------------------------------------------------------------------
SYSCALL_STUB QueryVolumes, SYS_QUERY_VOLUMES
SYSCALL_STUB OpenVolume, SYS_OPEN_VOLUME
SYSCALL_STUB WaitVolumeChange, SYS_WAIT_VOLUME_CHANGE
; ---------------------------------------------------------------------------
; Files and directories
; ---------------------------------------------------------------------------
SYSCALL_STUB OpenFileAt, SYS_OPEN_FILE_AT
SYSCALL_STUB OpenDirAt, SYS_OPEN_DIR_AT
SYSCALL_STUB StatAt, SYS_STAT_AT
SYSCALL_STUB DeleteAt, SYS_DELETE_AT
SYSCALL_STUB RenameAt, SYS_RENAME_AT
SYSCALL_STUB CreateDirAt, SYS_CREATE_DIR_AT
SYSCALL_STUB RemoveDirAt, SYS_REMOVE_DIR_AT
SYSCALL_STUB ReadFile, SYS_READ_FILE
SYSCALL_STUB WriteFile, SYS_WRITE_FILE
SYSCALL_STUB ReadFileAsync, SYS_READ_FILE_ASYNC
SYSCALL_STUB WriteFileAsync, SYS_WRITE_FILE_ASYNC
SYSCALL_STUB CancelIo, SYS_CANCEL_IO
SYSCALL_STUB SeekFile, SYS_SEEK_FILE
SYSCALL_STUB GetFilePos, SYS_GET_FILE_POS
SYSCALL_STUB GetFileSize, SYS_GET_FILE_SIZE
SYSCALL_STUB GetFileStat, SYS_GET_FILE_STAT
SYSCALL_STUB TruncateFile, SYS_TRUNCATE_FILE
SYSCALL_STUB FlushFile, SYS_FLUSH_FILE
SYSCALL_STUB LockFile, SYS_LOCK_FILE
SYSCALL_STUB UnlockFile, SYS_UNLOCK_FILE
SYSCALL_STUB ReadDir, SYS_READ_DIR
; ---------------------------------------------------------------------------
; Console and graphics
; ---------------------------------------------------------------------------
SYSCALL_STUB2 WriteConsole, SYS_WRITE_CONSOLE
SYSCALL_STUB2 GetConsoleInfo, SYS_GET_CONSOLE_INFO
SYSCALL_STUB2 SetConsoleCursor, SYS_SET_CONSOLE_CURSOR
SYSCALL_STUB6 FillConsoleCharacter, SYS_FILL_CONSOLE_CHARACTER
SYSCALL_STUB6 FillConsoleAttribute, SYS_FILL_CONSOLE_ATTRIBUTE
SYSCALL_STUB6 PutScreenChar, SYS_PUT_SCREEN_CHAR
SYSCALL_STUB2 CreateSurface, SYS_CREATE_SURFACE
SYSCALL_STUB2 MapSurface, SYS_MAP_SURFACE
SYSCALL_STUB2 QuerySurface, SYS_QUERY_SURFACE
SYSCALL_STUB2 PresentSurface, SYS_PRESENT_SURFACE
SYSCALL_STUB2 ClearScreen, SYS_CLEAR_SCREEN
SYSCALL_STUB2 GetScreenSize, SYS_GET_SCREEN_SIZE
SYSCALL_STUB2 QueryDisplayInfo, SYS_QUERY_DISPLAY_INFO
SYSCALL_STUB2 OpenDisplayClock, SYS_OPEN_DISPLAY_CLOCK
SYSCALL_STUB WriteConsole, SYS_WRITE_CONSOLE
SYSCALL_STUB GetConsoleInfo, SYS_GET_CONSOLE_INFO
SYSCALL_STUB SetConsoleCursor, SYS_SET_CONSOLE_CURSOR
SYSCALL_STUB FillConsoleCharacter, SYS_FILL_CONSOLE_CHARACTER
SYSCALL_STUB FillConsoleAttribute, SYS_FILL_CONSOLE_ATTRIBUTE
SYSCALL_STUB PutScreenChar, SYS_PUT_SCREEN_CHAR
SYSCALL_STUB CreateSurface, SYS_CREATE_SURFACE
SYSCALL_STUB MapSurface, SYS_MAP_SURFACE
SYSCALL_STUB QuerySurface, SYS_QUERY_SURFACE
SYSCALL_STUB PresentSurface, SYS_PRESENT_SURFACE
SYSCALL_STUB ClearScreen, SYS_CLEAR_SCREEN
SYSCALL_STUB GetScreenSize, SYS_GET_SCREEN_SIZE
SYSCALL_STUB QueryDisplayInfo, SYS_QUERY_DISPLAY_INFO
SYSCALL_STUB OpenDisplayClock, SYS_OPEN_DISPLAY_CLOCK
; ---------------------------------------------------------------------------
; Native render audio
; ---------------------------------------------------------------------------
SYSCALL_STUB2 AudioEnumerateEndpoints, SYS_AUDIO_ENUMERATE_ENDPOINTS
SYSCALL_STUB2 AudioOpenStream, SYS_AUDIO_OPEN_STREAM
SYSCALL_STUB2 AudioWrite, SYS_AUDIO_WRITE
SYSCALL_STUB2 AudioArmWait, SYS_AUDIO_ARM_WAIT
SYSCALL_STUB2 AudioQueryStream, SYS_AUDIO_QUERY_STREAM
SYSCALL_STUB2 AudioStart, SYS_AUDIO_START
SYSCALL_STUB2 AudioPause, SYS_AUDIO_PAUSE
SYSCALL_STUB2 AudioResume, SYS_AUDIO_RESUME
SYSCALL_STUB2 AudioDrain, SYS_AUDIO_DRAIN
SYSCALL_STUB2 AudioStop, SYS_AUDIO_STOP
SYSCALL_STUB2 AudioReset, SYS_AUDIO_RESET
SYSCALL_STUB2 AudioSetVolume, SYS_AUDIO_SET_VOLUME
SYSCALL_STUB2 AudioSetMasterVolume, SYS_AUDIO_SET_MASTER_VOLUME
SYSCALL_STUB AudioEnumerateEndpoints, SYS_AUDIO_ENUMERATE_ENDPOINTS
SYSCALL_STUB AudioOpenStream, SYS_AUDIO_OPEN_STREAM
SYSCALL_STUB AudioWrite, SYS_AUDIO_WRITE
SYSCALL_STUB AudioArmWait, SYS_AUDIO_ARM_WAIT
SYSCALL_STUB AudioQueryStream, SYS_AUDIO_QUERY_STREAM
SYSCALL_STUB AudioStart, SYS_AUDIO_START
SYSCALL_STUB AudioPause, SYS_AUDIO_PAUSE
SYSCALL_STUB AudioResume, SYS_AUDIO_RESUME
SYSCALL_STUB AudioDrain, SYS_AUDIO_DRAIN
SYSCALL_STUB AudioStop, SYS_AUDIO_STOP
SYSCALL_STUB AudioReset, SYS_AUDIO_RESET
SYSCALL_STUB AudioSetVolume, SYS_AUDIO_SET_VOLUME
SYSCALL_STUB AudioSetMasterVolume, SYS_AUDIO_SET_MASTER_VOLUME
; ---------------------------------------------------------------------------
; Input
; ---------------------------------------------------------------------------
SYSCALL_STUB2 PollKeyboard, SYS_POLL_KEYBOARD
SYSCALL_STUB2 IsKeyDown, SYS_IS_KEY_DOWN
SYSCALL_STUB2 ReadKeyboardChar, SYS_READ_KEYBOARD_CHAR
SYSCALL_STUB2 ReadKey, SYS_READ_KEY
SYSCALL_STUB2 GetKeyModifiers, SYS_GET_KEY_MODIFIERS
SYSCALL_STUB2 QueryGlobalInputState, SYS_QUERY_GLOBAL_INPUT_STATE
SYSCALL_STUB2 ReadInputEvent, SYS_READ_INPUT_EVENT
SYSCALL_STUB2 PeekInputEvent, SYS_PEEK_INPUT_EVENT
SYSCALL_STUB PollKeyboard, SYS_POLL_KEYBOARD
SYSCALL_STUB IsKeyDown, SYS_IS_KEY_DOWN
SYSCALL_STUB ReadKeyboardChar, SYS_READ_KEYBOARD_CHAR
SYSCALL_STUB ReadKey, SYS_READ_KEY
SYSCALL_STUB GetKeyModifiers, SYS_GET_KEY_MODIFIERS
SYSCALL_STUB QueryGlobalInputState, SYS_QUERY_GLOBAL_INPUT_STATE
SYSCALL_STUB ReadInputEvent, SYS_READ_INPUT_EVENT
SYSCALL_STUB PeekInputEvent, SYS_PEEK_INPUT_EVENT
SYSCALL_STUB2 PeekMouse, SYS_PEEK_MOUSE
SYSCALL_STUB2 ReadMouse, SYS_READ_MOUSE
SYSCALL_STUB2 GetMousePos, SYS_GET_MOUSE_POS
SYSCALL_STUB PeekMouse, SYS_PEEK_MOUSE
SYSCALL_STUB ReadMouse, SYS_READ_MOUSE
SYSCALL_STUB GetMousePos, SYS_GET_MOUSE_POS
; ---------------------------------------------------------------------------
; Time and debug
; ---------------------------------------------------------------------------
SYSCALL_STUB2 CreateTimer, SYS_CREATE_TIMER
SYSCALL_STUB2 SetTimer, SYS_SET_TIMER
SYSCALL_STUB2 CancelTimer, SYS_CANCEL_TIMER
SYSCALL_STUB2 GetTick, SYS_GET_TICK
SYSCALL_STUB2 GetTickFrequency, SYS_GET_TICK_FREQUENCY
SYSCALL_STUB2 PrintDebug, SYS_PRINT_DEBUG
SYSCALL_STUB2 QueryTrapFrame, SYS_QUERY_TRAP_FRAME
SYSCALL_STUB CreateTimer, SYS_CREATE_TIMER
SYSCALL_STUB SetTimer, SYS_SET_TIMER
SYSCALL_STUB CancelTimer, SYS_CANCEL_TIMER
SYSCALL_STUB GetTick, SYS_GET_TICK
SYSCALL_STUB GetTickFrequency, SYS_GET_TICK_FREQUENCY
SYSCALL_STUB PrintDebug, SYS_PRINT_DEBUG
SYSCALL_STUB QueryTrapFrame, SYS_QUERY_TRAP_FRAME
; ---------------------------------------------------------------------------
; Native sockets
; ---------------------------------------------------------------------------
SYSCALL_STUB2 CreateSocket, SYS_CREATE_SOCKET
SYSCALL_STUB2 SocketIoAsync, SYS_SOCKET_IO_ASYNC
SYSCALL_STUB2 BindSocket, SYS_BIND_SOCKET
SYSCALL_STUB2 ListenSocket, SYS_LISTEN_SOCKET
SYSCALL_STUB2 AcceptSocket, SYS_ACCEPT_SOCKET
SYSCALL_STUB2 ConnectSocket, SYS_CONNECT_SOCKET
SYSCALL_STUB6 SendSocket, SYS_SEND_SOCKET
SYSCALL_STUB6 RecvSocket, SYS_RECV_SOCKET
SYSCALL_STUB2 ShutdownSocket, SYS_SHUTDOWN_SOCKET
SYSCALL_STUB2 SendToSocket, SYS_SEND_TO_SOCKET
SYSCALL_STUB2 RecvFromSocket, SYS_RECV_FROM_SOCKET
SYSCALL_STUB2 ResolveHost, SYS_RESOLVE_HOST
SYSCALL_STUB2 SetSocketOption, SYS_SET_SOCKET_OPTION
SYSCALL_STUB2 GetSocketOption, SYS_GET_SOCKET_OPTION
SYSCALL_STUB2 Poll, SYS_POLL
SYSCALL_STUB CreateSocket, SYS_CREATE_SOCKET
SYSCALL_STUB SocketIoAsync, SYS_SOCKET_IO_ASYNC
SYSCALL_STUB BindSocket, SYS_BIND_SOCKET
SYSCALL_STUB ListenSocket, SYS_LISTEN_SOCKET
SYSCALL_STUB AcceptSocket, SYS_ACCEPT_SOCKET
SYSCALL_STUB ConnectSocket, SYS_CONNECT_SOCKET
SYSCALL_STUB SendSocket, SYS_SEND_SOCKET
SYSCALL_STUB RecvSocket, SYS_RECV_SOCKET
SYSCALL_STUB ShutdownSocket, SYS_SHUTDOWN_SOCKET
SYSCALL_STUB SendToSocket, SYS_SEND_TO_SOCKET
SYSCALL_STUB RecvFromSocket, SYS_RECV_FROM_SOCKET
SYSCALL_STUB ResolveHost, SYS_RESOLVE_HOST
SYSCALL_STUB SetSocketOption, SYS_SET_SOCKET_OPTION
SYSCALL_STUB GetSocketOption, SYS_GET_SOCKET_OPTION
SYSCALL_STUB Poll, SYS_POLL
SYSCALL_STUB2 GetMemoryStatus, SYS_GET_MEMORY_STATUS
SYSCALL_STUB2 QueryKernelStats, SYS_QUERY_KERNEL_STATS
SYSCALL_STUB2 GetSystemTime, SYS_GET_SYSTEM_TIME
SYSCALL_STUB5 CreateFileMapping, SYS_CREATE_FILE_MAPPING
SYSCALL_STUB6 MapFile, SYS_MAP_FILE
SYSCALL_STUB GetMemoryStatus, SYS_GET_MEMORY_STATUS
SYSCALL_STUB QueryKernelStats, SYS_QUERY_KERNEL_STATS
SYSCALL_STUB GetSystemTime, SYS_GET_SYSTEM_TIME
SYSCALL_STUB CreateFileMapping, SYS_CREATE_FILE_MAPPING
SYSCALL_STUB MapFile, SYS_MAP_FILE
END