summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstolz <unknown>2002-06-26 08:20:25 +0000
committerstolz <unknown>2002-06-26 08:20:25 +0000
commit9bcc295e75b8873915903f1b6aab2d29ed2f7bca (patch)
tree17e16a0d44e59a961abb882b3400f7fb499148b3
parentfbbed914e114b6b55158319dca8956885f301ff5 (diff)
downloadhaskell-9bcc295e75b8873915903f1b6aab2d29ed2f7bca.tar.gz
[project @ 2002-06-26 08:20:25 by stolz]
The "Ouch"-commit: - didn't notice my local change to libraries/Makefile - forgot to register new files
-rw-r--r--ghc/rts/ThreadLabels.c35
-rw-r--r--ghc/rts/ThreadLabels.h16
2 files changed, 51 insertions, 0 deletions
diff --git a/ghc/rts/ThreadLabels.c b/ghc/rts/ThreadLabels.c
new file mode 100644
index 0000000000..fda40c3f00
--- /dev/null
+++ b/ghc/rts/ThreadLabels.c
@@ -0,0 +1,35 @@
+
+#include "PosixSource.h"
+#include "ThreadLabels.h"
+
+HashTable * threadLabels = NULL;
+
+void
+initThreadLabelTable(void)
+{
+ ASSERT(threadLabels == NULL);
+ threadLabels = allocHashTable();
+}
+
+void
+updateThreadLabel(StgWord key, void *data)
+{
+ removeThreadLabel(key);
+ insertHashTable(threadLabels,key,data);
+}
+
+void *
+lookupThreadLabel(StgWord key)
+{
+ return lookupHashTable(threadLabels,key);
+}
+
+void
+removeThreadLabel(StgWord key)
+{
+ void * old = NULL;
+ if ((old = lookupHashTable(threadLabels,key))) {
+ removeHashTable(threadLabels,key,old);
+ free(old);
+ }
+}
diff --git a/ghc/rts/ThreadLabels.h b/ghc/rts/ThreadLabels.h
new file mode 100644
index 0000000000..46e060c992
--- /dev/null
+++ b/ghc/rts/ThreadLabels.h
@@ -0,0 +1,16 @@
+#include "Rts.h"
+#include "Hash.h"
+
+extern HashTable * threadLabels;
+
+void
+initThreadLabelTable(void);
+
+void
+updateThreadLabel(StgWord key, void *data);
+
+void *
+lookupThreadLabel(StgWord key);
+
+void
+removeThreadLabel(StgWord key);