projects
/
mono.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix the build after the signals changes.
[mono.git]
/
mono
/
utils
/
mono-mutex.c
diff --git
a/mono/utils/mono-mutex.c
b/mono/utils/mono-mutex.c
index 183dc6a11419d7e501e5c94000c2a252bea23f94..6abad5756b0a8fea1204a675ec34425ded02cdb5 100644
(file)
--- a/
mono/utils/mono-mutex.c
+++ b/
mono/utils/mono-mutex.c
@@
-16,7
+16,11
@@
#include <string.h>
#include <errno.h>
#include <assert.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
+#include <mono/utils/mono-memory-model.h>
+
+#ifndef HOST_WIN32
#include <sys/time.h>
#include <sys/time.h>
+#endif
#include "mono-mutex.h"
#include "mono-mutex.h"
@@
-24,7
+28,8
@@
#if defined(__APPLE__)
#define _DARWIN_C_SOURCE
#if defined(__APPLE__)
#define _DARWIN_C_SOURCE
-// #include <pthread_spis.h>
+#include <pthread_spis.h>
+#include <dlfcn.h>
#endif
#ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK
#endif
#ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK
@@
-131,10
+136,18
@@
mono_mutex_init_suspend_safe (mono_mutex_t *mutex)
#if defined(__APPLE__)
int res;
pthread_mutexattr_t attr;
#if defined(__APPLE__)
int res;
pthread_mutexattr_t attr;
+ static gboolean inited;
+ static int (*setpolicy_np) (pthread_mutexattr_t *, int);
+
+ if (!inited) {
+ setpolicy_np = dlsym (RTLD_NEXT, "pthread_mutexattr_setpolicy_np");
+ mono_atomic_store_release (&inited, TRUE);
+ }
pthread_mutexattr_init (&attr);
pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutexattr_init (&attr);
pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
- // pthread_mutexattr_setpolicy_np (&attr, _PTHREAD_MUTEX_POLICY_FIRSTFIT);
+ if (setpolicy_np)
+ setpolicy_np (&attr, _PTHREAD_MUTEX_POLICY_FIRSTFIT);
res = pthread_mutex_init (mutex, &attr);
pthread_mutexattr_destroy (&attr);
res = pthread_mutex_init (mutex, &attr);
pthread_mutexattr_destroy (&attr);