mark before adding zero-overhead linux mode
authorjzhou <jzhou>
Wed, 10 Mar 2010 18:49:38 +0000 (18:49 +0000)
committerjzhou <jzhou>
Wed, 10 Mar 2010 18:49:38 +0000 (18:49 +0000)
Robust/src/Runtime/multicoreruntime.h
Robust/src/Runtime/multicoretask.c

index ccfd0624562a77ae594134cdfeaffc6ecd315063..63b324a97442ebcad2422064269c6f610404026f 100644 (file)
@@ -9,6 +9,9 @@
 // global variables                                          //
 ///////////////////////////////////////////////////////////////
 
+// record the starting time
+unsigned long long bamboo_start_time;
+
 // data structures for msgs
 #define BAMBOO_OUT_BUF_LENGTH 3000
 #define BAMBOO_MSG_BUF_LENGTH 3000
@@ -16,11 +19,12 @@ int msgdata[BAMBOO_MSG_BUF_LENGTH];
 int msgdataindex;
 int msgdatalast;
 int msglength;
+volatile bool msgdatafull;
 int outmsgdata[BAMBOO_OUT_BUF_LENGTH];
 int outmsgindex;
 int outmsglast;
 int outmsgleft;
-bool isMsgHanging;
+volatile bool isMsgHanging;
 volatile bool isMsgSending;
 
 #define MSG_INDEXINC_I() \
@@ -39,7 +43,9 @@ volatile bool isMsgSending;
 #define MSG_REMAINSIZE_I(s) \
        if(msgdataindex < msgdatalast) { \
                (*(int*)s) = msgdatalast - msgdataindex; \
-       } else { \
+       } else if((msgdataindex == msgdatalast) && (!msgdatafull)) {\
+               (*(int*)s) = 0; \
+       }       else { \
                (*(int*)s) = (BAMBOO_MSG_BUF_LENGTH) - msgdataindex + msgdatalast; \
        } 
 
index c43766b24e25898ddb6107d5a23d42a8b91dc22c..f1af2a0324007bcdcbb5ac278f4e0ac7e3405c41 100644 (file)
@@ -92,6 +92,7 @@ void initruntimedata() {
   msgdataindex = 0;
        msgdatalast = 0;
   msglength = BAMBOO_MSG_BUF_LENGTH;
+       msgdatafull = false;
   for(i = 0; i < BAMBOO_OUT_BUF_LENGTH; ++i) {
     outmsgdata[i] = -1;
   }
@@ -403,9 +404,9 @@ void checkCoreStatus() {
 #endif                                           
                         
 #ifdef USEIO
-                                       totalexetime = BAMBOO_GET_EXE_TIME();
+                                       totalexetime = BAMBOO_GET_EXE_TIME() - bamboo_start_time;
 #else
-                                       BAMBOO_DEBUGPRINT(BAMBOO_GET_EXE_TIME());
+                                       BAMBOO_DEBUGPRINT(BAMBOO_GET_EXE_TIME() - bamboo_start_time);
                                        BAMBOO_DEBUGPRINT_REG(total_num_t6); // TODO for test
                                        BAMBOO_DEBUGPRINT(0xbbbbbbbb);
 #endif
@@ -2393,6 +2394,7 @@ processmsg:
     MSGTYPE type;
     type = msgdata[msgdataindex]; //[0]
                MSG_INDEXINC_I();
+               msgdatafull = false;
                // TODO
                //tprintf("msg type: %x\n", type);
     switch(type) {