4 * Copyright (C) 2020 Alexandre Julliard
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #ifndef __NTDLL_UNIXLIB_H
22 #define __NTDLL_UNIXLIB_H
24 #include "wine/server.h"
25 #include "wine/debug.h"
27 struct _DISPATCHER_CONTEXT
;
29 /* increment this when you change the function table */
30 #define NTDLL_UNIXLIB_VERSION 106
35 TEB
* (WINAPI
*NtCurrentTeb
)(void);
37 /* other Win32 API functions */
38 NTSTATUS (WINAPI
*DbgUiIssueRemoteBreakin
)( HANDLE process
);
39 LONGLONG (WINAPI
*RtlGetSystemTimePrecise
)(void);
40 NTSTATUS (WINAPI
*RtlWaitOnAddress
)( const void *addr
, const void *cmp
, SIZE_T size
,
41 const LARGE_INTEGER
*timeout
);
42 void (WINAPI
*RtlWakeAddressAll
)( const void *addr
);
43 void (WINAPI
*RtlWakeAddressSingle
)( const void *addr
);
46 NTSTATUS (CDECL
*fast_RtlpWaitForCriticalSection
)( RTL_CRITICAL_SECTION
*crit
, int timeout
);
47 NTSTATUS (CDECL
*fast_RtlpUnWaitCriticalSection
)( RTL_CRITICAL_SECTION
*crit
);
48 NTSTATUS (CDECL
*fast_RtlDeleteCriticalSection
)( RTL_CRITICAL_SECTION
*crit
);
49 NTSTATUS (CDECL
*fast_RtlTryAcquireSRWLockExclusive
)( RTL_SRWLOCK
*lock
);
50 NTSTATUS (CDECL
*fast_RtlAcquireSRWLockExclusive
)( RTL_SRWLOCK
*lock
);
51 NTSTATUS (CDECL
*fast_RtlTryAcquireSRWLockShared
)( RTL_SRWLOCK
*lock
);
52 NTSTATUS (CDECL
*fast_RtlAcquireSRWLockShared
)( RTL_SRWLOCK
*lock
);
53 NTSTATUS (CDECL
*fast_RtlReleaseSRWLockExclusive
)( RTL_SRWLOCK
*lock
);
54 NTSTATUS (CDECL
*fast_RtlReleaseSRWLockShared
)( RTL_SRWLOCK
*lock
);
55 NTSTATUS (CDECL
*fast_RtlWakeConditionVariable
)( RTL_CONDITION_VARIABLE
*variable
, int count
);
56 NTSTATUS (CDECL
*fast_wait_cv
)( RTL_CONDITION_VARIABLE
*variable
, const void *value
,
57 const LARGE_INTEGER
*timeout
);
60 double (CDECL
*atan
)( double d
);
61 double (CDECL
*ceil
)( double d
);
62 double (CDECL
*cos
)( double d
);
63 double (CDECL
*fabs
)( double d
);
64 double (CDECL
*floor
)( double d
);
65 double (CDECL
*log
)( double d
);
66 double (CDECL
*pow
)( double x
, double y
);
67 double (CDECL
*sin
)( double d
);
68 double (CDECL
*sqrt
)( double d
);
69 double (CDECL
*tan
)( double d
);
71 /* environment functions */
72 NTSTATUS (CDECL
*get_initial_environment
)( WCHAR
**wargv
[], WCHAR
*env
, SIZE_T
*size
);
73 NTSTATUS (CDECL
*get_startup_info
)( startup_info_t
*info
, SIZE_T
*total_size
, SIZE_T
*info_size
);
74 NTSTATUS (CDECL
*get_dynamic_environment
)( WCHAR
*env
, SIZE_T
*size
);
75 void (CDECL
*get_initial_console
)( RTL_USER_PROCESS_PARAMETERS
*params
);
76 void (CDECL
*get_initial_directory
)( UNICODE_STRING
*dir
);
77 USHORT
* (CDECL
*get_unix_codepage_data
)(void);
78 void (CDECL
*get_locales
)( WCHAR
*sys
, WCHAR
*user
);
80 /* virtual memory functions */
81 void (CDECL
*virtual_release_address_space
)(void);
84 void (CDECL
*set_show_dot_files
)( BOOL enable
);
86 /* loader functions */
87 NTSTATUS (CDECL
*load_so_dll
)( UNICODE_STRING
*nt_name
, void **module
);
88 NTSTATUS (CDECL
*load_builtin_dll
)( const WCHAR
*name
, void **module
, void **unix_entry
,
89 SECTION_IMAGE_INFORMATION
*image_info
);
90 NTSTATUS (CDECL
*unload_builtin_dll
)( void *module
);
91 void (CDECL
*init_builtin_dll
)( void *module
);
92 NTSTATUS (CDECL
*unwind_builtin_dll
)( ULONG type
, struct _DISPATCHER_CONTEXT
*dispatch
,
95 /* debugging functions */
96 unsigned char (CDECL
*dbg_get_channel_flags
)( struct __wine_debug_channel
*channel
);
97 const char * (CDECL
*dbg_strdup
)( const char *str
);
98 int (CDECL
*dbg_output
)( const char *str
);
99 int (CDECL
*dbg_header
)( enum __wine_debug_class cls
, struct __wine_debug_channel
*channel
,
100 const char *function
);
103 #endif /* __NTDLL_UNIXLIB_H */