static void addFreeWrapper(workerctx_t *wp) { assert (!LpelMailboxHasIncoming(wp->mailbox) && wp->terminate); PRODLOCK_LOCK(&lockwrappers); wp->next = freewrappers; freewrappers = wp; PRODLOCK_UNLOCK(&lockwrappers); }
static void FetchAllMessages( workerctx_t *wc) { workermsg_t msg; while( LpelMailboxHasIncoming(wc->mailbox) ) { LpelMailboxRecv(wc->mailbox, &msg); ProcessMessage( wc, &msg); } }
/* * clean up master's mailbox before terminating master * last messages including: task request from worker, and return zombie task */ static void cleanupMasterMb() { workermsg_t msg; lpel_task_t *t; while (LpelMailboxHasIncoming(master->mailbox)) { LpelMailboxRecv(master->mailbox, &msg); switch(msg.type) { case WORKER_MSG_REQUEST: break; case WORKER_MSG_RETURN: t = msg.body.task; WORKER_DBG("master: get returned task %d\n", t->uid); assert(t->state == TASK_ZOMBIE); LpelTaskDestroy(t); break; default: assert(0); break; } } }