Changes GC.cs
[mono-project.git] / mono / utils / os-event.h
blobfb70a82ea121589992e8d4248c77f8e7681dd1aa
1 /**
2 * \file
3 */
5 #ifndef _MONO_UTILS_OS_EVENT_H_
6 #define _MONO_UTILS_OS_EVENT_H_
8 #include <config.h>
9 #include <glib.h>
11 #include <mono/utils/mono-publib.h>
12 #include "mono-os-mutex.h"
14 #define MONO_INFINITE_WAIT ((guint32) 0xFFFFFFFF)
16 #define MONO_OS_EVENT_WAIT_MAXIMUM_OBJECTS 64
18 typedef enum {
19 MONO_OS_EVENT_WAIT_RET_SUCCESS_0 = 0,
20 MONO_OS_EVENT_WAIT_RET_ALERTED = -1,
21 MONO_OS_EVENT_WAIT_RET_TIMEOUT = -2,
22 } MonoOSEventWaitRet;
24 typedef struct _MonoOSEvent MonoOSEvent;
26 typedef void (*MonoOSEventFreeCb) (MonoOSEvent*);
28 struct _MonoOSEvent {
29 #ifdef HOST_WIN32
30 gpointer handle;
31 #else
32 GPtrArray *conds;
33 gboolean signalled;
34 #endif
37 MONO_API void
38 mono_os_event_init (MonoOSEvent *event, gboolean initial);
40 MONO_API void
41 mono_os_event_destroy (MonoOSEvent *event);
43 MONO_API void
44 mono_os_event_set (MonoOSEvent *event);
46 MONO_API void
47 mono_os_event_reset (MonoOSEvent *event);
49 MONO_API MonoOSEventWaitRet
50 mono_os_event_wait_one (MonoOSEvent *event, guint32 timeout, gboolean alertable);
52 MONO_API MonoOSEventWaitRet
53 mono_os_event_wait_multiple (MonoOSEvent **events, gsize nevents, gboolean waitall, guint32 timeout, gboolean alertable);
55 #endif /* _MONO_UTILS_OS_EVENT_H_ */