doc: Add serial to list of ci file reserved words
[charm.git] / src / conv-core / debug-conv.h
1 /*
2  Interface to Converse portion of parallel debugger.
3  Moved here from converse.h 4/10/2001 by Orion Sky Lawlor, olawlor@acm.org
4  */
5 #ifndef __CMK_DEBUG_CONV_H
6 #define __CMK_DEBUG_CONV_H
7
8 #include "pup_c.h"
9
10 #define CHARMDEBUG_MAJOR   10
11 #define CHARMDEBUG_MINOR    6
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 extern void * (*CpdDebugGetAllocationTree)(int*);
18 extern void (*CpdDebug_pupAllocationPoint)(pup_er p, void *data);
19 extern void (*CpdDebug_deleteAllocationPoint)(void *ptr);
20 extern void * (*CpdDebug_MergeAllocationTree)(int *size, void *data, void **remoteData, int numRemote);
21
22 extern void * (*CpdDebugGetMemStat)(void);
23 extern void (*CpdDebug_pupMemStat)(pup_er p, void *data);
24 extern void (*CpdDebug_deleteMemStat)(void *ptr);
25 extern void * (*CpdDebug_mergeMemStat)(int *size, void *data, void **remoteData, int numRemote);
26
27 CpvExtern(int, cmiArgDebugFlag);
28 extern char ** memoryBackup;
29 extern void CpdCheckMemory();
30 extern void CpdResetMemory();
31
32 void CpdInit(void);
33 void CpdFreeze(void);
34 void CpdUnFreeze(void);
35 int  CpdIsFrozen(void);
36 void CpdFreezeModeScheduler(void);
37 void CpdStartGdb(void);
38 void Cpd_CmiHandleMessage(void *msg);
39
40 extern int (*CpdIsDebugMessage)(void*);
41 extern void * (*CpdGetNextMessage)(CsdSchedulerState_t*);
42 extern int _conditionalDelivery;
43 extern int conditionalPipe[2];
44
45 enum {
46   CPD_ERROR = 0,
47   CPD_SIGNAL = 1,
48   CPD_ABORT = 2,
49   CPD_FREEZE = 3,
50   CPD_BREAKPOINT = 4,
51   CPD_CROSSCORRUPTION = 5
52 };
53 extern void CpdNotify(int type, ...);
54
55 typedef struct LeakSearchInfo {
56   char *begin_data, *end_data;
57   char *begin_bss, *end_bss;
58   int quick;
59   int pe;
60 } LeakSearchInfo;
61 extern void CpdSearchLeaks(char*);
62
63 /* C bindings for CpdList functions: */
64
65 /**
66   When a CCS client asks for some data in a CpdList, the
67   system generates this struct to describe the range of
68   items the client asked for (the items are numbered lo to hi-1),
69   as well as store any extra data the CCS client passed in.
70 */
71 typedef struct {
72         int lo,hi; /**< Range of requested items in list is (lo .. hi-1)*/
73         int extraLen; /**< Amount of data pointed to below*/
74         void *extra; /**< List-defined request data shipped in via CCS */
75 } CpdListItemsRequest;
76
77 /**
78  Call this routine at the start of each CpdList item.
79  This lets the client distinguish one item from the next.
80 */
81 void CpdListBeginItem(pup_er p,int itemNo);
82
83 /**
84  User-written C routine to pup a range of items in a CpdList.
85     \param itemsParam User-defined parameter passed to CpdListRegister_c.
86     \param p pup_er to pup items to.
87     \param req Cpd request object, describing items to pup.
88 */
89 typedef void (*CpdListItemsFn_c)(void *itemsParam,pup_er p,
90                                 CpdListItemsRequest *req);
91
92 /**
93   User-written C routine to return the length (number of items)
94   in this CpdList.
95     \param lenParam User-defined parameter passed to CpdListRegister_c.
96     \param return Length of the CpdList.
97 */
98 typedef size_t  (*CpdListLengthFn_c)(void *lenParam);
99
100 /**
101   Create a new CpdList at the given path.  When a CCS client requests
102   this CpdList, Cpd will use these user-written C routines to extract
103   the list's length and items.
104     \param path CpdList request path.  The CCS client passes in this path.
105     \param lenFn User-written subroutine to calculate the list's current length.
106     \param lenParam User-defined parameter passed to lenFn.
107     \param itemsFn User-written subroutine to pup the list's items.
108     \param itemsParam User-defined parameter passed to itemsFn.
109 */
110 void CpdListRegister_c(const char *path,
111             CpdListLengthFn_c lenFn,void *lenParam,
112             CpdListItemsFn_c itemsFn,void *itemsParam,
113             int checkBoundary);
114
115 #ifdef __cplusplus
116 }
117 #endif
118
119 #endif