Skip to content

Commit ace6410

Browse files
rbuchevan-charmworks
authored andcommitted
Tracing: Move tracing thread listeners to trace-common
Previously, only tracemode projections used these listeners, meaning other tracemodes did not get EP information for resumptions of [threaded] EPs. Now all tracemodes will automatically get the correct data.
1 parent cad03df commit ace6410

File tree

3 files changed

+56
-63
lines changed

3 files changed

+56
-63
lines changed

src/ck-perf/trace-common.C

Lines changed: 56 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#include "allEvents.h" //projector
2020
#include "register.h" // for _entryTable
2121

22+
#include "envelope.h"
23+
2224
// To get username
2325
#if defined(_WIN32) || defined(_WIN64)
2426
#define WIN32_LEAN_AND_MEAN
@@ -853,13 +855,62 @@ void traceEnableCCS(void)
853855
CkpvAccess(_traces)->traceEnableCCS();
854856
}
855857

856-
/* **CW** Support for thread listeners. This makes a call to each
857-
trace module which must support the call.
858-
*/
859-
void traceAddThreadListeners(CthThread tid, envelope *e) {
860-
_TRACE_ONLY(CkpvAccess(_traces)->traceAddThreadListeners(tid, e));
858+
struct TraceThreadListener {
859+
struct CthThreadListener base;
860+
int event;
861+
int msgType;
862+
int ep;
863+
int srcPe;
864+
int ml;
865+
CmiObjId idx;
866+
};
867+
868+
static void traceThreadListener_suspend(struct CthThreadListener *l)
869+
{
870+
TraceThreadListener *a=(TraceThreadListener *)l;
871+
/* here, we activate the appropriate trace codes for the appropriate
872+
registered modules */
873+
traceSuspend();
874+
}
875+
876+
static void traceThreadListener_resume(struct CthThreadListener *l)
877+
{
878+
TraceThreadListener *a=(TraceThreadListener *)l;
879+
/* here, we activate the appropriate trace codes for the appropriate
880+
registered modules */
881+
_TRACE_BEGIN_EXECUTE_DETAILED(a->event,a->msgType,a->ep,a->srcPe,a->ml,
882+
CthGetThreadID(a->base.thread), NULL);
883+
a->event=-1;
884+
a->srcPe=CkMyPe(); /* potential lie to migrated threads */
885+
a->ml=0;
886+
}
887+
888+
static void traceThreadListener_free(struct CthThreadListener *l)
889+
{
890+
TraceThreadListener *a=(TraceThreadListener *)l;
891+
delete a;
861892
}
862893

894+
void traceAddThreadListeners(CthThread tid, envelope *e)
895+
{
896+
#if CMK_TRACE_ENABLED
897+
/* strip essential information from the envelope */
898+
TraceThreadListener *a= new TraceThreadListener;
899+
900+
a->base.suspend=traceThreadListener_suspend;
901+
a->base.resume=traceThreadListener_resume;
902+
a->base.free=traceThreadListener_free;
903+
a->event=e->getEvent();
904+
a->msgType=e->getMsgtype();
905+
a->ep=e->getEpIdx();
906+
a->srcPe=e->getSrcPe();
907+
a->ml=e->getTotalsize();
908+
909+
CthAddListener(tid, (CthThreadListener *)a);
910+
#endif
911+
}
912+
913+
863914
#if 1
864915
// helper functions
865916
extern int _charmHandlerIdx;

src/ck-perf/trace-projections.C

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -110,63 +110,6 @@ void _createTraceprojections(char **argv)
110110
CkpvAccess(_traces)->addTrace(CkpvAccess(_trace));
111111
if (CkMyPe()==0) CkPrintf("Charm++: Tracemode Projections enabled.\n");
112112
}
113-
114-
/* ****** CW TEMPORARY LOCATION ***** Support for thread listeners */
115-
116-
struct TraceThreadListener {
117-
struct CthThreadListener base;
118-
int event;
119-
int msgType;
120-
int ep;
121-
int srcPe;
122-
int ml;
123-
CmiObjId idx;
124-
};
125-
126-
static void traceThreadListener_suspend(struct CthThreadListener *l)
127-
{
128-
TraceThreadListener *a=(TraceThreadListener *)l;
129-
/* here, we activate the appropriate trace codes for the appropriate
130-
registered modules */
131-
traceSuspend();
132-
}
133-
134-
static void traceThreadListener_resume(struct CthThreadListener *l)
135-
{
136-
TraceThreadListener *a=(TraceThreadListener *)l;
137-
/* here, we activate the appropriate trace codes for the appropriate
138-
registered modules */
139-
_TRACE_BEGIN_EXECUTE_DETAILED(a->event,a->msgType,a->ep,a->srcPe,a->ml,
140-
CthGetThreadID(a->base.thread), NULL);
141-
a->event=-1;
142-
a->srcPe=CkMyPe(); /* potential lie to migrated threads */
143-
a->ml=0;
144-
}
145-
146-
static void traceThreadListener_free(struct CthThreadListener *l)
147-
{
148-
TraceThreadListener *a=(TraceThreadListener *)l;
149-
delete a;
150-
}
151-
152-
void TraceProjections::traceAddThreadListeners(CthThread tid, envelope *e)
153-
{
154-
#if CMK_TRACE_ENABLED
155-
/* strip essential information from the envelope */
156-
TraceThreadListener *a= new TraceThreadListener;
157-
158-
a->base.suspend=traceThreadListener_suspend;
159-
a->base.resume=traceThreadListener_resume;
160-
a->base.free=traceThreadListener_free;
161-
a->event=e->getEvent();
162-
a->msgType=e->getMsgtype();
163-
a->ep=e->getEpIdx();
164-
a->srcPe=e->getSrcPe();
165-
a->ml=e->getTotalsize();
166-
167-
CthAddListener(tid, (CthThreadListener *)a);
168-
#endif
169-
}
170113

171114
void LogPool::openLog(const char *mode)
172115
{

src/ck-perf/trace-projections.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,6 @@ class TraceProjections : public Trace {
526526
}
527527

528528
/* for overiding basic thread listener support in Trace class */
529-
virtual void traceAddThreadListeners(CthThread tid, envelope *e);
530529
};
531530

532531
using namespace PUP;

0 commit comments

Comments
 (0)