提高运行速度

This commit is contained in:
Yourtion
2016-04-22 16:53:40 +08:00
parent 30c62ffbd0
commit dc8c366fc0

View File

@@ -14,7 +14,7 @@ struct TSS32 {
int ldtr, iomap;
};
void task_b_main(void);
void task_b_main(struct SHEET *sht_back);
void HariMain(void)
{
@@ -106,7 +106,7 @@ void HariMain(void)
set_segmdesc(gdt + 3, 103, (int) &tss_a, AR_TSS32);
set_segmdesc(gdt + 4, 103, (int) &tss_b, AR_TSS32);
load_tr(3 * 8);
task_b_esp = memman_alloc_4k(memman, 64 * 1024) + 64 * 1024;
task_b_esp = memman_alloc_4k(memman, 64 * 1024) + 64 * 1024 - 8;
tss_b.eip = (int) &task_b_main;
tss_b.eflags = 0x00000202; /* IF = 1; */
tss_b.eax = 0;
@@ -123,7 +123,7 @@ void HariMain(void)
tss_b.ds = 1 * 8;
tss_b.fs = 1 * 8;
tss_b.gs = 1 * 8;
*((int *) 0x0fec) = (int) sht_back;
*((int *) (task_b_esp + 4)) = (int) sht_back;
for (;;) {
io_cli();
@@ -282,19 +282,20 @@ void make_textbox8(struct SHEET *sht, int x0, int y0, int sx, int sy, int c)
return;
}
void task_b_main(void)
void task_b_main(struct SHEET *sht_back)
{
struct FIFO32 fifo;
struct TIMER *timer_ts;
struct TIMER *timer_ts, *timer_put;
int i, fifobuf[128], count = 0;
char s[11];
struct SHEET *sht_back;
char s[12];
fifo32_init(&fifo, 128, fifobuf);
timer_ts = timer_alloc();
timer_init(timer_ts, &fifo, 1);
timer_init(timer_ts, &fifo, 2);
timer_settime(timer_ts, 2);
sht_back = (struct SHEET *) *((int *) 0x0fec);
timer_put = timer_alloc();
timer_init(timer_put, &fifo, 1);
timer_settime(timer_put, 1);
for (;;) {
count++;
@@ -306,7 +307,11 @@ void task_b_main(void)
} else {
i = fifo32_get(&fifo);
io_sti();
if (i == 1) { /*任务切换*/
if (i == 1) {
sprintf(s, "%11d", count);
putfonts8_asc_sht(sht_back, 0, 144, COL8_FFFFFF, COL8_008484, s, 11);
timer_settime(timer_put, 1);
} else if (i == 2) {
farjmp(0, 3 * 8);
timer_settime(timer_ts, 2);
}