00001 #ifndef _QUIESCENCE_H_
00002 #define _QUIESCENCE_H_
00003
00004 struct ConvQdMsg
00005 {
00006 char core[CmiMsgHeaderSizeBytes];
00007 int phase;
00008 union
00009 {
00010 struct { int created; int processed; } p1;
00011 struct { int dirty; } p2;
00012 } u;
00013 };
00014
00015
00016 struct ConvQdState
00017 {
00018 int stage;
00019 int oProcessed;
00020 int mCreated, mProcessed;
00021 int cCreated, cProcessed;
00022 int cDirty;
00023 int nReported;
00024 int nChildren;
00025 int parent;
00026 int *children;
00027 };
00028
00029
00030
00031 int CQdMsgGetPhase(CQdMsg);
00032 void CQdMsgSetPhase(CQdMsg, int);
00033 int CQdMsgGetCreated(CQdMsg);
00034 void CQdMsgSetCreated(CQdMsg, int);
00035 int CQdMsgGetProcessed(CQdMsg);
00036 void CQdMsgSetProcessed(CQdMsg, int);
00037 int CQdMsgGetDirty(CQdMsg);
00038 void CQdMsgSetDirty(CQdMsg, int);
00039
00040
00041 void CQdInit(void);
00042 int CQdGetCreated(CQdState);
00043 void CQdCreate(CQdState, int);
00044 int CQdGetProcessed(CQdState);
00045 void CQdProcess(CQdState, int);
00046 void CQdPropagate(CQdState, CQdMsg);
00047 int CQdGetParent(CQdState);
00048 int CQdGetCCreated(CQdState);
00049 int CQdGetCProcessed(CQdState);
00050 void CQdSubtreeCreate(CQdState, int);
00051 void CQdSubtreeProcess(CQdState, int);
00052 int CQdGetStage(CQdState);
00053 void CQdSetStage(CQdState, int);
00054 void CQdReported(CQdState);
00055 int CQdAllReported(CQdState);
00056 void CQdReset(CQdState);
00057 void CQdMarkProcessed(CQdState);
00058 int CQdIsDirty(CQdState);
00059 void CQdSubtreeSetDirty(CQdState, int);
00060
00061 CQdState CQdStateCreate(void);
00062 void CQdHandler(CQdMsg);
00063
00064 #endif