闲置任务

This commit is contained in:
Yourtion
2016-04-26 12:17:22 +08:00
parent 96ece33092
commit b9768c4277
2 changed files with 24 additions and 3 deletions

View File

@@ -76,7 +76,7 @@ void HariMain(void)
task_b[i]->tss.fs = 1 * 8;
task_b[i]->tss.gs = 1 * 8;
*((int *) (task_b[i]->tss.esp + 4)) = (int) sht_win_b[i];
task_run(task_b[i], 2, i + 1);
/* task_run(task_b[i], 2, i + 1); */
}
/* sht_win */

View File

@@ -64,13 +64,21 @@ void task_switchsub(void)
return;
}
void task_idle(void)
{
for (;;) {
io_hlt();
}
}
struct TASK *task_init(struct MEMMAN *memman)
{
int i;
struct TASK *task;
struct TASK *task, *idle;
struct SEGMENT_DESCRIPTOR *gdt = (struct SEGMENT_DESCRIPTOR *) ADR_GDT;
taskctl = (struct TASKCTL *) memman_alloc_4k(memman, sizeof (struct TASKCTL));
taskctl = (struct TASKCTL *) memman_alloc_4k(memman, sizeof (struct TASKCTL));
for (i = 0; i < MAX_TASKS; i++) {
taskctl->tasks0[i].flags = 0;
taskctl->tasks0[i].sel = (TASK_GDT0 + i) * 8;
@@ -80,6 +88,7 @@ struct TASK *task_init(struct MEMMAN *memman)
taskctl->level[i].running = 0;
taskctl->level[i].now = 0;
}
task = task_alloc();
task->flags = 2; /*活动中标志*/
task->priority = 2; /* 0.02秒*/
@@ -89,6 +98,18 @@ struct TASK *task_init(struct MEMMAN *memman)
load_tr(task->sel);
task_timer = timer_alloc();
timer_settime(task_timer, task->priority);
idle = task_alloc();
idle->tss.esp = memman_alloc_4k(memman, 64 * 1024) + 64 * 1024;
idle->tss.eip = (int) &task_idle;
idle->tss.es = 1 * 8;
idle->tss.cs = 2 * 8;
idle->tss.ss = 1 * 8;
idle->tss.ds = 1 * 8;
idle->tss.fs = 1 * 8;
idle->tss.gs = 1 * 8;
task_run(idle, MAX_TASKLEVELS - 1, 1);
return task;
}