Made GetProcessHeap(), GetCurrentProcessId(), GetCurrentThread() and
GetCurrentProcess() inline.
diff --git a/include/process.h b/include/process.h
index c5ea777..341b54c 100644
--- a/include/process.h
+++ b/include/process.h
@@ -15,9 +15,6 @@
struct _THREAD_ENTRY;
struct _UTINFO;
-/* Current Process pseudo-handle - Returned by GetCurrentProcess*/
-#define CURRENT_PROCESS_PSEUDOHANDLE ((HANDLE)0x7fffffff)
-
/* Win32 process environment database */
typedef struct
{
diff --git a/include/thread.h b/include/thread.h
index 6ba215a..4471906 100644
--- a/include/thread.h
+++ b/include/thread.h
@@ -44,7 +44,7 @@
struct _TEB *self; /* 12- 18 Pointer to this structure */
WORD tibflags; /* 1!n 1c Flags (NT: EnvironmentPointer) */
WORD mutex_count; /* 1-n 1e Win16 mutex count */
- DWORD debug_context; /* 1!n 20 Debug context (NT: PVOID UniqueProcess) */
+ void *pid; /* !2- 20 Process id (win95: debug context) */
void *tid; /* -2- 24 Thread id */
HQUEUE16 queue; /* 1!- 28 Message queue (NT: DWORD ActiveRpcHandle)*/
WORD pad1; /* --n 2a */
@@ -113,16 +113,13 @@
#define TEBF_WIN32 0x0001
#define TEBF_TRAP 0x0002
-/* The pseudo handle value returned by GetCurrentThread */
-#define CURRENT_THREAD_PSEUDOHANDLE 0xfffffffe
-
/* The per-thread signal stack size */
#define SIGNAL_STACK_SIZE 16384
/* scheduler/thread.c */
extern TEB *THREAD_CreateInitialThread( struct _PDB *pdb, int server_fd );
-extern TEB *THREAD_Create( struct _PDB *pdb, void *tid, int fd, DWORD flags,
+extern TEB *THREAD_Create( struct _PDB *pdb, void *pid, void *tid, int fd, DWORD flags,
DWORD stack_size, BOOL alloc_stack16 );
extern BOOL THREAD_IsWin16( TEB *thdb );
extern TEB *THREAD_IdToTEB( DWORD id );
diff --git a/include/winbase.h b/include/winbase.h
index 0a5949c..3af19ce 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -237,6 +237,8 @@
#define INVALID_HANDLE_VALUE16 ((HANDLE16) -1)
#define INVALID_HANDLE_VALUE ((HANDLE) -1)
+#define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF)
+
/* comm */
#define CBR_110 0xFF10
@@ -1269,13 +1271,12 @@
DWORD WINAPI GetConsoleTitleA(LPSTR,DWORD);
DWORD WINAPI GetConsoleTitleW(LPWSTR,DWORD);
#define GetConsoleTitle WINELIB_NAME_AW(GetConsoleTitle)
-BOOL WINAPI GetCommMask(HANDLE, LPDWORD);
-BOOL WINAPI GetCommModemStatus(HANDLE, LPDWORD);
-HANDLE WINAPI GetCurrentProcess(void);
-DWORD WINAPI GetCurrentProcessId(void);
-HANDLE WINAPI GetCurrentThread(void);
-INT WINAPI GetDateFormatA(LCID,DWORD,LPSYSTEMTIME,LPCSTR,LPSTR,INT);
-INT WINAPI GetDateFormatW(LCID,DWORD,LPSYSTEMTIME,LPCWSTR,LPWSTR,INT);
+BOOL WINAPI GetCommMask(HANDLE, LPDWORD);
+BOOL WINAPI GetCommModemStatus(HANDLE, LPDWORD);
+HANDLE WINAPI GetCurrentProcess(void);
+HANDLE WINAPI GetCurrentThread(void);
+INT WINAPI GetDateFormatA(LCID,DWORD,LPSYSTEMTIME,LPCSTR,LPSTR,INT);
+INT WINAPI GetDateFormatW(LCID,DWORD,LPSYSTEMTIME,LPCWSTR,LPWSTR,INT);
#define GetDateFormat WINELIB_NAME_AW(GetDateFormat)
LPSTR WINAPI GetEnvironmentStringsA(void);
LPWSTR WINAPI GetEnvironmentStringsW(void);
@@ -1310,7 +1311,6 @@
UINT WINAPI GetOEMCP(void);
BOOL WINAPI GetOldestEventLogRecord(HANDLE,PDWORD);
DWORD WINAPI GetPriorityClass(HANDLE);
-HANDLE WINAPI GetProcessHeap(void);
DWORD WINAPI GetProcessVersion(DWORD);
BOOL WINAPI GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR_CONTROL,LPDWORD);
BOOL WINAPI GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL *,LPBOOL);
@@ -1816,6 +1816,14 @@
return ret;
}
+extern inline DWORD WINAPI GetCurrentProcessId(void);
+extern inline DWORD WINAPI GetCurrentProcessId(void)
+{
+ DWORD ret;
+ __asm__ __volatile__( ".byte 0x64\n\tmovl 0x20,%0" : "=r" (ret) );
+ return ret;
+}
+
extern inline DWORD WINAPI GetCurrentThreadId(void);
extern inline DWORD WINAPI GetCurrentThreadId(void)
{
@@ -1830,9 +1838,19 @@
__asm__ __volatile__( ".byte 0x64\n\tmovl %0,0x60" : : "r" (err) : "memory" );
}
+extern inline HANDLE WINAPI GetProcessHeap(void);
+extern inline HANDLE WINAPI GetProcessHeap(void)
+{
+ DWORD *pdb;
+ __asm__ __volatile__( ".byte 0x64\n\tmovl 0x30,%0" : "=r" (pdb) );
+ return pdb[0x18 / sizeof(DWORD)]; /* get dword at offset 0x18 in pdb */
+}
+
#else /* __i386__ && __GNUC__ */
+DWORD WINAPI GetCurrentProcessId(void);
DWORD WINAPI GetCurrentThreadId(void);
DWORD WINAPI GetLastError(void);
+HANDLE WINAPI GetProcessHeap(void);
PVOID WINAPI InterlockedCompareExchange(PVOID*,PVOID,PVOID);
LONG WINAPI InterlockedDecrement(PLONG);
LONG WINAPI InterlockedExchange(PLONG,LONG);
@@ -1841,6 +1859,10 @@
VOID WINAPI SetLastError(DWORD);
#endif /* __i386__ && __GNUC__ */
+#ifdef __WINE__
+#define GetCurrentProcess() ((HANDLE)0xffffffff)
+#define GetCurrentThread() ((HANDLE)0xfffffffe)
+#endif
#ifdef __cplusplus
}