projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Default tick interval was 50ms, change it to 20ms
[ghc-hetmet.git]
/
rts
/
posix
/
OSThreads.c
diff --git
a/rts/posix/OSThreads.c
b/rts/posix/OSThreads.c
index
07bd762
..
510a51d
100644
(file)
--- a/
rts/posix/OSThreads.c
+++ b/
rts/posix/OSThreads.c
@@
-16,6
+16,7
@@
#if defined(THREADED_RTS)
#include "OSThreads.h"
#include "RtsUtils.h"
#if defined(THREADED_RTS)
#include "OSThreads.h"
#include "RtsUtils.h"
+#include "Task.h"
#if HAVE_STRING_H
#include <string.h>
#if HAVE_STRING_H
#include <string.h>
@@
-92,6
+93,14
@@
osThreadId()
return pthread_self();
}
return pthread_self();
}
+rtsBool
+osThreadIsAlive(OSThreadId id STG_UNUSED)
+{
+ // no good way to implement this on POSIX, AFAICT. Returning true
+ // is safe.
+ return rtsTrue;
+}
+
void
initMutex(Mutex* pMut)
{
void
initMutex(Mutex* pMut)
{
@@
-105,6
+114,11
@@
initMutex(Mutex* pMut)
#endif
return;
}
#endif
return;
}
+void
+closeMutex(Mutex* pMut)
+{
+ pthread_mutex_destroy(pMut);
+}
void
newThreadLocalKey (ThreadLocalKey *key)
void
newThreadLocalKey (ThreadLocalKey *key)
@@
-134,12
+148,22
@@
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 )
{
Capability *cap;
cap = rts_lock();
cap = rts_evalStableIO(cap, (HsStablePtr) entry, NULL);
static void *
forkOS_createThreadWrapper ( void * entry )
{
Capability *cap;
cap = rts_lock();
cap = rts_evalStableIO(cap, (HsStablePtr) entry, NULL);
+ taskTimeStamp(myTask());
rts_unlock(cap);
return NULL;
}
rts_unlock(cap);
return NULL;
}