int msgdata[BAMBOO_MSG_BUF_LENGTH];
volatile int msgdataindex;
volatile int msgdatalast;
-//BAD! BAD! BAD! THIS SHOULD NOT BE A GLOBAL!!!!
-int msglength;
volatile bool msgdatafull;
int outmsgdata[BAMBOO_OUT_BUF_LENGTH];
int outmsgindex;
msgdata[msgdatalast] = (n); \
MSG_LASTINDEXINC_I()
-// NOTE: if msgdataindex == msgdatalast, it always means that the buffer if
-// full. In the case that the buffer is empty, should never call this
-// MACRO
#define MSG_REMAINSIZE_I(s) \
if(msgdataindex < msgdatalast) { \
(*(int*)s) = msgdatalast - msgdataindex; \
#define OUTMSG_LASTINDEXINC() \
outmsglast = (outmsglast + 1) & (BAMBOO_OUT_BUF_MASK); \
if(outmsglast == outmsgindex) { \
- BAMBOO_EXIT(0xd101); \
+ BAMBOO_EXIT(); \
}
#define OUTMSG_CACHE(n) \
* lock type: 0 -- read; 1 -- write
* ProfileMsg: 7 + totalexetime
* (size is always 2 * sizeof(int))
- * 8 + corenum
- * (size is always 2 * sizeof(int))
+ * 8
+ * (size is always sizeof(int))
* StatusMsg: d (size is always 1 * sizeof(int))
* e + status + corenum + sendobjs + receiveobjs
* (size is always 5 * sizeof(int))
* (size is always 3 * sizeof(int))
*/
typedef enum {
- MSGSTART = 0xD0, // 0xD0
+ MSGSTART = 0x0, // 0xD0
TRANSOBJ, // 0xD1
TRANSTALL, // 0xD2
LOCKREQUEST, // 0xD3
GCPROFILES, // 0xF3
#endif // GC_PROFILE
#ifdef GC_CACHE_ADAPT
- GCSTARTPOSTINIT, // 0xF4
- GCSTARTPREF, // 0xF5
- GCFINISHPOSTINIT, // 0xF6
- GCFINISHPREF, // 0xF7
+ GCSTARTPREF, // 0xF4
+ GCFINISHPREF, // 0xF5
#endif // GC_CACHE_ADAPT
#endif // MULTICORE_GC
MSGEND
} MSGTYPE;
// msg related functions
-INLINE void send_hanging_msg(bool isInterrupt);
-INLINE void send_msg_1(int targetcore,
- unsigned long n0,
- bool isInterrupt);
-INLINE void send_msg_2(int targetcore,
- unsigned long n0,
- unsigned long n1,
- bool isInterrupt);
-INLINE void send_msg_3(int targetcore,
- unsigned long n0,
- unsigned long n1,
- unsigned long n2,
- bool isInterrupt);
-INLINE void send_msg_4(int targetcore,
- unsigned long n0,
- unsigned long n1,
- unsigned long n2,
- unsigned long n3,
- bool isInterrupt);
-INLINE void send_msg_5(int targetcore,
- unsigned long n0,
- unsigned long n1,
- unsigned long n2,
- unsigned long n3,
- unsigned long n4,
- bool isInterrupt);
-INLINE void send_msg_6(int targetcore,
- unsigned long n0,
- unsigned long n1,
- unsigned long n2,
- unsigned long n3,
- unsigned long n4,
- unsigned long n5,
- bool isInterrupt);
-INLINE void cache_msg_1(int targetcore,
- unsigned long n0);
-INLINE void cache_msg_2(int targetcore,
- unsigned long n0,
- unsigned long n1);
-INLINE void cache_msg_3(int targetcore,
- unsigned long n0,
- unsigned long n1,
- unsigned long n2);
-INLINE void cache_msg_4(int targetcore,
- unsigned long n0,
- unsigned long n1,
- unsigned long n2,
- unsigned long n3);
-INLINE void cache_msg_5(int targetcore,
- unsigned long n0,
- unsigned long n1,
- unsigned long n2,
- unsigned long n3,
- unsigned long n4);
-INLINE void cache_msg_6(int targetcore,
- unsigned long n0,
- unsigned long n1,
- unsigned long n2,
- unsigned long n3,
- unsigned long n4,
- unsigned long n5);
-INLINE int receiveMsg(unsigned int send_port_pending);
+void send_msg_1(int targetcore,unsigned long n0);
+void send_msg_2(int targetcore,unsigned long n0,unsigned long n1);
+void send_msg_3(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2);
+void send_msg_4(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2,unsigned long n3);
+void send_msg_5(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2,unsigned long n3,unsigned long n4);
+void send_msg_6(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2,unsigned long n3,unsigned long n4,unsigned long n5);
+void send_msg_1_I(int targetcore,unsigned long n0);
+void send_msg_2_I(int targetcore,unsigned long n0,unsigned long n1);
+void send_msg_3_I(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2);
+void send_msg_4_I(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2,unsigned long n3);
+void send_msg_5_I(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2,unsigned long n3,unsigned long n4);
+void send_msg_6_I(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2,unsigned long n3,unsigned long n4,unsigned long n5);
+void cache_msg_1_I(int targetcore,unsigned long n0);
+void cache_msg_2_I(int targetcore,unsigned long n0,unsigned long n1);
+void cache_msg_3_I(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2);
+void cache_msg_4_I(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2,unsigned long n3);
+void cache_msg_5_I(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2,unsigned long n3,unsigned long n4);
+void cache_msg_6_I(int targetcore,unsigned long n0,unsigned long n1,unsigned long n2,unsigned long n3,unsigned long n4,unsigned long n5);
+int receiveMsg_I();
#ifdef TASK
-INLINE void transferObject(struct transObjInfo * transObj);
+void transferObject(struct transObjInfo * transObj);
#endif
#ifdef MULTICORE_GC
-INLINE void transferMarkResults();
+void transferMarkResults();
#endif
#endif // MULTICORE