Example #1
0
static void addFreeWrapper(workerctx_t *wp) {
	assert (!LpelMailboxHasIncoming(wp->mailbox) && wp->terminate);
	PRODLOCK_LOCK(&lockwrappers);
	wp->next = freewrappers;
	freewrappers = wp;
	PRODLOCK_UNLOCK(&lockwrappers);
}
Example #2
0
File: worker.c Project: jsyk/lpel
static void FetchAllMessages( workerctx_t *wc)
{
  workermsg_t msg;
  while( LpelMailboxHasIncoming(wc->mailbox) ) {
    LpelMailboxRecv(wc->mailbox, &msg);
    ProcessMessage( wc, &msg);
  }
}
Example #3
0
/*
 * 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;
		}
	}
}