2001-11-13 Dick Porter <dick@ximian.com>
[mono.git] / mono / io-layer / threads.h
1 #ifndef _WAPI_THREADS_H_
2 #define _WAPI_THREADS_H_
3
4 #include <glib.h>
5
6 #include "mono/io-layer/handles.h"
7 #include "mono/io-layer/io.h"
8 #include "mono/io-layer/status.h"
9
10 #define TLS_MINIMUM_AVAILABLE 64
11 #define TLS_OUT_OF_INDEXES 0xFFFFFFFF
12
13 #define STILL_ACTIVE STATUS_PENDING
14
15 #define DEBUG_PROCESS 0x00000001
16 #define DEBUG_ONLY_THIS_PROCESS 0x00000002
17 #define CREATE_SUSPENDED 0x00000004
18 #define DETACHED_PROCESS 0x00000008
19 #define CREATE_NEW_CONSOLE 0x00000010
20 #define NORMAL_PRIORITY_CLASS 0x00000020
21 #define IDLE_PRIORITY_CLASS 0x00000040
22 #define HIGH_PRIORITY_CLASS 0x00000080
23 #define REALTIME_PRIORITY_CLASS 0x00000100
24 #define CREATE_NEW_PROCESS_GROUP 0x00000200
25 #define CREATE_UNICODE_ENVIRONMENT 0x00000400
26 #define CREATE_SEPARATE_WOW_VDM 0x00000800
27 #define CREATE_SHARED_WOW_VDM 0x00001000
28 #define CREATE_FORCEDOS 0x00002000
29 #define BELOW_NORMAL_PRIORITY_CLASS 0x00004000
30 #define ABOVE_NORMAL_PRIORITY_CLASS 0x00008000
31 #define CREATE_BREAKAWAY_FROM_JOB 0x01000000
32 #define CREATE_WITH_USERPROFILE 0x02000000
33 #define CREATE_DEFAULT_ERROR_MODE 0x04000000
34 #define CREATE_NO_WINDOW 0x08000000
35
36
37 typedef guint32 (*WapiThreadStart)(gpointer);
38
39 extern WapiHandle *CreateThread(WapiSecurityAttributes *security, guint32 stacksize, WapiThreadStart start, gpointer param, guint32 create, guint32 *tid);
40 extern void ExitThread(guint32 exitcode) G_GNUC_NORETURN;
41 extern gboolean GetExitCodeThread(WapiHandle *handle, guint32 *exitcode);
42 extern guint32 GetCurrentThreadId(void);
43 extern WapiHandle *GetCurrentThread(void);
44 extern guint32 ResumeThread(WapiHandle *handle);
45 extern guint32 SuspendThread(WapiHandle *handle);
46 extern guint32 TlsAlloc(void);
47 extern gboolean TlsFree(guint32 idx);
48 extern gpointer TlsGetValue(guint32 idx);
49 extern gboolean TlsSetValue(guint32 idx, gpointer value);
50 extern void Sleep(guint32 ms);
51
52 #endif /* _WAPI_THREADS_H_ */