mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-01 07:03:37 +00:00
ntdll: Declare the syscall functions array explicitly.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
7ae1c396ac
commit
ea6308e364
|
@ -116,13 +116,248 @@ SYSTEM_DLL_INIT_BLOCK *pLdrSystemDllInitBlock = NULL;
|
|||
static NTSTATUS (CDECL *p__wine_set_unix_funcs)( int version, const struct unix_funcs *funcs );
|
||||
static void *p__wine_syscall_dispatcher;
|
||||
|
||||
extern SYSTEM_SERVICE_TABLE __wine_syscall_table DECLSPEC_HIDDEN;
|
||||
static void * const syscalls[] =
|
||||
{
|
||||
NtAcceptConnectPort,
|
||||
NtAccessCheck,
|
||||
NtAccessCheckAndAuditAlarm,
|
||||
NtAddAtom,
|
||||
NtAdjustGroupsToken,
|
||||
NtAdjustPrivilegesToken,
|
||||
NtAlertResumeThread,
|
||||
NtAlertThread,
|
||||
NtAllocateLocallyUniqueId,
|
||||
NtAllocateUuids,
|
||||
NtAllocateVirtualMemory,
|
||||
NtAllocateVirtualMemoryEx,
|
||||
NtAreMappedFilesTheSame,
|
||||
NtAssignProcessToJobObject,
|
||||
NtCallbackReturn,
|
||||
NtCancelIoFile,
|
||||
NtCancelIoFileEx,
|
||||
NtCancelTimer,
|
||||
NtClearEvent,
|
||||
NtClearPowerRequest,
|
||||
NtClose,
|
||||
NtCompleteConnectPort,
|
||||
NtConnectPort,
|
||||
NtContinue,
|
||||
NtCreateDebugObject,
|
||||
NtCreateDirectoryObject,
|
||||
NtCreateEvent,
|
||||
NtCreateFile,
|
||||
NtCreateIoCompletion,
|
||||
NtCreateJobObject,
|
||||
NtCreateKey,
|
||||
NtCreateKeyTransacted,
|
||||
NtCreateKeyedEvent,
|
||||
NtCreateLowBoxToken,
|
||||
NtCreateMailslotFile,
|
||||
NtCreateMutant,
|
||||
NtCreateNamedPipeFile,
|
||||
NtCreatePagingFile,
|
||||
NtCreatePort,
|
||||
NtCreatePowerRequest,
|
||||
NtCreateSection,
|
||||
NtCreateSemaphore,
|
||||
NtCreateSymbolicLinkObject,
|
||||
NtCreateThread,
|
||||
NtCreateThreadEx,
|
||||
NtCreateTimer,
|
||||
NtCreateUserProcess,
|
||||
NtDebugActiveProcess,
|
||||
NtDebugContinue,
|
||||
NtDelayExecution,
|
||||
NtDeleteAtom,
|
||||
NtDeleteFile,
|
||||
NtDeleteKey,
|
||||
NtDeleteValueKey,
|
||||
NtDeviceIoControlFile,
|
||||
NtDisplayString,
|
||||
NtDuplicateObject,
|
||||
NtDuplicateToken,
|
||||
NtEnumerateKey,
|
||||
NtEnumerateValueKey,
|
||||
NtFilterToken,
|
||||
NtFindAtom,
|
||||
NtFlushBuffersFile,
|
||||
NtFlushInstructionCache,
|
||||
NtFlushKey,
|
||||
NtFlushProcessWriteBuffers,
|
||||
NtFlushVirtualMemory,
|
||||
NtFreeVirtualMemory,
|
||||
NtFsControlFile,
|
||||
NtGetContextThread,
|
||||
NtGetCurrentProcessorNumber,
|
||||
NtGetNextThread,
|
||||
NtGetNlsSectionPtr,
|
||||
NtGetWriteWatch,
|
||||
NtImpersonateAnonymousToken,
|
||||
NtInitiatePowerAction ,
|
||||
NtIsProcessInJob,
|
||||
NtListenPort,
|
||||
NtLoadDriver,
|
||||
NtLoadKey,
|
||||
NtLoadKey2,
|
||||
NtLockFile,
|
||||
NtLockVirtualMemory,
|
||||
NtMakeTemporaryObject,
|
||||
NtMapViewOfSection,
|
||||
NtNotifyChangeDirectoryFile,
|
||||
NtNotifyChangeKey,
|
||||
NtNotifyChangeMultipleKeys,
|
||||
NtOpenDirectoryObject,
|
||||
NtOpenEvent,
|
||||
NtOpenFile,
|
||||
NtOpenIoCompletion,
|
||||
NtOpenJobObject,
|
||||
NtOpenKey,
|
||||
NtOpenKeyEx,
|
||||
NtOpenKeyTransacted,
|
||||
NtOpenKeyTransactedEx,
|
||||
NtOpenKeyedEvent,
|
||||
NtOpenMutant,
|
||||
NtOpenProcess,
|
||||
NtOpenProcessToken,
|
||||
NtOpenProcessTokenEx,
|
||||
NtOpenSection,
|
||||
NtOpenSemaphore,
|
||||
NtOpenSymbolicLinkObject ,
|
||||
NtOpenThread,
|
||||
NtOpenThreadToken,
|
||||
NtOpenThreadTokenEx,
|
||||
NtOpenTimer,
|
||||
NtPowerInformation,
|
||||
NtPrivilegeCheck,
|
||||
NtProtectVirtualMemory,
|
||||
NtPulseEvent,
|
||||
NtQueryAttributesFile,
|
||||
NtQueryDefaultLocale,
|
||||
NtQueryDefaultUILanguage,
|
||||
NtQueryDirectoryFile,
|
||||
NtQueryDirectoryObject,
|
||||
NtQueryEaFile,
|
||||
NtQueryEvent,
|
||||
NtQueryFullAttributesFile,
|
||||
NtQueryInformationAtom,
|
||||
NtQueryInformationFile,
|
||||
NtQueryInformationJobObject,
|
||||
NtQueryInformationProcess,
|
||||
NtQueryInformationThread,
|
||||
NtQueryInformationToken,
|
||||
NtQueryInstallUILanguage,
|
||||
NtQueryIoCompletion,
|
||||
NtQueryKey,
|
||||
NtQueryLicenseValue,
|
||||
NtQueryMultipleValueKey,
|
||||
NtQueryMutant,
|
||||
NtQueryObject,
|
||||
NtQueryPerformanceCounter,
|
||||
NtQuerySection,
|
||||
NtQuerySecurityObject,
|
||||
NtQuerySemaphore ,
|
||||
NtQuerySymbolicLinkObject,
|
||||
NtQuerySystemEnvironmentValue,
|
||||
NtQuerySystemEnvironmentValueEx,
|
||||
NtQuerySystemInformation,
|
||||
NtQuerySystemInformationEx,
|
||||
NtQuerySystemTime,
|
||||
NtQueryTimer,
|
||||
NtQueryTimerResolution,
|
||||
NtQueryValueKey,
|
||||
NtQueryVirtualMemory,
|
||||
NtQueryVolumeInformationFile,
|
||||
NtQueueApcThread,
|
||||
NtRaiseException,
|
||||
NtRaiseHardError,
|
||||
NtReadFile,
|
||||
NtReadFileScatter,
|
||||
NtReadVirtualMemory,
|
||||
NtRegisterThreadTerminatePort,
|
||||
NtReleaseKeyedEvent,
|
||||
NtReleaseMutant,
|
||||
NtReleaseSemaphore,
|
||||
NtRemoveIoCompletion,
|
||||
NtRemoveIoCompletionEx,
|
||||
NtRemoveProcessDebug,
|
||||
NtRenameKey,
|
||||
NtReplaceKey,
|
||||
NtReplyWaitReceivePort,
|
||||
NtRequestWaitReplyPort,
|
||||
NtResetEvent,
|
||||
NtResetWriteWatch,
|
||||
NtRestoreKey,
|
||||
NtResumeProcess,
|
||||
NtResumeThread,
|
||||
NtSaveKey,
|
||||
NtSecureConnectPort,
|
||||
NtSetContextThread,
|
||||
NtSetDefaultLocale,
|
||||
NtSetDefaultUILanguage,
|
||||
NtSetEaFile,
|
||||
NtSetEvent,
|
||||
NtSetInformationDebugObject,
|
||||
NtSetInformationFile,
|
||||
NtSetInformationJobObject,
|
||||
NtSetInformationKey,
|
||||
NtSetInformationObject,
|
||||
NtSetInformationProcess,
|
||||
NtSetInformationThread,
|
||||
NtSetInformationToken,
|
||||
NtSetIntervalProfile,
|
||||
NtSetIoCompletion,
|
||||
NtSetLdtEntries,
|
||||
NtSetPowerRequest,
|
||||
NtSetSecurityObject,
|
||||
NtSetSystemInformation,
|
||||
NtSetSystemTime,
|
||||
NtSetThreadExecutionState,
|
||||
NtSetTimer,
|
||||
NtSetTimerResolution,
|
||||
NtSetValueKey,
|
||||
NtSetVolumeInformationFile,
|
||||
NtShutdownSystem,
|
||||
NtSignalAndWaitForSingleObject,
|
||||
NtSuspendProcess,
|
||||
NtSuspendThread,
|
||||
NtSystemDebugControl,
|
||||
NtTerminateJobObject,
|
||||
NtTerminateProcess,
|
||||
NtTerminateThread,
|
||||
NtTestAlert,
|
||||
NtTraceControl,
|
||||
NtUnloadDriver,
|
||||
NtUnloadKey,
|
||||
NtUnlockFile,
|
||||
NtUnlockVirtualMemory,
|
||||
NtUnmapViewOfSection,
|
||||
NtWaitForDebugEvent,
|
||||
NtWaitForKeyedEvent,
|
||||
NtWaitForMultipleObjects,
|
||||
NtWaitForSingleObject,
|
||||
#ifndef _WIN64
|
||||
NtWow64AllocateVirtualMemory64,
|
||||
NtWow64GetNativeSystemInformation,
|
||||
NtWow64ReadVirtualMemory64,
|
||||
NtWow64WriteVirtualMemory64,
|
||||
#endif
|
||||
NtWriteFile,
|
||||
NtWriteFileGather,
|
||||
NtWriteVirtualMemory,
|
||||
NtYieldExecution,
|
||||
__wine_dbg_write,
|
||||
__wine_unix_call,
|
||||
wine_nt_to_unix_file_name,
|
||||
wine_server_call,
|
||||
wine_server_fd_to_handle,
|
||||
wine_server_handle_to_fd,
|
||||
wine_unix_to_nt_file_name,
|
||||
};
|
||||
|
||||
static BYTE syscall_args[4096];
|
||||
static BYTE syscall_args[ARRAY_SIZE(syscalls)];
|
||||
|
||||
SYSTEM_SERVICE_TABLE KeServiceDescriptorTable[4];
|
||||
|
||||
|
||||
#ifdef __GNUC__
|
||||
static void fatal_error( const char *err, ... ) __attribute__((noreturn, format(printf,1,2)));
|
||||
#endif
|
||||
|
@ -1947,7 +2182,7 @@ static struct unix_funcs unix_funcs =
|
|||
*/
|
||||
static void start_main_thread(void)
|
||||
{
|
||||
SYSTEM_SERVICE_TABLE syscall_table = __wine_syscall_table;
|
||||
SYSTEM_SERVICE_TABLE syscall_table = { (ULONG_PTR *)syscalls, NULL, ARRAY_SIZE(syscalls), syscall_args };
|
||||
NTSTATUS status;
|
||||
TEB *teb = virtual_alloc_first_teb();
|
||||
|
||||
|
@ -1970,7 +2205,6 @@ static void start_main_thread(void)
|
|||
NtCreateKeyedEvent( &keyed_event, GENERIC_READ | GENERIC_WRITE, NULL, 0 );
|
||||
load_ntdll();
|
||||
if (main_image_info.Machine != current_machine) load_wow64_ntdll( main_image_info.Machine );
|
||||
syscall_table.ArgumentTable = syscall_args;
|
||||
ntdll_init_syscalls( 0, &syscall_table, p__wine_syscall_dispatcher );
|
||||
status = p__wine_set_unix_funcs( NTDLL_UNIXLIB_VERSION, &unix_funcs );
|
||||
if (status == STATUS_REVISION_MISMATCH)
|
||||
|
|
|
@ -3847,6 +3847,7 @@ NTSYSAPI NTSTATUS WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATT
|
|||
NTSYSAPI NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG);
|
||||
NTSYSAPI NTSTATUS WINAPI NtCreateKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,HANDLE,ULONG*);
|
||||
NTSYSAPI NTSTATUS WINAPI NtCreateKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG);
|
||||
NTSYSAPI NTSTATUS WINAPI NtCreateLowBoxToken(HANDLE*,HANDLE,ACCESS_MASK,OBJECT_ATTRIBUTES*,SID*,ULONG,SID_AND_ATTRIBUTES*,ULONG,HANDLE*);
|
||||
NTSYSAPI NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER);
|
||||
NTSYSAPI NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN);
|
||||
NTSYSAPI NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER);
|
||||
|
|
|
@ -1426,6 +1426,8 @@ void output_syscalls( DLLSPEC *spec )
|
|||
int i, count;
|
||||
ORDDEF **syscalls = NULL;
|
||||
|
||||
if (unix_lib) return;
|
||||
|
||||
for (i = count = 0; i < spec->nb_entry_points; i++)
|
||||
{
|
||||
ORDDEF *odp = &spec->entry_points[i];
|
||||
|
@ -1439,18 +1441,6 @@ void output_syscalls( DLLSPEC *spec )
|
|||
output( "\n/* system calls */\n\n" );
|
||||
output( "\t.text\n" );
|
||||
|
||||
if (unix_lib)
|
||||
{
|
||||
output( "\t.data\n" );
|
||||
output( "\t.align %d\n", get_alignment( get_ptr_size() ) );
|
||||
output( "%s\n", asm_globl("__wine_syscall_table") );
|
||||
output( "\t%s .Lsyscall_table, 0, %u, 0\n", get_asm_ptr_keyword(), count );
|
||||
output( ".Lsyscall_table:\n" );
|
||||
for (i = 0; i < count; i++)
|
||||
output( "\t%s %s\n", get_asm_ptr_keyword(), asm_name( get_link_name( syscalls[i] )));
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
ORDDEF *odp = syscalls[i];
|
||||
|
|
Loading…
Reference in a new issue