00001 #include <moc.h> 00002 #include <internal/imoc.h> 00003 #ifdef __SPU__ 00004 #include <internal/spu/imoc_core_spu.h> 00005 #else 00006 #include <internal/ppu/imoc_core_ppu.h> 00007 #endif 00008 00009 int IMOC_getFreeEntry(moc_message_envelope_t* pqueue, uint8_t tag, 00010 MOC_Comm comm, int isSpecial, int* index) 00011 { 00012 int t, temp = -1; 00013 for (t = node_handle.queue_size - 1; t >= 0; t--) 00014 { 00015 if (!pqueue[t].flags.bits.valid) 00016 temp = t; 00017 else 00018 if (!isSpecial) 00019 { 00020 if (pqueue[t].tag == tag && pqueue[t].communicator == comm 00021 && !pqueue[t].flags.bits.special) 00022 break; 00023 } 00024 else 00025 { 00026 if (pqueue[t].flags.bits.special) 00027 break; 00028 } 00029 } 00030 if (temp >= 0) 00031 { 00032 *index = temp; 00033 return 0; 00034 } 00035 else 00036 return MOC_ERR_MESSAGE_EXHAUSTED; 00037 return 0; 00038 } 00039
1.5.6