+/*
+ * critical-sections.c: Critical sections
+ *
+ * Author:
+ * Dick Porter (dick@ximian.com)
+ *
+ * (C) 2002 Ximian, Inc.
+ */
+
#include <config.h>
#include <glib.h>
#include <pthread.h>
* here but I'd need a mutex around the critical section structure
* anyway. So I may as well just use a pthread mutex.
*/
-static pthread_once_t attr_key_once=PTHREAD_ONCE_INIT;
+static mono_once_t attr_key_once=MONO_ONCE_INIT;
static mono_mutexattr_t attr;
static void attr_init(void)
{
- mono_mutexattr_init(&attr);
- mono_mutexattr_settype(&attr, MONO_MUTEX_RECURSIVE);
+ int ret;
+
+ ret = mono_mutexattr_init(&attr);
+ g_assert (ret == 0);
+
+ ret = mono_mutexattr_settype(&attr, MONO_MUTEX_RECURSIVE);
+ g_assert (ret == 0);
}
/**
*/
void InitializeCriticalSection(WapiCriticalSection *section)
{
- pthread_once(&attr_key_once, attr_init);
- mono_mutex_init(§ion->mutex, &attr);
+ int ret;
+
+ mono_once(&attr_key_once, attr_init);
+ ret = mono_mutex_init(§ion->mutex, &attr);
+ g_assert (ret == 0);
}
/**
*/
void DeleteCriticalSection(WapiCriticalSection *section)
{
- mono_mutex_destroy(§ion->mutex);
+ int ret;
+
+ ret = mono_mutex_destroy(§ion->mutex);
+ g_assert (ret == 0);
}
/**
*/
void EnterCriticalSection(WapiCriticalSection *section)
{
- mono_mutex_lock(§ion->mutex);
+ int stat;
+
+ if ((stat = mono_mutex_lock(§ion->mutex)) != 0) {
+ g_error (G_GNUC_PRETTY_FUNCTION
+ ": EnterCriticalSection failed: %s", g_strerror(stat));
+ }
}
/**
*/
void LeaveCriticalSection(WapiCriticalSection *section)
{
- mono_mutex_unlock(§ion->mutex);
+ int ret;
+
+ ret = mono_mutex_unlock(§ion->mutex);
+ g_assert (ret == 0);
}