X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FThreadLabels.c;h=aa620f0b9e2d14954435e875c7cd787742295942;hp=9b9f1723ffdc0f6a8055279843e8eab6aaeeb4d1;hb=a2a67cd520b9841114d69a87a423dabcb3b4368e;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1 diff --git a/rts/ThreadLabels.c b/rts/ThreadLabels.c index 9b9f172..aa620f0 100644 --- a/rts/ThreadLabels.c +++ b/rts/ThreadLabels.c @@ -8,10 +8,14 @@ * ---------------------------------------------------------------------------*/ #include "PosixSource.h" +#include "Rts.h" + #include "ThreadLabels.h" #include "RtsUtils.h" +#include "Hash.h" #include +#include #if defined(DEBUG) /* to the end */ @@ -26,6 +30,15 @@ initThreadLabelTable(void) } void +freeThreadLabelTable(void) +{ + if (threadLabels != NULL) { + freeHashTable(threadLabels, NULL); + threadLabels = NULL; + } +} + +void updateThreadLabel(StgWord key, void *data) { removeThreadLabel(key); @@ -47,4 +60,19 @@ removeThreadLabel(StgWord key) stgFree(old); } } + +void +labelThread(StgPtr tso, char *label) +{ + int len; + void *buf; + + /* Caveat: Once set, you can only set the thread name to "" */ + len = strlen(label)+1; + buf = stgMallocBytes(len * sizeof(char), "Schedule.c:labelThread()"); + strncpy(buf,label,len); + /* Update will free the old memory for us */ + updateThreadLabel(((StgTSO *)tso)->id,buf); +} + #endif /* DEBUG */