TaskList_t CLRenderWorld::MakeTasksList() const
	{
		TaskList_t tasks;
		tasks.push_back(*m_RenderTask);
		//tasks.push_back(*m_GUITask);
		tasks.push_back(*m_GraphicalProfilerTask);
		return std::move(tasks);
	}
Exemple #2
0
void free_zombie_tasks() {
	ASSERT_int_disable();

	while (task_zombie_list.size() > 0) {
		Task *t = task_zombie_list.front();
		if (t == task_curr)
			return;
		task_zombie_list.pop_front();
		task_free_kernel_stack(t);
		task_delete_vm(t);
		t->state = Task::State_not_runnable;;
		t->free = 1;
		kfree(t);
	}
}
Exemple #3
0
void task_free(Task *t) {
	ASSERT_int_disable();
	ASSERT(t == task_curr);

	ipc_task_free(t);
	task_curr_free_files();

	uint32_t count_brk = (roundUp(t->pgdir.end_brk) - roundDown(t->pgdir.start_brk)) / 0x1000;
	/* code, heap ve stack alanlari toplami user alanina esit olmali */
	ASSERT(t->pgdir.count_stack + t->pgdir.count_program + count_brk ==
		   t->pgdir.count_user);
	task_free_vm_user(t);
	ASSERT(t->pgdir.count_user == 0);

	/*
	 * kernel stack ve pagedir daha sonra zombie list uzerinden silinecek.
	 * task structini bulundugu listeden cikar, zombie olarak isaretle ve
	 * task_zombie_list'e ekle.
	 */
	t->list_node.__list->erase(t->list_node.get_iterator());
	t->state = Task::State_zombie;
	task_zombie_list.push_back(&t->list_node);

	if (t->alarm_list_node.__list)
		t->alarm_list_node.__list->erase(&t->alarm_list_node);
}
Exemple #4
0
void task_init() {
	memset(&task0, 0, sizeof(Task));
	task_id_ht.init(mem_task_id_ht, sizeof(mem_task_id_ht));
	task_zombie_list.init();
}