155 lines
5.3 KiB
C
155 lines
5.3 KiB
C
// Kernel syscall number declarations shared by implementation files and kernel clients.
|
|
|
|
#pragma once
|
|
|
|
// INT 0x40 calling convention, MS x64.
|
|
// RAX selects the syscall number. RCX, RDX, R8, and R9 carry args 0-3.
|
|
// R10 and R11 carry args 4-5 and are loaded by six-argument stubs.
|
|
// RAX carries the return value.
|
|
|
|
// Process, threads, modules, waits, APC, and exceptions.
|
|
#define SYS_EXIT_PROCESS 0
|
|
#define SYS_EXIT_THREAD 1
|
|
#define SYS_CREATE_PROCESS 2
|
|
#define SYS_OPEN_PROCESS 3
|
|
#define SYS_GET_PROCESS_EXIT_CODE 4
|
|
#define SYS_KILL_PROCESS 5
|
|
#define SYS_GET_PROCESS_LIST 6
|
|
#define SYS_GET_PROCESS_PID 7
|
|
#define SYS_CREATE_THREAD 8
|
|
#define SYS_GET_THREAD_LIST 9
|
|
#define SYS_LOAD_MODULE 10
|
|
#define SYS_UNLOAD_MODULE 11
|
|
#define SYS_GET_MODULE_INFO 12
|
|
#define SYS_GET_MODULE_EXPORT 13
|
|
#define SYS_GET_MODULE_LIST 14
|
|
#define SYS_GET_CURRENT_TID 15
|
|
#define SYS_GET_CURRENT_PID 16
|
|
#define SYS_SET_THREAD_PRIORITY 17
|
|
#define SYS_YIELD 18
|
|
#define SYS_SLEEP 19
|
|
#define SYS_WAIT_SINGLE 20
|
|
#define SYS_WAIT_MANY 21
|
|
#define SYS_SET_USER_APC_DISPATCHER 22
|
|
#define SYS_APC_RETURN 23
|
|
#define SYS_SET_EXCEPTION_DISPATCHER 24
|
|
#define SYS_GET_EXCEPTION_DISPATCHER 25
|
|
#define SYS_CONTINUE_EXCEPTION 26
|
|
#define SYS_RAISE_EXCEPTION 27
|
|
|
|
// Virtual memory, mappings, and handles.
|
|
#define SYS_ALLOC_VM 28
|
|
#define SYS_FREE_VM 29
|
|
#define SYS_PROTECT_VM 30
|
|
#define SYS_QUERY_VM 31
|
|
#define SYS_CLOSE_HANDLE 32
|
|
#define SYS_DUPLICATE_HANDLE 33
|
|
#define SYS_CREATE_FILE_MAPPING 34
|
|
#define SYS_MAP_FILE 35
|
|
|
|
// Synchronization objects.
|
|
#define SYS_CREATE_MUTEX 36
|
|
#define SYS_TRY_ACQUIRE_MUTEX 37
|
|
#define SYS_RELEASE_MUTEX 38
|
|
#define SYS_CREATE_SEM 39
|
|
#define SYS_TRY_WAIT_SEM 40
|
|
#define SYS_SIGNAL_SEM 41
|
|
#define SYS_CREATE_EVENT 42
|
|
#define SYS_SIGNAL_EVENT 43
|
|
#define SYS_CLEAR_EVENT 44
|
|
|
|
// Queues and named queues.
|
|
#define SYS_CREATE_QUEUE 45
|
|
#define SYS_SEND_QUEUE 46
|
|
#define SYS_RECV_QUEUE 47
|
|
#define SYS_PUBLISH_QUEUE 48
|
|
#define SYS_OPEN_NAMED_QUEUE 49
|
|
#define SYS_OPEN_NAMED_QUEUE_OWNER_PROCESS 50
|
|
|
|
// Files, directories, and current directory.
|
|
#define SYS_OPEN_FILE 51
|
|
#define SYS_READ_FILE 52
|
|
#define SYS_WRITE_FILE 53
|
|
#define SYS_READ_FILE_ASYNC 54
|
|
#define SYS_WRITE_FILE_ASYNC 55
|
|
#define SYS_CANCEL_IO 56
|
|
#define SYS_SEEK_FILE 57
|
|
#define SYS_GET_FILE_POS 58
|
|
#define SYS_GET_FILE_SIZE 59
|
|
#define SYS_GET_FILE_STAT 60
|
|
#define SYS_STAT_FILE 61
|
|
#define SYS_TRUNCATE_FILE 62
|
|
#define SYS_FLUSH_FILE 63
|
|
#define SYS_DELETE_FILE 64
|
|
#define SYS_RENAME_FILE 65
|
|
#define SYS_LOCK_FILE 66
|
|
#define SYS_UNLOCK_FILE 67
|
|
#define SYS_OPEN_DIR 68
|
|
#define SYS_READ_DIR 69
|
|
#define SYS_CREATE_DIR 70
|
|
#define SYS_REMOVE_DIR 71
|
|
#define SYS_SET_CWD 72
|
|
#define SYS_REAL_PATH 73
|
|
|
|
// Console, display, and surfaces.
|
|
#define SYS_WRITE_CONSOLE 74
|
|
#define SYS_GET_CONSOLE_INFO 75
|
|
#define SYS_SET_CONSOLE_CURSOR 76
|
|
#define SYS_FILL_CONSOLE_CHARACTER 77
|
|
#define SYS_FILL_CONSOLE_ATTRIBUTE 78
|
|
#define SYS_PUT_SCREEN_CHAR 79
|
|
#define SYS_CLEAR_SCREEN 80
|
|
#define SYS_GET_SCREEN_SIZE 81
|
|
#define SYS_QUERY_DISPLAY_INFO 82
|
|
#define SYS_OPEN_DISPLAY_CLOCK 83
|
|
#define SYS_CREATE_SURFACE 84
|
|
#define SYS_MAP_SURFACE 85
|
|
#define SYS_QUERY_SURFACE 86
|
|
#define SYS_PRESENT_SURFACE 87
|
|
|
|
// Input.
|
|
#define SYS_POLL_KEYBOARD 88
|
|
#define SYS_IS_KEY_DOWN 89
|
|
#define SYS_READ_KEYBOARD_CHAR 90
|
|
#define SYS_READ_KEY 91
|
|
#define SYS_GET_KEY_MODIFIERS 92
|
|
#define SYS_QUERY_GLOBAL_INPUT_STATE 93
|
|
#define SYS_OPEN_INPUT_QUEUE 94
|
|
#define SYS_READ_INPUT_EVENT 95
|
|
#define SYS_PEEK_INPUT_EVENT 96
|
|
#define SYS_PEEK_MOUSE 97
|
|
#define SYS_READ_MOUSE 98
|
|
#define SYS_GET_MOUSE_POS 99
|
|
|
|
// Time, debug, and system information.
|
|
#define SYS_CREATE_TIMER 100
|
|
#define SYS_SET_TIMER 101
|
|
#define SYS_CANCEL_TIMER 102
|
|
#define SYS_GET_TICK 103
|
|
#define SYS_GET_TICK_FREQUENCY 104
|
|
#define SYS_GET_SYSTEM_TIME 105
|
|
#define SYS_PRINT_DEBUG 106
|
|
#define SYS_QUERY_TRAP_FRAME 107
|
|
#define SYS_GET_MEMORY_STATUS 108
|
|
#define SYS_QUERY_KERNEL_STATS 109
|
|
|
|
// Native sockets and polling.
|
|
#define SYS_CREATE_SOCKET 110
|
|
#define SYS_SOCKET_IO_ASYNC 111
|
|
#define SYS_BIND_SOCKET 112
|
|
#define SYS_LISTEN_SOCKET 113
|
|
#define SYS_ACCEPT_SOCKET 114
|
|
#define SYS_CONNECT_SOCKET 115
|
|
#define SYS_SEND_SOCKET 116
|
|
#define SYS_RECV_SOCKET 117
|
|
#define SYS_SHUTDOWN_SOCKET 118
|
|
#define SYS_SEND_TO_SOCKET 119
|
|
#define SYS_RECV_FROM_SOCKET 120
|
|
#define SYS_RESOLVE_HOST 121
|
|
#define SYS_SET_SOCKET_OPTION 122
|
|
#define SYS_GET_SOCKET_OPTION 123
|
|
#define SYS_POLL 124
|
|
#define SYS_UNPUBLISH_QUEUE 125
|
|
|
|
#define SYS_MAX 126
|