[project @ 2003-09-17 21:20:16 by sof]
[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 #include "RtsUtils.h"
13
14 #include <stdlib.h>
15
16 static HashTable * threadLabels = NULL;
17
18 void
19 initThreadLabelTable(void)
20 {
21   if (threadLabels == NULL) {
22     threadLabels = allocHashTable();
23   }
24 }
25
26 void
27 updateThreadLabel(StgWord key, void *data)
28 {
29   removeThreadLabel(key);
30   insertHashTable(threadLabels,key,data);
31 }
32
33 void *
34 lookupThreadLabel(StgWord key)
35 {
36   return lookupHashTable(threadLabels,key);
37 }
38
39 void
40 removeThreadLabel(StgWord key)
41 {
42   void * old = NULL;
43   if ((old = lookupHashTable(threadLabels,key))) {
44     removeHashTable(threadLabels,key,old);
45     stgFree(old);
46   }  
47 }