err_t sys_mbox_new(sys_mbox_t *mbox, int size) { iop_mbx_t mbp; dbgprintf("sys_mbox_new: Create MBox (TID: %d)\n", GetThreadId()); mbp.attr = mbp.option = 0; if((*mbox = CreateMbx(&mbp)) < 0) { printf("sys_mbox_new: CreateMbx failed, EC: %d\n", *mbox); return ERR_MEM; } return ERR_OK; }
err_t sys_mbox_new(sys_mbox_t *mbox, int size) { iop_mbx_t mbp; mbp.attr = MBA_THFIFO; mbp.option = (u32)"PS2IP"; if((*mbox = CreateMbx(&mbp)) < 0) { printf("sys_mbox_new: CreateMbx failed, EC: %d\n", *mbox); return ERR_MEM; } dbgprintf("sys_mbox_new: mbox %d\n", *mbox); return ERR_OK; }
sys_mbox_t sys_mbox_new(void) { iop_mbx_t mbp; int mbid; dbgprintf("sys_mbox_new: Create MBox (TID: %d)\n",GetThreadId()); mbp.attr = 0; mbp.option = 0; if((mbid = CreateMbx(&mbp)) < 0) { printf("sys_mbox_new: CreateMbx failed, EC: %d\n", mbid); return -1; } mbox_count++; return((sys_mbox_t) mbid); }
void basicPollingTest() { static const int msgCount = 3; int i = 0; MSG msg[msgCount]; iop_mbx_t mbxInfo = {}; mbxInfo.option = 0; mbxInfo.attr = MBA_THFIFO | MBA_MSFIFO; s32 mbxId = CreateMbx(&mbxInfo); { s32 result = PollMbx(NULL, mbxId); printf(" polling from empty box: %d\n", result); } for (i = 0; i < msgCount; i++) { memset(&msg[i], 0, sizeof(MSG)); msg[i].header.priority = msgCount - i; msg[i].payload = i + 1; SendMbx(mbxId, &msg[i]); } printf(" box contents before polling: "); printMbx(mbxId); { MSG* msg = NULL; s32 result = PollMbx((void**)&msg, mbxId); printf(" polling from non-empty box: %d, message: %d\n", result, msg->payload); } printf(" box contents after polling: "); printMbx(mbxId); DeleteMbx(mbxId); }