Beispiel #1
0
/* we set interrupts to zero here so that we may use rwlocks in
 * (potentially) an interrupt handler */
void task_block(struct llist *list, task_t *task)
{
	int old = set_int(0);
	task->blocklist = list;
	ll_do_insert(list, task->blocknode, (void *)task);
	tqueue_remove(((cpu_t *)task->cpu)->active_queue, task->activenode);
	task_pause(task);
	assert(!set_int(old));
}
Beispiel #2
0
void
pause_task_with_pid(int pid){

    int i = SetInts(0);

	task_t* task = find_task_with_pid(pid);

	if(task != (task_t *) -1)
		task_pause(task);

    SetInts(i);

    _reschedule();
}