move POSIX spawn, exec and child tracking into posixsrv, keep process transactions alive across reconnects and preserve stable PIDs across image replacement, flesh out spawn with ordered file actions, process-group selection and signal inheritance, implement execve with bootstrap validation and rollback before retiring the old process, add vfork children that share the native process while keeping separate POSIX descriptor and signal state, replace local spawn bookkeeping with child reaping, nonblocking and process-group waits and orphan cleanup, add signal dispositions, per-thread masks, pending delivery, process/group signalling and alarms, translate native exceptions into POSIX signals and inherit masks when creating threads, make pipe waits interruptible and raise SIGPIPE for broken pipes, pass arguments and environment into main and add getenv/environ, add direct user APC notifications that can run without an alertable wait, add current-thread capabilities and resume-and-wait, let accepted IPC endpoints open restricted peer process capabilities and preserve caller security during spawn and exec, make process preparation reusable and improve DLL lookup across current, executable and fallback directories, move keyboard repeat into RSSRV so PS/2 and USB share one repeat policy, fix video presentation, report launch failure stages and status codes, mooaaar tests.

This commit is contained in:
maksw committed 2026-09-23 09:39:42 +02:00
1 parent 73abd6f90d
commit 899225f551
57 files changed
+8817 -1216

No files matched your search

