[project @ 2003-01-28 16:22:20 by simonmar]
[ghc-hetmet.git] / ghc / rts / ThreadLabels.c
1 /* -----------------------------------------------------------------------------
2  * ThreadLabels.c
3  *
4  * (c) The GHC Team 2002-2003
5  *
6  * Table of thread labels.
7  *
8  * ---------------------------------------------------------------------------*/
9
10 #include "PosixSource.h"
11 #include "ThreadLabels.h"
12
13 #include <stdlib.h>
14
15 static HashTable * threadLabels = NULL;
16
17 void
18 initThreadLabelTable(void)
19 {
20   if (threadLabels == NULL) {
21     threadLabels = allocHashTable();
22   }
23 }
24
25 void
26 updateThreadLabel(StgWord key, void *data)
27 {
28   removeThreadLabel(key);
29   insertHashTable(threadLabels,key,data);
30 }
31
32 void *
33 lookupThreadLabel(StgWord key)
34 {
35   return lookupHashTable(threadLabels,key);
36 }
37
38 void
39 removeThreadLabel(StgWord key)
40 {
41   void * old = NULL;
42   if ((old = lookupHashTable(threadLabels,key))) {
43     removeHashTable(threadLabels,key,old);
44     free(old);
45   }  
46 }