#include <semaphore.h>
#endif
#include <mono/io-layer/io-layer.h>
+#include <mono/utils/mono-publib.h>
#if (defined (HAVE_SEMAPHORE_H) || defined (USE_MACH_SEMA)) && !defined(HOST_WIN32)
# define MONO_HAS_SEMAPHORES
#define MONO_SEM_TIMEDWAIT(sem, timeout_ms) MONO_SEM_TIMEDWAIT_ALERTABLE(sem, timeout_ms, FALSE)
#define MONO_SEM_TIMEDWAIT_ALERTABLE(sem, timeout_ms, alertable) mono_sem_timedwait ((sem), (timeout_ms), alertable)
+#define MONO_SEM_WAIT_UNITERRUPTIBLE(sem) do { \
+ while (MONO_SEM_WAIT ((sem)) != 0) { \
+ /*if (EINTR != errno) ABORT("sem_wait failed"); */ \
+ } \
+} while (0)
+
G_BEGIN_DECLS
-int mono_sem_wait (MonoSemType *sem, gboolean alertable);
-int mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable);
-int mono_sem_post (MonoSemType *sem);
+MONO_API int mono_sem_wait (MonoSemType *sem, gboolean alertable);
+MONO_API int mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable);
+MONO_API int mono_sem_post (MonoSemType *sem);
G_END_DECLS
#endif /* _MONO_SEMAPHORE_H_ */