5 #include "charmProjections.h"
6 #include "traceCoreCommon.h"
7 #include "charmEvents.h"
9 #include "trace-common.h" // for _threadEP
12 CtvStaticDeclare(int,curThreadEvent);
18 static int curevent=0;
21 extern "C" void initCharmProjections()
24 CtvInitialize(int,curThreadEvent);
25 CtvAccess(curThreadEvent) = 0;
31 //extern "C" int traceRegisterUserEvent(const char*)
34 extern "C" void charm_creation(envelope *e, int ep, int num)
38 CtvAccess(curThreadEvent)=curEvent;
40 iData[0] = ForChareMsg;
42 iData[2] = curEvent++;
44 LogEvent1(_CHARM_LANG_ID, _E_CREATION, 4, iData);
46 e->setEvent(curEvent);
47 for(int i=0; i<num; i++) {
49 iData[0] = e->getMsgtype();
51 iData[2] = curEvent+i;
53 iData[4] = e->getTotalsize();
54 LogEvent1(_CHARM_LANG_ID, _E_CREATION, 5, iData);
61 extern "C" void charm_beginExecute(envelope *e)
65 execEvent = CtvAccess(curThreadEvent);
68 iData[0] = ForChareMsg;
72 LogEvent1(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 4, iData);
74 charm_beginExecuteDetailed(e->getEvent(),e->getMsgtype(),e->getEpIdx(),e->getSrcPe(),e->getTotalsize());
79 extern "C" void charm_beginExecuteDetailed(int event,int msgType,int ep,int srcPe,int ml)
91 // CkPrintf("iData in beginExecuteDetailed %d %d \n",event,srcPe);
92 LogEvent1(_CHARM_LANG_ID, _E_BEGIN_PROCESSING, 5, iData);
96 extern "C" void charm_endExecute(void)
102 iData[1] = _threadEP;
103 iData[2] = execEvent;
105 LogEvent1(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData);
110 iData[2] = execEvent;
112 LogEvent1(_CHARM_LANG_ID, _E_END_PROCESSING, 4, iData);
117 // implementing enqueue and dequeue --schak
118 // however these type of events are not generated by anyone
120 extern "C" void charm_enqueueMsg(envelope *e) {
121 #if CMK_TRACE_ENABLED
123 iData[0] = e->getMsgtype();
124 iData[1] = e->getEvent();
125 iData[2] = e->getSrcPe();
126 LogEvent1(_CHARM_LANG_ID,_E_ENQUEUE,3,iData);
130 extern "C" void charm_dequeueMsg(envelope *e) {
131 #if CMK_TRACE_ENABLED
133 iData[0] = e->getMsgtype();
134 iData[1] = e->getEvent();
135 iData[2] = e->getSrcPe();
136 LogEvent1(_CHARM_LANG_ID,_E_DEQUEUE,3,iData);
140 extern "C" void charm_beginComputation(void)
142 #if CMK_TRACE_ENABLED
143 LogEvent1(_CHARM_LANG_ID, _E_BEGIN_COMPUTATION, 0, NULL);
147 extern "C" void charm_endComputation(void)
149 #if CMK_TRACE_ENABLED
150 LogEvent1(_CHARM_LANG_ID, _E_END_COMPUTATION, 0, NULL);
154 extern "C" void charm_messageRecv(char *env, int pe) {} //TODO
156 extern "C" void charm_userEvent(int e) {
157 #if CMK_TRACE_ENABLED
163 LogEvent1(_CHARM_LANG_ID, _E_USER_EVENT_CHARM,3,iData);
168 extern "C" void charm_userPairEvent(int e,double bt,double et){
169 #if CMK_TRACE_ENABLED
172 iData1[0] = iData2[0] = e;
173 iData1[1] = iData2[1] = curevent;
174 iData1[2] = iData2[2] = CkMyPe();
176 LogEvent4(_CHARM_LANG_ID, _E_USER_EVENT_PAIR,3,iData1,bt);
177 LogEvent4(_CHARM_LANG_ID, _E_USER_EVENT_PAIR,3,iData2,et);
182 extern "C" void charm_beginPack(void)
184 #if CMK_TRACE_ENABLED
187 LogEvent1(_CHARM_LANG_ID, _E_BEGIN_PACK, 1, iData);
191 extern "C" void charm_endPack(void)
193 #if CMK_TRACE_ENABLED
196 LogEvent1(_CHARM_LANG_ID, _E_END_PACK, 1, iData);
200 extern "C" void charm_beginUnpack(void)
202 #if CMK_TRACE_ENABLED
205 LogEvent1(_CHARM_LANG_ID, _E_BEGIN_UNPACK, 1, iData);
209 extern "C" void charm_endUnpack(void)
211 #if CMK_TRACE_ENABLED
214 LogEvent1(_CHARM_LANG_ID, _E_END_UNPACK, 1, iData);