void pupSingleMessage(PUP::er &p, int curObj, void *msg) { beginItem(p,curObj); int isCharm=0; const char *type="Converse"; p.comment("name"); char name[128]; if (msg == (void*)-1) { type="Sentinel"; p((char*)type, strlen(type)); return; } #if ! CMK_BIGSIM_CHARM if (CmiGetHandler(msg)==_charmHandlerIdx) {isCharm=1; type="Local Charm";} if (CmiGetXHandler(msg)==_charmHandlerIdx) {isCharm=1; type="Network Charm";} #else isCharm=1; type="BG"; #endif if (curObj < 0) type="Conditional"; sprintf(name,"%s %d: %s (%d)","Message",curObj,type,CmiGetHandler(msg)); p(name, strlen(name)); if (isCharm) { /* charm message */ p.comment("charmMsg"); p.synchronize(PUP::sync_begin_object); envelope *env=(envelope *)msg; CkUnpackMessage(&env); //messages[curObj]=env; CpdPupMessage(p, EnvToUsr(env)); //CkPupMessage(p, &messages[curObj], 0); p.synchronize(PUP::sync_end_object); } }
void add(int cur,Chare *e,int group) { // Just grab the name and nothing else: ArrayElement *elt = (ArrayElement*)e; PUP::er &p=*pp; beginItem(p,cur); p.comment("name"); char *n=elt->ckDebugChareName(); p(n,strlen(n)); free(n); }
virtual void pup(PUP::er &p, CpdListItemsRequest &req) { for (int i=0; i<_debugData.length(); ++i) { beginItem(p, i); void *obj = _debugData[i].obj; p.comment("obj"); pup_pointer(&p, &obj); void *msg = _debugData[i].msg; p.comment("msg"); pup_pointer(&p, &msg); } }
virtual void pup(PUP::er &p,CpdListItemsRequest &req) { CkHashtableIterator *it=tab->iterator(); void *objp; int curObj=0; while (NULL!=(objp=it->next())) { if (curObj>=req.lo && curObj<req.hi) { CpdListAccessor *acc=*(CpdListAccessor **)objp; char *pathName=(char *)acc->getPath(); beginItem(p,curObj); p.comment("name"); p(pathName,strlen(pathName)); } curObj++; } }
virtual void pup(PUP::er &p, CpdListItemsRequest &req) { envelope *env = (envelope*)(((unsigned int)req.lo) + (((unsigned long)req.hi)<<32)+sizeof(CmiChunkHeader)); beginItem(p, 0); const char *type="Converse"; p.comment("name"); char name[128]; if (CmiGetHandler(env)==_charmHandlerIdx) {type="Local Charm";} if (CmiGetXHandler(env)==_charmHandlerIdx) {type="Network Charm";} sprintf(name,"%s 0: %s (%d)","Message",type,CmiGetHandler(env)); p(name, strlen(name)); p.comment("charmMsg"); p.synchronize(PUP::sync_begin_object); CpdPupMessage(p, EnvToUsr(env)); p.synchronize(PUP::sync_end_object); }
void add(int cur, Chare *obj, int group) { PUP::er &p=*pp; beginItem(p,cur); p.comment("id"); char *n = (char*)malloc(30); int s=obj->ckDebugChareID(n, 30); CkAssert(s > 0); p(n,s); free(n); PUPn(group); p.comment("name"); n=obj->ckDebugChareName(); p(n,strlen(n)); free(n); }
void add(int cur, Chare *obj, int group) { PUP::er &p=*pp; CpdListItemsRequest &req=*reqq; char *n = (char *)malloc(30); int s=obj->ckDebugChareID(n, 30); CkAssert(s > 0); if (req.extraLen == s && memcmp(req.extra, n, s) == 0) { // the object match, found! beginItem(p,cur); int type = obj->ckGetChareType(); p.comment("type"); const char *t = _chareTable[type]->name; p((char*)t,strlen(t)); p.comment("value"); int size = _chareTable[type]->size; p((char*)obj,size); } }
void add(int cur, Chare *e, int group) { // Pup the element data ArrayElement *elt = (ArrayElement*)e; PUP::er &p=*pp; beginItem(p,cur); //elt->ckDebugPup(p); // Now ignore any pupper, just copy all the memory as raw data p.comment("name"); char *n=elt->ckDebugChareName(); p(n,strlen(n)); free(n); int type = elt->ckGetChareType(); p.comment("type"); const char *t = _chareTable[type]->name; p((char*)t,strlen(t)); p.comment("value"); int size = _chareTable[type]->size; p((char*)elt,size); }
virtual void pup(PUP::er &p, CpdListItemsRequest &req) { int length; void ** messages; int curObj=0; void *msg; length = CdsFifo_Length((CdsFifo)(CpvAccess(conditionalQueue))); messages = CdsFifo_Enumerate(CpvAccess(conditionalQueue)); for (curObj=-length; curObj<0; curObj++) { void *msg = messages[length+curObj]; pupSingleMessage(p, curObj-1, msg); } delete[] messages; curObj = 0; length = CdsFifo_Length((CdsFifo)(CkpvAccess(debugQueue))); messages = CdsFifo_Enumerate(CkpvAccess(debugQueue)); if (CkpvAccess(lastBreakPointMsg) != NULL) { beginItem(p, -1); envelope *env=(envelope *)UsrToEnv(CkpvAccess(lastBreakPointMsg)); p.comment("name"); char *type=(char*)"Breakpoint"; p(type,strlen(type)); p.comment("charmMsg"); p.synchronize(PUP::sync_begin_object); CkUnpackMessage(&env); CpdPupMessage(p, EnvToUsr(env)); p.synchronize(PUP::sync_end_object); } for(curObj=req.lo; curObj<req.hi; curObj++) if ((curObj>=0) && (curObj<length)) { void *msg=messages[curObj]; /* converse message */ pupSingleMessage(p, curObj, msg); } delete[] messages; }