made a few optimizations
[charm.git] / src / conv-core / quiescence.h
1 /*****************************************************************************
2  * $Source$
3  * $Author$
4  * $Date$
5  * $Revision$
6  *****************************************************************************/
7
8 #ifndef _QUIESCENCE_H_
9 #define _QUIESCENCE_H_
10
11 struct ConvQdMsg 
12 {  
13   char core[CmiMsgHeaderSizeBytes];
14   int phase; /* 0..2*/
15   union 
16   {
17     struct { int created; int processed; } p1;
18     struct { int dirty; } p2;
19   } u;
20 };
21
22
23 struct ConvQdState 
24 {
25   int stage; /* 0..2*/
26   int oProcessed;
27   int mCreated, mProcessed;
28   int cCreated, cProcessed;
29   int cDirty;
30   int nReported;
31   int nChildren;
32   int parent;
33   int *children;
34 };
35
36
37 /* Declarations for CQdMsg related operations */
38 int  CQdMsgGetPhase(CQdMsg); 
39 void CQdMsgSetPhase(CQdMsg, int); 
40 int  CQdMsgGetCreated(CQdMsg); 
41 void CQdMsgSetCreated(CQdMsg, int); 
42 int  CQdMsgGetProcessed(CQdMsg); 
43 void CQdMsgSetProcessed(CQdMsg, int); 
44 int  CQdMsgGetDirty(CQdMsg); 
45 void CQdMsgSetDirty(CQdMsg, int); 
46
47 /* Declarations for CQdState related operations */
48 void CQdInit(void);
49 int  CQdGetCreated(CQdState);
50 void CQdCreate(CQdState, int);
51 int  CQdGetProcessed(CQdState);
52 void CQdProcess(CQdState, int);
53 void CQdPropagate(CQdState, CQdMsg); 
54 int  CQdGetParent(CQdState); 
55 int  CQdGetCCreated(CQdState); 
56 int  CQdGetCProcessed(CQdState); 
57 void CQdSubtreeCreate(CQdState, int); 
58 void CQdSubtreeProcess(CQdState, int); 
59 int  CQdGetStage(CQdState); 
60 void CQdSetStage(CQdState, int); 
61 void CQdReported(CQdState); 
62 int  CQdAllReported(CQdState); 
63 void CQdReset(CQdState); 
64 void CQdMarkProcessed(CQdState); 
65 int  CQdIsDirty(CQdState); 
66 void CQdSubtreeSetDirty(CQdState, int); 
67
68 CQdState CQdStateCreate(void);
69 void CQdHandler(CQdMsg);
70
71 #endif