Fri May 31 16:21:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / io-layer / threads.h
1 /*
2  * threads.h:  Thread handles
3  *
4  * Author:
5  *      Dick Porter (dick@ximian.com)
6  *
7  * (C) 2002 Ximian, Inc.
8  */
9
10 #ifndef _WAPI_THREADS_H_
11 #define _WAPI_THREADS_H_
12
13 #include <glib.h>
14
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
20 #define TLS_MINIMUM_AVAILABLE 64
21 #define TLS_OUT_OF_INDEXES 0xFFFFFFFF
22
23 #define STILL_ACTIVE STATUS_PENDING
24
25
26 typedef guint32 (*WapiThreadStart)(gpointer);
27
28 extern gpointer CreateThread(WapiSecurityAttributes *security,
29                              guint32 stacksize, WapiThreadStart start,
30                              gpointer param, guint32 create, guint32 *tid);
31 extern void ExitThread(guint32 exitcode) G_GNUC_NORETURN;
32 extern gboolean GetExitCodeThread(gpointer handle, guint32 *exitcode);
33 extern guint32 GetCurrentThreadId(void);
34 extern gpointer GetCurrentThread(void);
35 extern guint32 ResumeThread(gpointer handle);
36 extern guint32 SuspendThread(gpointer handle);
37 extern guint32 TlsAlloc(void);
38 extern gboolean TlsFree(guint32 idx);
39 extern gpointer TlsGetValue(guint32 idx);
40 extern gboolean TlsSetValue(guint32 idx, gpointer value);
41 extern void Sleep(guint32 ms);
42 extern void SleepEx(guint32 ms, gboolean);
43
44 #endif /* _WAPI_THREADS_H_ */