2002-04-30 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 #include "mono/io-layer/processes.h"
10
11 #define TLS_MINIMUM_AVAILABLE 64
12 #define TLS_OUT_OF_INDEXES 0xFFFFFFFF
13
14 #define STILL_ACTIVE STATUS_PENDING
15
16
17 typedef guint32 (*WapiThreadStart)(gpointer);
18
19 extern gpointer CreateThread(WapiSecurityAttributes *security,
20                              guint32 stacksize, WapiThreadStart start,
21                              gpointer param, guint32 create, guint32 *tid);
22 extern void ExitThread(guint32 exitcode) G_GNUC_NORETURN;
23 extern gboolean GetExitCodeThread(gpointer handle, guint32 *exitcode);
24 extern guint32 GetCurrentThreadId(void);
25 extern gpointer GetCurrentThread(void);
26 extern guint32 ResumeThread(gpointer handle);
27 extern guint32 SuspendThread(gpointer handle);
28 extern guint32 TlsAlloc(void);
29 extern gboolean TlsFree(guint32 idx);
30 extern gpointer TlsGetValue(guint32 idx);
31 extern gboolean TlsSetValue(guint32 idx, gpointer value);
32 extern void Sleep(guint32 ms);
33 extern void SleepEx(guint32 ms, gboolean);
34
35 #endif /* _WAPI_THREADS_H_ */