00001
00002
00003
00004
00005 #ifndef __CMK_DEBUG_CONV_H
00006 #define __CMK_DEBUG_CONV_H
00007
00008 #include "pup_c.h"
00009
00010 #define CHARMDEBUG_MAJOR 10
00011 #define CHARMDEBUG_MINOR 6
00012
00013 #ifdef __cplusplus
00014 extern "C" {
00015 #endif
00016
00017 extern void * (*CpdDebugGetAllocationTree)(int*);
00018 extern void (*CpdDebug_pupAllocationPoint)(pup_er p, void *data);
00019 extern void (*CpdDebug_deleteAllocationPoint)(void *ptr);
00020 extern void * (*CpdDebug_MergeAllocationTree)(int *size, void *data, void **remoteData, int numRemote);
00021
00022 extern void * (*CpdDebugGetMemStat)(void);
00023 extern void (*CpdDebug_pupMemStat)(pup_er p, void *data);
00024 extern void (*CpdDebug_deleteMemStat)(void *ptr);
00025 extern void * (*CpdDebug_mergeMemStat)(int *size, void *data, void **remoteData, int numRemote);
00026
00027 CpvExtern(int, cmiArgDebugFlag);
00028 extern char ** memoryBackup;
00029 extern void CpdCheckMemory();
00030 extern void CpdResetMemory();
00031
00032 void CpdInit(void);
00033 void CpdFreeze(void);
00034 void CpdUnFreeze(void);
00035 int CpdIsFrozen(void);
00036 void CpdFreezeModeScheduler(void);
00037 void CpdStartGdb(void);
00038 void Cpd_CmiHandleMessage(void *msg);
00039
00040 extern int (*CpdIsDebugMessage)(void*);
00041 extern void * (*CpdGetNextMessage)(CsdSchedulerState_t*);
00042 extern int _conditionalDelivery;
00043 extern int conditionalPipe[2];
00044
00045 enum {
00046 CPD_ERROR = 0,
00047 CPD_SIGNAL = 1,
00048 CPD_ABORT = 2,
00049 CPD_FREEZE = 3,
00050 CPD_BREAKPOINT = 4,
00051 CPD_CROSSCORRUPTION = 5
00052 };
00053 extern void CpdNotify(int type, ...);
00054
00055 typedef struct LeakSearchInfo {
00056 char *begin_data, *end_data;
00057 char *begin_bss, *end_bss;
00058 int quick;
00059 int pe;
00060 } LeakSearchInfo;
00061 extern void CpdSearchLeaks(char*);
00062
00063
00064
00071 typedef struct {
00072 int lo,hi;
00073 int extraLen;
00074 void *extra;
00075 } CpdListItemsRequest;
00076
00081 void CpdListBeginItem(pup_er p,int itemNo);
00082
00089 typedef void (*CpdListItemsFn_c)(void *itemsParam,pup_er p,
00090 CpdListItemsRequest *req);
00091
00098 typedef size_t (*CpdListLengthFn_c)(void *lenParam);
00099
00110 void CpdListRegister_c(const char *path,
00111 CpdListLengthFn_c lenFn,void *lenParam,
00112 CpdListItemsFn_c itemsFn,void *itemsParam,
00113 int checkBoundary);
00114
00115 #ifdef __cplusplus
00116 }
00117 #endif
00118
00119 #endif