projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use error-checking mutexes on all platforms when DEBUG is on
[ghc-hetmet.git]
/
rts
/
posix
/
OSThreads.c
diff --git
a/rts/posix/OSThreads.c
b/rts/posix/OSThreads.c
index
7aaa76a
..
ee4958a
100644
(file)
--- a/
rts/posix/OSThreads.c
+++ b/
rts/posix/OSThreads.c
@@
-104,10
+104,14
@@
osThreadIsAlive(OSThreadId id STG_UNUSED)
void
initMutex(Mutex* pMut)
{
void
initMutex(Mutex* pMut)
{
-#if defined(DEBUG) && defined(linux_HOST_OS)
+#if defined(DEBUG)
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
+#if defined(linux_HOST_OS)
pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_ERRORCHECK_NP);
pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_ERRORCHECK_NP);
+#else
+ pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_ERRORCHECK);
+#endif
pthread_mutex_init(pMut,&attr);
#else
pthread_mutex_init(pMut,NULL);
pthread_mutex_init(pMut,&attr);
#else
pthread_mutex_init(pMut,NULL);
@@
-148,6
+152,15
@@
setThreadLocalVar (ThreadLocalKey *key, void *value)
}
}
}
}
+void
+freeThreadLocalKey (ThreadLocalKey *key)
+{
+ int r;
+ if ((r = pthread_key_delete(*key)) != 0) {
+ barf("freeThreadLocalKey: %s", strerror(r));
+ }
+}
+
static void *
forkOS_createThreadWrapper ( void * entry )
{
static void *
forkOS_createThreadWrapper ( void * entry )
{