G_BEGIN_DECLS
-#define INFINITE 0xFFFFFFFF
-
#define WAIT_FAILED 0xFFFFFFFF
#define WAIT_OBJECT_0 ((STATUS_WAIT_0) +0)
#define WAIT_ABANDONED ((STATUS_ABANDONED_WAIT_0) +0)
return;
/* Wait for the thread */
- while (!thread_data->done && guarded_wait (thread_handle, INFINITE, TRUE) == MONO_THREAD_INFO_WAIT_RET_ALERTED) {
+ while (!thread_data->done && guarded_wait (thread_handle, MONO_INFINITE_WAIT, TRUE) == MONO_THREAD_INFO_WAIT_RET_ALERTED) {
if (mono_thread_internal_has_appdomain_ref (mono_thread_internal_current (), domain) && (mono_thread_interruption_requested ())) {
/* The unload thread tries to abort us */
/* The icall wrapper will execute the abort */
mono_gc_finalize_notify ();
if (timeout == -1)
- timeout = INFINITE;
- if (timeout != INFINITE)
+ timeout = MONO_INFINITE_WAIT;
+ if (timeout != MONO_INFINITE_WAIT)
start = mono_msec_ticks ();
ret = TRUE;
for (;;) {
- if (timeout == INFINITE) {
+ if (timeout == MONO_INFINITE_WAIT) {
res = mono_coop_sem_wait (&req->done, MONO_SEM_FLAGS_ALERTABLE);
} else {
gint64 elapsed = mono_msec_ticks () - start;
pending_done = FALSE;
mono_gc_finalize_notify ();
while (!pending_done) {
- coop_cond_timedwait_alertable (&pending_done_cond, &pending_done_mutex, INFINITE, &alerted);
+ coop_cond_timedwait_alertable (&pending_done_cond, &pending_done_mutex, MONO_INFINITE_WAIT, &alerted);
if (alerted)
break;
}
/* Wait for the thread to actually exit */
- ret = guarded_wait (gc_thread->handle, INFINITE, TRUE);
+ ret = guarded_wait (gc_thread->handle, MONO_INFINITE_WAIT, TRUE);
g_assert (ret == MONO_THREAD_INFO_WAIT_RET_SUCCESS_0);
mono_thread_join (GUINT_TO_POINTER (gc_thread->tid));
}
}
- if (ms != INFINITE) {
+ if (ms != MONO_INFINITE_WAIT) {
then = mono_msec_ticks ();
}
waitms = ms;
* allow_interruption is FALSE to avoid hangs at shutdown.
*/
if (!mono_thread_test_state (mono_thread_internal_current (), (MonoThreadState)(ThreadState_StopRequested | ThreadState_SuspendRequested | ThreadState_AbortRequested))) {
- if (ms != INFINITE) {
+ if (ms != MONO_INFINITE_WAIT) {
now = mono_msec_ticks ();
/* it should not overflow before ~30k years */
* it will return NULL meaning we can't be aborted right now. Once that happens we switch to non-alertable.
*/
do {
- res = mono_monitor_try_enter_internal (obj, INFINITE, allow_interruption);
+ res = mono_monitor_try_enter_internal (obj, MONO_INFINITE_WAIT, allow_interruption);
/*This means we got interrupted during the wait and didn't got the monitor.*/
if (res == -1) {
MonoException *exc = mono_thread_interruption_checkpoint ();
return;
}
- ves_icall_System_Threading_Monitor_Monitor_try_enter_with_atomic_var (obj, INFINITE, lock_taken);
+ ves_icall_System_Threading_Monitor_Monitor_try_enter_with_atomic_var (obj, MONO_INFINITE_WAIT, lock_taken);
}
/*
/* Regain the lock with the previous nest count */
do {
- regain = mono_monitor_try_enter_inflated (obj, INFINITE, TRUE, id);
+ regain = mono_monitor_try_enter_inflated (obj, MONO_INFINITE_WAIT, TRUE, id);
/* We must regain the lock before handling interruption requests */
} while (regain == -1);
#ifdef HOST_WIN32
WaitForSingleObjectEx (wait_event, INFINITE, TRUE);
#else
- mono_w32handle_wait_one (wait_event, INFINITE, TRUE);
+ mono_w32handle_wait_one (wait_event, MONO_INFINITE_WAIT, TRUE);
#endif
MONO_EXIT_GC_SAFE;
}
if (exc) {
mono_raise_exception (exc);
} else {
- // FIXME: !INFINITE
- if (ms != INFINITE)
+ // FIXME: !MONO_INFINITE_WAIT
+ if (ms != MONO_INFINITE_WAIT)
break;
}
} else {
UNLOCK_THREAD (thread);
if(ms== -1) {
- ms=INFINITE;
+ ms=MONO_INFINITE_WAIT;
}
THREAD_DEBUG (g_message ("%s: joining thread handle %p, %d ms", __func__, handle, ms));
}
if(ms== -1) {
- ms=INFINITE;
+ ms=MONO_INFINITE_WAIT;
}
mono_thread_set_state (thread, ThreadState_WaitSleepJoin);
}
if(ms== -1) {
- ms=INFINITE;
+ ms=MONO_INFINITE_WAIT;
}
mono_thread_set_state (thread, ThreadState_WaitSleepJoin);
THREAD_WAIT_DEBUG (g_message ("%s: (%"G_GSIZE_FORMAT") waiting for %p, %d ms", __func__, mono_native_thread_id_get (), handle, ms));
if(ms== -1) {
- ms=INFINITE;
+ ms=MONO_INFINITE_WAIT;
}
if (mono_thread_current_check_pending_interrupt ())
MonoInternalThread *thread = mono_thread_internal_current ();
if (ms == -1)
- ms = INFINITE;
+ ms = MONO_INFINITE_WAIT;
if (mono_thread_current_check_pending_interrupt ())
return map_native_wait_result_to_managed (MONO_W32HANDLE_WAIT_RET_FAILED, 0);
mono_threads_unlock ();
if (wait->num > 0)
/* Something to wait for */
- wait_for_tids (wait, INFINITE, TRUE);
+ wait_for_tids (wait, MONO_INFINITE_WAIT, TRUE);
THREAD_DEBUG (g_message ("%s: I have %d threads after waiting.", __func__, wait->num));
} while(wait->num>0);
THREAD_DEBUG (g_message ("%s: wait->num is now %d", __func__, wait->num));
if (wait->num > 0) {
/* Something to wait for */
- wait_for_tids (wait, INFINITE, FALSE);
+ wait_for_tids (wait, MONO_INFINITE_WAIT, FALSE);
}
} while (wait->num > 0);
/* must be a power of 2 */
#define HANDLE_PER_SLOT (256)
-#define INFINITE 0xFFFFFFFF
-
typedef struct {
MonoW32HandleType type;
guint ref;
}
}
- if (timeout != INFINITE)
+ if (timeout != MONO_INFINITE_WAIT)
start = mono_msec_ticks ();
for (;;) {
mono_w32handle_ops_prewait (handle);
- if (timeout == INFINITE) {
- waited = mono_w32handle_timedwait_signal_handle (handle, INFINITE, FALSE, alertable ? &alerted : NULL);
+ if (timeout == MONO_INFINITE_WAIT) {
+ waited = mono_w32handle_timedwait_signal_handle (handle, MONO_INFINITE_WAIT, FALSE, alertable ? &alerted : NULL);
} else {
gint64 elapsed;
}
}
- if (timeout != INFINITE)
+ if (timeout != MONO_INFINITE_WAIT)
start = mono_msec_ticks ();
for (i = 0; i < nhandles; ++i) {
waited = 0;
if (!signalled) {
- if (timeout == INFINITE) {
- waited = mono_w32handle_timedwait_signal (INFINITE, poll, alertable ? &alerted : NULL);
+ if (timeout == MONO_INFINITE_WAIT) {
+ waited = mono_w32handle_timedwait_signal (MONO_INFINITE_WAIT, poll, alertable ? &alerted : NULL);
} else {
gint64 elapsed;
}
}
- if (timeout != INFINITE)
+ if (timeout != MONO_INFINITE_WAIT)
start = mono_msec_ticks ();
for (;;) {
mono_w32handle_ops_prewait (wait_handle);
- if (timeout == INFINITE) {
- waited = mono_w32handle_timedwait_signal_handle (wait_handle, INFINITE, FALSE, alertable ? &alerted : NULL);
+ if (timeout == MONO_INFINITE_WAIT) {
+ waited = mono_w32handle_timedwait_signal_handle (wait_handle, MONO_INFINITE_WAIT, FALSE, alertable ? &alerted : NULL);
} else {
gint64 elapsed;
#define MONO_W32HANDLE_MAXIMUM_WAIT_OBJECTS 64
+#ifndef MONO_INFINITE_WAIT
+#define MONO_INFINITE_WAIT ((guint32) 0xFFFFFFFF)
+#endif
+
typedef enum {
MONO_W32HANDLE_UNUSED = 0,
MONO_W32HANDLE_FILE,
now = start;
while (1) {
- if (timeout != INFINITE) {
+ if (timeout != MONO_INFINITE_WAIT) {
mono_trace (G_LOG_LEVEL_DEBUG, MONO_TRACE_IO_LAYER, "%s (%p, %u): waiting on semaphore for %li ms...",
__func__, handle, timeout, (long)(timeout - (now - start)));
ret = mono_os_sem_timedwait (&mp->exit_sem, (timeout - (now - start)), alerted ? MONO_SEM_FLAGS_ALERTABLE : MONO_SEM_FLAGS_NONE);
g_free (methods);
for (i = 0; i < threads->len; ++i) {
- mono_thread_info_wait_one_handle (g_ptr_array_index (threads, i), INFINITE, FALSE);
+ mono_thread_info_wait_one_handle (g_ptr_array_index (threads, i), MONO_INFINITE_WAIT, FALSE);
mono_threads_close_thread_handle (g_ptr_array_index (threads, i));
}
} else {
static inline int
mono_os_sem_wait (MonoSemType *sem, MonoSemFlags flags)
{
- return mono_os_sem_timedwait (sem, INFINITE, flags) != 0 ? -1 : 0;
+ return mono_os_sem_timedwait (sem, MONO_INFINITE_WAIT, flags) != 0 ? -1 : 0;
}
static inline void
{
gint64 now, end;
- g_assert (INFINITE == G_MAXUINT32);
+ g_assert (MONO_INFINITE_WAIT == G_MAXUINT32);
g_assert (alerted);
*alerted = FALSE;
- if (ms != INFINITE)
+ if (ms != MONO_INFINITE_WAIT)
end = mono_msec_ticks() + ms;
mono_lazy_initialize (&sleep_init, sleep_initialize);
mono_coop_mutex_lock (&sleep_mutex);
for (;;) {
- if (ms != INFINITE) {
+ if (ms != MONO_INFINITE_WAIT) {
now = mono_msec_ticks();
if (now >= end)
break;
return WAIT_IO_COMPLETION;
}
- if (ms != INFINITE)
+ if (ms != MONO_INFINITE_WAIT)
mono_coop_cond_timedwait (&sleep_cond, &sleep_mutex, end - now);
else
mono_coop_cond_wait (&sleep_cond, &sleep_mutex);
MONO_ENTER_GC_SAFE;
- if (ms == INFINITE) {
+ if (ms == MONO_INFINITE_WAIT) {
do {
#ifdef HOST_WIN32
Sleep (G_MAXUINT32);
#endif /* #ifdef HOST_WIN32 */
+#ifndef MONO_INFINITE_WAIT
+#define MONO_INFINITE_WAIT ((guint32) 0xFFFFFFFF)
+#endif
+
typedef struct {
MonoRefCount ref;
MonoOSEvent event;