]> Zhao Yanbai Git Server - kernel.git/commitdiff
fix 切换tty光标位置不正确的问题
authoracevest <zhaoyanbai@126.com>
Sun, 14 Nov 2021 12:16:40 +0000 (20:16 +0800)
committeracevest <zhaoyanbai@126.com>
Sun, 14 Nov 2021 12:16:40 +0000 (20:16 +0800)
drivers/pci.c
include/printk.h
kernel/setup.c
kernel/system.c
kernel/tty.c

index e1cd00a07744ba049a05dfdc58e7eecf92313b8c..156f5a0d93b43786b6d63fdedb67547216ea28e1 100644 (file)
@@ -226,7 +226,6 @@ void setup_pci() {
     }
 
     dump_pci_dev();
-    asm("cli;hlt;");
 }
 
 typedef struct pci_info {
index 551bf0576b3ba780e66822cca23165997ecaf673..bc04ce6eaea7c63cf33370683707fc37be87cd44 100644 (file)
@@ -16,7 +16,6 @@
 
 #pragma once
 
-void switch_printk_screen();
 int printk(const char *fmtstr, ...);
 int printd(const char *fmtstr, ...);
 int printlo(unsigned int line, unsigned int offset, const char *fmtstr, ...);
index f8e6413d3e2d66cf1439adb5059504c99b7c35d8..df344dde70a32ce02164f7cffe591d294107b841 100644 (file)
@@ -77,8 +77,6 @@ void setup_kernel() {
     printl(MPL_TITLE, "                                 SYSTEM MONITOR");
     printl(MPL_ROOTDEV, "root device %08x", system.root_dev);
 
-    system_delay();
-
     // setup_tasks();
 
     setup_irqs();
@@ -87,29 +85,17 @@ void setup_kernel() {
 
     void ide_init();
     ide_init();
-    while (1) {
-        asm("sti;hlt;");
-    }
-    extern tty_t monitor_tty;
-    // tty_switch(&monitor_tty);
-    // asm("sti");
-    // while (1) { /* code */
-    // }
-
-    return;
 
-    // switch_printk_screen();
+    detect_cpu();
 
-    // switch_printk_screen();
-    system_delay();
+    printk(version);
 
-    system_delay();
+    extern tty_t monitor_tty;
+    tty_switch(&monitor_tty);
 
-    detect_cpu();
+    while (1) {
+        asm("sti;hlt;");
+    }
 
     setup_fs();
-
-    printk(version);
-
-    // switch_printk_screen();
 }
index 6d6a5c4e3b8394abc14ea91fd72cbd1c2ce19ef9..72bfa16bf25a2bb80142300f42eeb17cf5817d99 100644 (file)
@@ -181,15 +181,3 @@ int sysc_reboot(int mode) {
 
     return 0;
 }
-
-void system_delay() {
-    unsigned long flags;
-    irq_save(flags);
-    unsigned int n = system.delay;
-    while (n--) {
-        unsigned long cr0;
-        asm("movl %%cr0, %%eax;" : "=a"(cr0));
-        asm("movl %%eax, %%cr0;" ::"a"(cr0));
-    }
-    irq_restore(flags);
-}
index 200f771998e4d637b67f69a3c45769d1d663bfa9..0a6b5b3c05f350e3a0bbcb8abc5b62b730182436 100644 (file)
@@ -236,6 +236,8 @@ void tty_switch(tty_t *tty) {
     irq_restore(flags);
 
     current_tty = tty;
+
+    tty_set_cursor(current_tty);
 }
 
 tty_t *current_tty;
\ No newline at end of file