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
This commit is contained in:
1 parent
e41bf6e2c0
commit
6260de0085
38 files changed
+4011
-467
No files matched your search
+157
-62
@@ -61,6 +61,7 @@
|
||||
#include <kernel/net_socket.h>
|
||||
#include <kernel/ke_trap.h>
|
||||
#include <kernel/ke_input.h>
|
||||
#include <kernel/ke_display.h>
|
||||
#include <kernel/ke_time.h>
|
||||
#include <ntlite/syscall.h>
|
||||
|
||||
@@ -1204,12 +1205,12 @@ static uint64_t SyscallGetFileSize(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_BLIT_SCREEN (36) a0=x a1=y a2=w a3=h a4=*pixels
|
||||
// SYS_BLIT_SCREEN (66) a0=x a1=y a2=w a3=h a4=*pixels
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallScreenBlit(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
static uint64_t SyscallBlitScreen(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
(void)a5;
|
||||
if (!gHal || !a4) return STATUS_FAILURE;
|
||||
if (!a4) return STATUS_FAILURE;
|
||||
|
||||
int w = (int)a2;
|
||||
int h = (int)a3;
|
||||
@@ -1227,32 +1228,30 @@ static uint64_t SyscallScreenBlit(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
|
||||
KSTATUS s = CopyFromUser(kpixels, (const void*)(uintptr_t)a4, bytes);
|
||||
if (KSUCCESS(s))
|
||||
gHal->Screen.Blit((int)a0, (int)a1, w, h, kpixels);
|
||||
s = KeDisplayBlit((int)a0, (int)a1, w, h, kpixels);
|
||||
|
||||
MmFreePool(kpixels);
|
||||
return s;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_CLEAR_SCREEN (37) a0=color
|
||||
// SYS_CLEAR_SCREEN (67) a0=color
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallScreenClear(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
static uint64_t SyscallClearScreen(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
(void)a1; (void)a2; (void)a3; (void)a4; (void)a5;
|
||||
if (!gHal) return STATUS_FAILURE;
|
||||
gHal->Screen.Clear((uint32_t)a0);
|
||||
return STATUS_SUCCESS;
|
||||
return KeDisplayClear((uint32_t)a0);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_GET_SCREEN_SIZE (38) a0=*widthOut a1=*heightOut
|
||||
// SYS_GET_SCREEN_SIZE (68) a0=*widthOut a1=*heightOut
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallScreenGetSize(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
static uint64_t SyscallGetScreenSize(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
(void)a2; (void)a3; (void)a4; (void)a5;
|
||||
if (!gHal) return STATUS_FAILURE;
|
||||
int w = 0, h = 0;
|
||||
gHal->Screen.GetSize(&w, &h);
|
||||
KSTATUS gs = KeDisplayGetSize(&w, &h);
|
||||
if (!KSUCCESS(gs)) return gs;
|
||||
if (a0) {
|
||||
KSTATUS s = KiCopyIntToUser(a0, w);
|
||||
if (!KSUCCESS(s)) return s;
|
||||
@@ -1265,19 +1264,89 @@ static uint64_t SyscallScreenGetSize(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_PUT_SCREEN_CHAR (39) a0=c a1=x a2=y a3=fg a4=bg
|
||||
// SYS_PUT_SCREEN_CHAR (65) a0=c a1=x a2=y a3=fg a4=bg
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallScreenPutChar(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
static uint64_t SyscallPutScreenChar(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
(void)a5;
|
||||
if (!gHal) return STATUS_FAILURE;
|
||||
gHal->Screen.PutChar((char)a0, (int)a1, (int)a2,
|
||||
(uint32_t)a3, (uint32_t)a4);
|
||||
return STATUS_SUCCESS;
|
||||
return KeDisplayPutChar((char)a0, (int)a1, (int)a2,
|
||||
(uint32_t)a3, (uint32_t)a4);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_POLL_KEYBOARD (64) -> next INPUT_KEY or INPUT_KEY_NONE
|
||||
// SYS_GET_CONSOLE_INFO (61) a0=*SYS_CONSOLE_INFO
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallGetConsoleInfo(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
(void)a1; (void)a2; (void)a3; (void)a4; (void)a5;
|
||||
if (!a0) return STATUS_INVALID_PARAMETER;
|
||||
|
||||
KE_CONSOLE_INFO ki;
|
||||
KSTATUS s = KeDisplayGetConsoleInfo(&ki);
|
||||
if (!KSUCCESS(s)) return s;
|
||||
|
||||
SYS_CONSOLE_INFO out;
|
||||
memset(&out, 0, sizeof(out));
|
||||
out.Columns = ki.Columns;
|
||||
out.Rows = ki.Rows;
|
||||
out.CursorX = ki.CursorX;
|
||||
out.CursorY = ki.CursorY;
|
||||
out.Attribute = ki.Attribute;
|
||||
return CopyToUser((void*)(uintptr_t)a0, &out, sizeof(out));
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_SET_CONSOLE_CURSOR (62) a0=column a1=row
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallSetConsoleCursor(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
(void)a2; (void)a3; (void)a4; (void)a5;
|
||||
int col = (int)(int32_t)a0;
|
||||
int row = (int)(int32_t)a1;
|
||||
if (col < 0 || row < 0) return STATUS_INVALID_PARAMETER;
|
||||
return KeDisplaySetConsoleCursor(col, row);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_FILL_CONSOLE_CHARACTER (63) a0=char a1=column a2=row a3=count a4=*writtenOut
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallFillConsoleCharacter(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
(void)a5;
|
||||
int col = (int)(int32_t)a1;
|
||||
int row = (int)(int32_t)a2;
|
||||
if (col < 0 || row < 0) return STATUS_INVALID_PARAMETER;
|
||||
|
||||
size_t written = 0;
|
||||
KSTATUS s = KeDisplayFillConsoleChars((char)a0, col, row, (size_t)a3, &written);
|
||||
if (a4) {
|
||||
KSTATUS cs = KiCopySizeToUser(a4, written);
|
||||
if (KSUCCESS(s) && !KSUCCESS(cs)) s = cs;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_FILL_CONSOLE_ATTRIBUTE (64) a0=attribute a1=column a2=row a3=count a4=*writtenOut
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallFillConsoleAttribute(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
(void)a5;
|
||||
int col = (int)(int32_t)a1;
|
||||
int row = (int)(int32_t)a2;
|
||||
if (col < 0 || row < 0) return STATUS_INVALID_PARAMETER;
|
||||
|
||||
size_t written = 0;
|
||||
KSTATUS s = KeDisplayFillConsoleAttrs((uint16_t)a0, col, row, (size_t)a3, &written);
|
||||
if (a4) {
|
||||
KSTATUS cs = KiCopySizeToUser(a4, written);
|
||||
if (KSUCCESS(s) && !KSUCCESS(cs)) s = cs;
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_POLL_KEYBOARD (70) -> next INPUT_KEY or INPUT_KEY_NONE
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallKbPoll(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
@@ -1286,7 +1355,7 @@ static uint64_t SyscallKbPoll(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_IS_KEY_DOWN (65) a0=INPUT_KEY -> 1 or 0
|
||||
// SYS_IS_KEY_DOWN (71) a0=INPUT_KEY -> 1 or 0
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallKbIsKeyDown(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
@@ -1295,7 +1364,7 @@ static uint64_t SyscallKbIsKeyDown(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_READ_KEYBOARD_CHAR (66) -> char (blocks, yields while waiting)
|
||||
// SYS_READ_KEYBOARD_CHAR (72) -> char (blocks, yields while waiting)
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallKbReadChar(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
@@ -1305,7 +1374,7 @@ static uint64_t SyscallKbReadChar(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_READ_KEY (67) -> INPUT_KEY (blocks, yields while waiting)
|
||||
// SYS_READ_KEY (73) -> INPUT_KEY (blocks, yields while waiting)
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallKbReadKey(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
@@ -1315,7 +1384,7 @@ static uint64_t SyscallKbReadKey(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_GET_KEY_MODIFIERS (68) -> uint32_t INPUT_MOD_* flags
|
||||
// SYS_GET_KEY_MODIFIERS (74) -> uint32_t INPUT_MOD_* flags
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallKbGetModifiers(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
@@ -1324,7 +1393,7 @@ static uint64_t SyscallKbGetModifiers(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_POLL_MOUSE (69) -> 1 or 0
|
||||
// SYS_POLL_MOUSE (75) -> 1 or 0
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallMousePoll(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
@@ -1333,7 +1402,7 @@ static uint64_t SyscallMousePoll(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_READ_MOUSE (70) a0=*dx a1=*dy a2=*buttons -> 1 or 0
|
||||
// SYS_READ_MOUSE (76) a0=*dx a1=*dy a2=*buttons -> 1 or 0
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallMouseRead(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
@@ -1351,7 +1420,7 @@ static uint64_t SyscallMouseRead(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_GET_MOUSE_POS (71) a0=*x a1=*y
|
||||
// SYS_GET_MOUSE_POS (77) a0=*x a1=*y
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallMouseGetPos(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
@@ -1366,7 +1435,7 @@ static uint64_t SyscallMouseGetPos(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_GET_TICK (48) -> uint64_t microseconds
|
||||
// SYS_GET_TICK (78) -> uint64_t microseconds
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallGetTick(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
@@ -1389,7 +1458,7 @@ static uint64_t SyscallGetSystemTime(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_PRINT_DEBUG (49) a0=*str
|
||||
// SYS_PRINT_DEBUG (79) a0=*str
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallDebugPrint(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
@@ -1607,7 +1676,7 @@ static uint64_t SyscallGetProcessExitCode(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// SYS_WRITE_CONSOLE (53) a0=*buf a1=len
|
||||
// SYS_WRITE_CONSOLE (60) a0=*buf a1=len
|
||||
// Writes user console text in white; distinct from green SYS_PRINT_DEBUG.
|
||||
// ---------------------------------------------------------------------------
|
||||
static uint64_t SyscallWriteConsole(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
@@ -2716,6 +2785,27 @@ static KSTATUS KiReturnKernelStats(uint64_t bufferArg, size_t bufferSize,
|
||||
return CopyToUser((void*)(uintptr_t)bufferArg, src, size);
|
||||
}
|
||||
|
||||
static uint64_t SyscallQueryDisplayInfo(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
(void)a1; (void)a2; (void)a3; (void)a4; (void)a5;
|
||||
if (!a0) return STATUS_INVALID_PARAMETER;
|
||||
|
||||
KE_DISPLAY_INFO ki;
|
||||
KSTATUS s = KeDisplayQueryInfo(&ki);
|
||||
if (!KSUCCESS(s)) return s;
|
||||
|
||||
SYS_DISPLAY_INFO out;
|
||||
memset(&out, 0, sizeof(out));
|
||||
memcpy(out.PrimaryName, ki.PrimaryName, sizeof(out.PrimaryName));
|
||||
out.Mode = ki.Mode;
|
||||
out.Caps = ki.Caps;
|
||||
out.DeviceCount = ki.DeviceCount;
|
||||
out.ManagerStats = ki.ManagerStats;
|
||||
out.DeviceStats = ki.DeviceStats;
|
||||
|
||||
return CopyToUser((void*)(uintptr_t)a0, &out, sizeof(out));
|
||||
}
|
||||
|
||||
static uint64_t SyscallQueryKernelStats(uint64_t a0, uint64_t a1, uint64_t a2,
|
||||
uint64_t a3, uint64_t a4, uint64_t a5) {
|
||||
(void)a4; (void)a5;
|
||||
@@ -2856,38 +2946,43 @@ static const SYSCALL_HANDLER gSyscallTable[SYS_MAX] = {
|
||||
/* 58 SYS_SET_CWD */ SyscallSetCwd,
|
||||
/* 59 SYS_GET_CWD */ SyscallGetCwd,
|
||||
/* 60 SYS_WRITE_CONSOLE */ SyscallWriteConsole,
|
||||
/* 61 SYS_BLIT_SCREEN */ SyscallScreenBlit,
|
||||
/* 62 SYS_CLEAR_SCREEN */ SyscallScreenClear,
|
||||
/* 63 SYS_GET_SCREEN_SIZE */ SyscallScreenGetSize,
|
||||
/* 64 SYS_PUT_SCREEN_CHAR */ SyscallScreenPutChar,
|
||||
/* 65 SYS_POLL_KEYBOARD */ SyscallKbPoll,
|
||||
/* 66 SYS_IS_KEY_DOWN */ SyscallKbIsKeyDown,
|
||||
/* 67 SYS_READ_KEYBOARD_CHAR */ SyscallKbReadChar,
|
||||
/* 68 SYS_READ_KEY */ SyscallKbReadKey,
|
||||
/* 69 SYS_GET_KEY_MODIFIERS */ SyscallKbGetModifiers,
|
||||
/* 70 SYS_POLL_MOUSE */ SyscallMousePoll,
|
||||
/* 71 SYS_READ_MOUSE */ SyscallMouseRead,
|
||||
/* 72 SYS_GET_MOUSE_POS */ SyscallMouseGetPos,
|
||||
/* 73 SYS_GET_TICK */ SyscallGetTick,
|
||||
/* 74 SYS_PRINT_DEBUG */ SyscallDebugPrint,
|
||||
/* 75 SYS_QUERY_TRAP_FRAME */ SyscallQueryTrapFrame,
|
||||
/* 76 SYS_CREATE_SOCKET */ SyscallSocket,
|
||||
/* 77 SYS_BIND_SOCKET */ SyscallBind,
|
||||
/* 78 SYS_LISTEN_SOCKET */ SyscallListen,
|
||||
/* 79 SYS_ACCEPT_SOCKET */ SyscallAccept,
|
||||
/* 80 SYS_CONNECT_SOCKET */ SyscallConnect,
|
||||
/* 81 SYS_SEND_SOCKET */ SyscallSend,
|
||||
/* 82 SYS_RECV_SOCKET */ SyscallRecv,
|
||||
/* 83 SYS_SHUTDOWN_SOCKET */ SyscallShutdown,
|
||||
/* 84 SYS_SEND_TO_SOCKET */ SyscallSendTo,
|
||||
/* 85 SYS_RECV_FROM_SOCKET */ SyscallRecvFrom,
|
||||
/* 86 SYS_RESOLVE_HOST */ SyscallResolveHost,
|
||||
/* 87 SYS_SET_SOCKET_OPTION */ SyscallSetSocketOption,
|
||||
/* 88 SYS_GET_SOCKET_OPTION */ SyscallGetSocketOption,
|
||||
/* 89 SYS_POLL */ SyscallPoll,
|
||||
/* 90 SYS_GET_MEMORY_STATUS */ SyscallGetMemoryStatus,
|
||||
/* 91 SYS_QUERY_KERNEL_STATS */ SyscallQueryKernelStats,
|
||||
/* 92 SYS_GET_SYSTEM_TIME */ SyscallGetSystemTime
|
||||
/* 61 SYS_GET_CONSOLE_INFO */ SyscallGetConsoleInfo,
|
||||
/* 62 SYS_SET_CONSOLE_CURSOR */ SyscallSetConsoleCursor,
|
||||
/* 63 SYS_FILL_CONSOLE_CHARACTER */ SyscallFillConsoleCharacter,
|
||||
/* 64 SYS_FILL_CONSOLE_ATTRIBUTE */ SyscallFillConsoleAttribute,
|
||||
/* 65 SYS_PUT_SCREEN_CHAR */ SyscallPutScreenChar,
|
||||
/* 66 SYS_BLIT_SCREEN */ SyscallBlitScreen,
|
||||
/* 67 SYS_CLEAR_SCREEN */ SyscallClearScreen,
|
||||
/* 68 SYS_GET_SCREEN_SIZE */ SyscallGetScreenSize,
|
||||
/* 69 SYS_QUERY_DISPLAY_INFO */ SyscallQueryDisplayInfo,
|
||||
/* 70 SYS_POLL_KEYBOARD */ SyscallKbPoll,
|
||||
/* 71 SYS_IS_KEY_DOWN */ SyscallKbIsKeyDown,
|
||||
/* 72 SYS_READ_KEYBOARD_CHAR */ SyscallKbReadChar,
|
||||
/* 73 SYS_READ_KEY */ SyscallKbReadKey,
|
||||
/* 74 SYS_GET_KEY_MODIFIERS */ SyscallKbGetModifiers,
|
||||
/* 75 SYS_POLL_MOUSE */ SyscallMousePoll,
|
||||
/* 76 SYS_READ_MOUSE */ SyscallMouseRead,
|
||||
/* 77 SYS_GET_MOUSE_POS */ SyscallMouseGetPos,
|
||||
/* 78 SYS_GET_TICK */ SyscallGetTick,
|
||||
/* 79 SYS_PRINT_DEBUG */ SyscallDebugPrint,
|
||||
/* 80 SYS_QUERY_TRAP_FRAME */ SyscallQueryTrapFrame,
|
||||
/* 81 SYS_CREATE_SOCKET */ SyscallSocket,
|
||||
/* 82 SYS_BIND_SOCKET */ SyscallBind,
|
||||
/* 83 SYS_LISTEN_SOCKET */ SyscallListen,
|
||||
/* 84 SYS_ACCEPT_SOCKET */ SyscallAccept,
|
||||
/* 85 SYS_CONNECT_SOCKET */ SyscallConnect,
|
||||
/* 86 SYS_SEND_SOCKET */ SyscallSend,
|
||||
/* 87 SYS_RECV_SOCKET */ SyscallRecv,
|
||||
/* 88 SYS_SHUTDOWN_SOCKET */ SyscallShutdown,
|
||||
/* 89 SYS_SEND_TO_SOCKET */ SyscallSendTo,
|
||||
/* 90 SYS_RECV_FROM_SOCKET */ SyscallRecvFrom,
|
||||
/* 91 SYS_RESOLVE_HOST */ SyscallResolveHost,
|
||||
/* 92 SYS_SET_SOCKET_OPTION */ SyscallSetSocketOption,
|
||||
/* 93 SYS_GET_SOCKET_OPTION */ SyscallGetSocketOption,
|
||||
/* 94 SYS_POLL */ SyscallPoll,
|
||||
/* 95 SYS_GET_MEMORY_STATUS */ SyscallGetMemoryStatus,
|
||||
/* 96 SYS_QUERY_KERNEL_STATS */ SyscallQueryKernelStats,
|
||||
/* 97 SYS_GET_SYSTEM_TIME */ SyscallGetSystemTime
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in new issue
Block a user