Exemple #1
0
void 
sleep_on(struct wait_queue *queue,
		struct task_struct *task)
{
	assert(queue && task);

	//assert(task->pid != 0);

	if (!task->pid)
		return;
	wait_queue_add(queue,task);

	task->task_status = TASK_UNINTERRUPTIBLE;

	schedule_delete_task(task);

	schedule();
}
Exemple #2
0
int exit(struct task_struct *task)
{
	assert(task);

	if (task == curtask)
		lcr3(pgd2p(kpgd));
	
	schedule_delete_task(task);
	exit_notify(task);
	exit_mm(task->mm);
	exit_files(task);
	exit_task(task);

	if (task == curtask) {
		curtask = NULL;
		schedule();
	}
	return 0;
}