2 * threads.h: Thread handles
5 * Dick Porter (dick@ximian.com)
7 * (C) 2002 Ximian, Inc.
10 #ifndef _WAPI_THREADS_H_
11 #define _WAPI_THREADS_H_
15 #include <mono/io-layer/handles.h>
16 #include <mono/io-layer/io.h>
17 #include <mono/io-layer/status.h>
18 #include <mono/io-layer/processes.h>
19 #include <mono/io-layer/access.h>
21 #define TLS_MINIMUM_AVAILABLE 64
22 #define TLS_OUT_OF_INDEXES 0xFFFFFFFF
24 #define STILL_ACTIVE STATUS_PENDING
27 #define THREAD_TERMINATE 0x0001
28 #define THREAD_SUSPEND_RESUME 0x0002
29 #define THREAD_GET_CONTEXT 0x0008
30 #define THREAD_SET_CONTEXT 0x0010
31 #define THREAD_SET_INFORMATION 0x0020
32 #define THREAD_QUERY_INFORMATION 0x0040
33 #define THREAD_SET_THREAD_TOKEN 0x0080
34 #define THREAD_IMPERSONATE 0x0100
35 #define THREAD_DIRECT_IMPERSONATION 0x0200
36 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3ff)
38 typedef guint32 (*WapiThreadStart
)(gpointer
);
39 typedef guint32 (*WapiApcProc
)(gpointer
);
41 extern gpointer
CreateThread(WapiSecurityAttributes
*security
,
42 guint32 stacksize
, WapiThreadStart start
,
43 gpointer param
, guint32 create
, guint32
*tid
);
44 extern gpointer
OpenThread (guint32 access
, gboolean inherit
, guint32 tid
);
45 extern void ExitThread(guint32 exitcode
) G_GNUC_NORETURN
;
46 extern gboolean
GetExitCodeThread(gpointer handle
, guint32
*exitcode
);
47 extern guint32
GetCurrentThreadId(void);
48 extern gpointer
GetCurrentThread(void);
49 extern guint32
ResumeThread(gpointer handle
);
50 extern guint32
SuspendThread(gpointer handle
);
51 extern guint32
TlsAlloc(void);
52 extern gboolean
TlsFree(guint32 idx
);
53 extern gpointer
TlsGetValue(guint32 idx
);
54 extern gboolean
TlsSetValue(guint32 idx
, gpointer value
);
55 extern void Sleep(guint32 ms
);
56 extern guint32
SleepEx(guint32 ms
, gboolean alertable
);
57 extern gboolean
BindIoCompletionCallback (gpointer handle
,
58 WapiOverlappedCB callback
,
61 extern guint32
QueueUserAPC (WapiApcProc apc_callback
, gpointer thread_handle
,
64 #endif /* _WAPI_THREADS_H_ */