+167 -161
View File
@@ -13,187 +13,193 @@ SYS_KILL_PROCESS EQU 8
SYS_GET_PROCESS_LIST EQU 9
SYS_GET_PROCESS_PID EQU 10
SYS_CREATE_THREAD EQU 11
SYS_RESUME_THREAD EQU 12
SYS_GET_THREAD_LIST EQU 13
SYS_GET_CURRENT_TID EQU 14
SYS_GET_CURRENT_PID EQU 15
SYS_SET_THREAD_PRIORITY EQU 16
SYS_SET_THREAD_NAME EQU 17
SYS_QUERY_THREAD_NAME EQU 18
SYS_YIELD EQU 19
SYS_SLEEP EQU 20
SYS_WAIT_SINGLE EQU 21
SYS_WAIT_MANY EQU 22
SYS_SET_USER_APC_DISPATCHER EQU 23
SYS_APC_RETURN EQU 24
SYS_SET_EXCEPTION_DISPATCHER EQU 25
SYS_GET_EXCEPTION_DISPATCHER EQU 26
SYS_CONTINUE_EXCEPTION EQU 27
SYS_RAISE_EXCEPTION EQU 28
SYS_OPEN_CURRENT_THREAD EQU 12
SYS_RESUME_THREAD EQU 13
SYS_RESUME_THREAD_AND_WAIT EQU 14
SYS_GET_THREAD_LIST EQU 15
SYS_GET_THREAD_TID EQU 16
SYS_GET_CURRENT_TID EQU 17
SYS_GET_CURRENT_PID EQU 18
SYS_SET_THREAD_PRIORITY EQU 19
SYS_SET_THREAD_NAME EQU 20
SYS_QUERY_THREAD_NAME EQU 21
SYS_YIELD EQU 22
SYS_SLEEP EQU 23
SYS_WAIT_SINGLE EQU 24
SYS_WAIT_MANY EQU 25
SYS_SET_USER_APC_DISPATCHER EQU 26
SYS_QUEUE_USER_APC EQU 27
SYS_APC_RETURN EQU 28
SYS_SET_EXCEPTION_DISPATCHER EQU 29
SYS_GET_EXCEPTION_DISPATCHER EQU 30
SYS_CONTINUE_EXCEPTION EQU 31
SYS_RAISE_EXCEPTION EQU 32
; Virtual memory, mappings, and handles.
SYS_ALLOC_VM EQU 29
SYS_FREE_VM EQU 30
SYS_PROTECT_VM EQU 31
SYS_QUERY_VM EQU 32
SYS_CLOSE_HANDLE EQU 33
SYS_DUPLICATE_HANDLE EQU 34
SYS_DERIVE_HANDLE EQU 35
SYS_REVOKE_HANDLE EQU 36
SYS_DERIVE_SECURITY_CONTEXT EQU 37
SYS_QUERY_SECURITY_CONTEXT EQU 38
SYS_CREATE_FILE_MAPPING EQU 39
SYS_MAP_FILE EQU 40
SYS_ALLOC_VM EQU 33
SYS_FREE_VM EQU 34
SYS_PROTECT_VM EQU 35
SYS_QUERY_VM EQU 36
SYS_CLOSE_HANDLE EQU 37
SYS_DUPLICATE_HANDLE EQU 38
SYS_DERIVE_HANDLE EQU 39
SYS_REVOKE_HANDLE EQU 40
SYS_DERIVE_SECURITY_CONTEXT EQU 41
SYS_QUERY_SECURITY_CONTEXT EQU 42
SYS_OPEN_PROCESS_SECURITY_CONTEXT EQU 43
SYS_CREATE_FILE_MAPPING EQU 44
SYS_MAP_FILE EQU 45
; Synchronization objects.
SYS_CREATE_MUTEX EQU 41
SYS_TRY_ACQUIRE_MUTEX EQU 42
SYS_RELEASE_MUTEX EQU 43
SYS_CREATE_SEM EQU 44
SYS_TRY_WAIT_SEM EQU 45
SYS_SIGNAL_SEM EQU 46
SYS_CREATE_EVENT EQU 47
SYS_SIGNAL_EVENT EQU 48
SYS_CLEAR_EVENT EQU 49
SYS_CREATE_MUTEX EQU 46
SYS_TRY_ACQUIRE_MUTEX EQU 47
SYS_RELEASE_MUTEX EQU 48
SYS_CREATE_SEM EQU 49
SYS_TRY_WAIT_SEM EQU 50
SYS_SIGNAL_SEM EQU 51
SYS_CREATE_EVENT EQU 52
SYS_SIGNAL_EVENT EQU 53
SYS_CLEAR_EVENT EQU 54
; Queues and named queues.
SYS_CREATE_QUEUE EQU 50
SYS_SEND_QUEUE EQU 51
SYS_RECV_QUEUE EQU 52
SYS_PUBLISH_QUEUE EQU 53
SYS_OPEN_NAMED_QUEUE EQU 54
SYS_OPEN_NAMED_QUEUE_OWNER_PROCESS EQU 55
SYS_UNPUBLISH_QUEUE EQU 56
SYS_CREATE_QUEUE EQU 55
SYS_SEND_QUEUE EQU 56
SYS_RECV_QUEUE EQU 57
SYS_PUBLISH_QUEUE EQU 58
SYS_OPEN_NAMED_QUEUE EQU 59
SYS_OPEN_NAMED_QUEUE_OWNER_PROCESS EQU 60
SYS_UNPUBLISH_QUEUE EQU 61
; LPC-like Ports and well-known system services.
SYS_CREATE_PORT EQU 57
SYS_CONNECT_PORT EQU 58
SYS_ACCEPT_PORT EQU 59
SYS_SEND_PORT EQU 60
SYS_RECEIVE_PORT EQU 61
SYS_CALL_PORT EQU 62
SYS_REPLY_PORT EQU 63
SYS_DISCONNECT_PORT EQU 64
SYS_REGISTER_SYSTEM_SERVICE EQU 65
SYS_UNREGISTER_SYSTEM_SERVICE EQU 66
SYS_CONNECT_SYSTEM_SERVICE EQU 67
SYS_CREATE_PORT EQU 62
SYS_CONNECT_PORT EQU 63
SYS_ACCEPT_PORT EQU 64
SYS_SEND_PORT EQU 65
SYS_RECEIVE_PORT EQU 66
SYS_CALL_PORT EQU 67
SYS_REPLY_PORT EQU 68
SYS_DISCONNECT_PORT EQU 69
SYS_OPEN_PORT_PEER_PROCESS EQU 70
SYS_REGISTER_SYSTEM_SERVICE EQU 71
SYS_UNREGISTER_SYSTEM_SERVICE EQU 72
SYS_CONNECT_SYSTEM_SERVICE EQU 73
; Mounted-volume manager control plane.
SYS_QUERY_VOLUMES EQU 68
SYS_OPEN_VOLUME EQU 69
SYS_WAIT_VOLUME_CHANGE EQU 70
SYS_QUERY_VOLUMES EQU 74
SYS_OPEN_VOLUME EQU 75
SYS_WAIT_VOLUME_CHANGE EQU 76
; Files and directories.
SYS_OPEN_FILE_AT EQU 71
SYS_OPEN_DIR_AT EQU 72
SYS_STAT_AT EQU 73
SYS_DELETE_AT EQU 74
SYS_RENAME_AT EQU 75
SYS_CREATE_DIR_AT EQU 76
SYS_REMOVE_DIR_AT EQU 77
SYS_READ_FILE EQU 78
SYS_WRITE_FILE EQU 79
SYS_READ_FILE_ASYNC EQU 80
SYS_WRITE_FILE_ASYNC EQU 81
SYS_CANCEL_IO EQU 82
SYS_SEEK_FILE EQU 83
SYS_GET_FILE_POS EQU 84
SYS_GET_FILE_SIZE EQU 85
SYS_GET_FILE_STAT EQU 86
SYS_TRUNCATE_FILE EQU 87
SYS_FLUSH_FILE EQU 88
SYS_LOCK_FILE EQU 89
SYS_UNLOCK_FILE EQU 90
SYS_QUERY_FILE_LOCK EQU 91
SYS_SET_FILE_STATUS EQU 92
SYS_CREATE_PIPE EQU 93
SYS_NOTIFY_PIPE EQU 94
SYS_READ_DIR EQU 95
SYS_OPEN_FILE_AT EQU 77
SYS_OPEN_DIR_AT EQU 78
SYS_STAT_AT EQU 79
SYS_DELETE_AT EQU 80
SYS_RENAME_AT EQU 81
SYS_CREATE_DIR_AT EQU 82
SYS_REMOVE_DIR_AT EQU 83
SYS_READ_FILE EQU 84
SYS_WRITE_FILE EQU 85
SYS_READ_FILE_ASYNC EQU 86
SYS_WRITE_FILE_ASYNC EQU 87
SYS_CANCEL_IO EQU 88
SYS_SEEK_FILE EQU 89
SYS_GET_FILE_POS EQU 90
SYS_GET_FILE_SIZE EQU 91
SYS_GET_FILE_STAT EQU 92
SYS_TRUNCATE_FILE EQU 93
SYS_FLUSH_FILE EQU 94
SYS_LOCK_FILE EQU 95
SYS_UNLOCK_FILE EQU 96
SYS_QUERY_FILE_LOCK EQU 97
SYS_SET_FILE_STATUS EQU 98
SYS_CREATE_PIPE EQU 99
SYS_NOTIFY_PIPE EQU 100
SYS_READ_DIR EQU 101
; Console, display, and surfaces.
SYS_WRITE_CONSOLE EQU 96
SYS_GET_CONSOLE_INFO EQU 97
SYS_SET_CONSOLE_CURSOR EQU 98
SYS_FILL_CONSOLE_CHARACTER EQU 99
SYS_FILL_CONSOLE_ATTRIBUTE EQU 100
SYS_PUT_SCREEN_CHAR EQU 101
SYS_CLEAR_SCREEN EQU 102
SYS_GET_SCREEN_SIZE EQU 103
SYS_QUERY_DISPLAY_INFO EQU 104
SYS_QUERY_DISPLAY_MANAGER_INFO EQU 105
SYS_PRESENT_DISPLAY_MANAGER_SURFACE EQU 106
SYS_SET_DISPLAY_MANAGER_CURSOR EQU 107
SYS_WRITE_DISPLAY_MANAGER_CONSOLE EQU 108
SYS_QUERY_DISPLAY_MANAGER_CONSOLE_INFO EQU 109
SYS_SET_DISPLAY_MANAGER_CONSOLE_CURSOR EQU 110
SYS_FILL_DISPLAY_MANAGER_CONSOLE_CHARACTER EQU 111
SYS_FILL_DISPLAY_MANAGER_CONSOLE_ATTRIBUTE EQU 112
SYS_PUT_DISPLAY_MANAGER_CONSOLE_CHARACTER EQU 113
SYS_CLEAR_DISPLAY_MANAGER_CONSOLE EQU 114
SYS_OPEN_DISPLAY_CLOCK EQU 115
SYS_CREATE_SURFACE EQU 116
SYS_MAP_SURFACE EQU 117
SYS_UNMAP_SURFACE EQU 118
SYS_QUERY_SURFACE EQU 119
SYS_COMMIT_SURFACE EQU 120
SYS_WRITE_CONSOLE EQU 102
SYS_GET_CONSOLE_INFO EQU 103
SYS_SET_CONSOLE_CURSOR EQU 104
SYS_FILL_CONSOLE_CHARACTER EQU 105
SYS_FILL_CONSOLE_ATTRIBUTE EQU 106
SYS_PUT_SCREEN_CHAR EQU 107
SYS_CLEAR_SCREEN EQU 108
SYS_GET_SCREEN_SIZE EQU 109
SYS_QUERY_DISPLAY_INFO EQU 110
SYS_QUERY_DISPLAY_MANAGER_INFO EQU 111
SYS_PRESENT_DISPLAY_MANAGER_SURFACE EQU 112
SYS_SET_DISPLAY_MANAGER_CURSOR EQU 113
SYS_WRITE_DISPLAY_MANAGER_CONSOLE EQU 114
SYS_QUERY_DISPLAY_MANAGER_CONSOLE_INFO EQU 115
SYS_SET_DISPLAY_MANAGER_CONSOLE_CURSOR EQU 116
SYS_FILL_DISPLAY_MANAGER_CONSOLE_CHARACTER EQU 117
SYS_FILL_DISPLAY_MANAGER_CONSOLE_ATTRIBUTE EQU 118
SYS_PUT_DISPLAY_MANAGER_CONSOLE_CHARACTER EQU 119
SYS_CLEAR_DISPLAY_MANAGER_CONSOLE EQU 120
SYS_OPEN_DISPLAY_CLOCK EQU 121
SYS_CREATE_SURFACE EQU 122
SYS_MAP_SURFACE EQU 123
SYS_UNMAP_SURFACE EQU 124
SYS_QUERY_SURFACE EQU 125
SYS_COMMIT_SURFACE EQU 126
; Native render audio.
SYS_AUDIO_ENUMERATE_ENDPOINTS EQU 121
SYS_AUDIO_OPEN_STREAM EQU 122
SYS_AUDIO_WRITE EQU 123
SYS_AUDIO_ARM_WAIT EQU 124
SYS_AUDIO_QUERY_STREAM EQU 125
SYS_AUDIO_START EQU 126
SYS_AUDIO_PAUSE EQU 127
SYS_AUDIO_RESUME EQU 128
SYS_AUDIO_DRAIN EQU 129
SYS_AUDIO_STOP EQU 130
SYS_AUDIO_RESET EQU 131
SYS_AUDIO_SET_VOLUME EQU 132
SYS_AUDIO_SET_MASTER_VOLUME EQU 133
SYS_AUDIO_ENUMERATE_ENDPOINTS EQU 127
SYS_AUDIO_OPEN_STREAM EQU 128
SYS_AUDIO_WRITE EQU 129
SYS_AUDIO_ARM_WAIT EQU 130
SYS_AUDIO_QUERY_STREAM EQU 131
SYS_AUDIO_START EQU 132
SYS_AUDIO_PAUSE EQU 133
SYS_AUDIO_RESUME EQU 134
SYS_AUDIO_DRAIN EQU 135
SYS_AUDIO_STOP EQU 136
SYS_AUDIO_RESET EQU 137
SYS_AUDIO_SET_VOLUME EQU 138
SYS_AUDIO_SET_MASTER_VOLUME EQU 139
; Input.
SYS_READ_INPUT_MANAGER_EVENT EQU 134
SYS_POLL_KEYBOARD EQU 135
SYS_IS_KEY_DOWN EQU 136
SYS_READ_KEYBOARD_CHAR EQU 137
SYS_READ_KEY EQU 138
SYS_GET_KEY_MODIFIERS EQU 139
SYS_QUERY_GLOBAL_INPUT_STATE EQU 140
SYS_OPEN_INPUT_QUEUE EQU 141
SYS_READ_INPUT_EVENT EQU 142
SYS_PEEK_INPUT_EVENT EQU 143
SYS_PEEK_MOUSE EQU 144
SYS_READ_MOUSE EQU 145
SYS_GET_MOUSE_POS EQU 146
SYS_READ_INPUT_MANAGER_EVENT EQU 140
SYS_POLL_KEYBOARD EQU 141
SYS_IS_KEY_DOWN EQU 142
SYS_READ_KEYBOARD_CHAR EQU 143
SYS_READ_KEY EQU 144
SYS_GET_KEY_MODIFIERS EQU 145
SYS_QUERY_GLOBAL_INPUT_STATE EQU 146
SYS_OPEN_INPUT_QUEUE EQU 147
SYS_READ_INPUT_EVENT EQU 148
SYS_PEEK_INPUT_EVENT EQU 149
SYS_PEEK_MOUSE EQU 150
SYS_READ_MOUSE EQU 151
SYS_GET_MOUSE_POS EQU 152
; Time, debug, and system information.
SYS_CREATE_TIMER EQU 147
SYS_SET_TIMER EQU 148
SYS_CANCEL_TIMER EQU 149
SYS_GET_TICK EQU 150
SYS_GET_TICK_FREQUENCY EQU 151
SYS_GET_SYSTEM_TIME EQU 152
SYS_PRINT_DEBUG EQU 153
SYS_QUERY_TRAP_FRAME EQU 154
SYS_GET_MEMORY_STATUS EQU 155
SYS_QUERY_KERNEL_STATS EQU 156
SYS_CREATE_TIMER EQU 153
SYS_SET_TIMER EQU 154
SYS_CANCEL_TIMER EQU 155
SYS_GET_TICK EQU 156
SYS_GET_TICK_FREQUENCY EQU 157
SYS_GET_SYSTEM_TIME EQU 158
SYS_PRINT_DEBUG EQU 159
SYS_QUERY_TRAP_FRAME EQU 160
SYS_GET_MEMORY_STATUS EQU 161
SYS_QUERY_KERNEL_STATS EQU 162
; Native sockets and polling.
SYS_CREATE_SOCKET EQU 157
SYS_SOCKET_IO_ASYNC EQU 158
SYS_BIND_SOCKET EQU 159
SYS_LISTEN_SOCKET EQU 160
SYS_ACCEPT_SOCKET EQU 161
SYS_CONNECT_SOCKET EQU 162
SYS_SEND_SOCKET EQU 163
SYS_RECV_SOCKET EQU 164
SYS_SHUTDOWN_SOCKET EQU 165
SYS_SEND_TO_SOCKET EQU 166
SYS_RECV_FROM_SOCKET EQU 167
SYS_RESOLVE_HOST EQU 168
SYS_SET_SOCKET_OPTION EQU 169
SYS_GET_SOCKET_OPTION EQU 170
SYS_POLL EQU 171
SYS_CREATE_SOCKET EQU 163
SYS_SOCKET_IO_ASYNC EQU 164
SYS_BIND_SOCKET EQU 165
SYS_LISTEN_SOCKET EQU 166
SYS_ACCEPT_SOCKET EQU 167
SYS_CONNECT_SOCKET EQU 168
SYS_SEND_SOCKET EQU 169
SYS_RECV_SOCKET EQU 170
SYS_SHUTDOWN_SOCKET EQU 171
SYS_SEND_TO_SOCKET EQU 172
SYS_RECV_FROM_SOCKET EQU 173
SYS_RESOLVE_HOST EQU 174
SYS_SET_SOCKET_OPTION EQU 175
SYS_GET_SOCKET_OPTION EQU 176
SYS_POLL EQU 177
SYS_MAX EQU 172
SYS_MAX EQU 178