From: acevest Date: Mon, 16 Feb 2026 15:23:29 +0000 (+0800) Subject: 修复sata irq handler计数问题 X-Git-Url: http://repos.zhaoyanbai.com/sitemap.xml?a=commitdiff_plain;p=kernel.git 修复sata irq handler计数问题 --- diff --git a/drivers/sata.c b/drivers/sata.c index d6cc83f..5295e5b 100644 --- a/drivers/sata.c +++ b/drivers/sata.c @@ -109,13 +109,13 @@ void init_sata_device(ahci_hba_t* hba, ahci_port_t* port, int port_index) { uint64_t sata_irq_cnt = 0; void sata_irq_handler(unsigned int irq, pt_regs_t* regs, void* dev_id) { + sata_irq_cnt++; + for (int i = 0; i < max_sata_devices; i++) { sata_device_t* sata = sata_devices + i; ahci_port_t* port = sata->port; assert(port != NULL); - sata_irq_cnt += 1; - // uint32_t interrupt_status = port->interrupt_status; if (0 == interrupt_status) { diff --git a/include/tty.h b/include/tty.h index 54a0b96..153f4ad 100644 --- a/include/tty.h +++ b/include/tty.h @@ -17,8 +17,8 @@ #define TTY_GREEN 0b0010 #define TTY_CYAN 0b0011 #define TTY_RED 0b0100 -#define TTY_PURPLE 0b101 -#define TTY_YELLOW 0b110 +#define TTY_PURPLE 0b0101 +#define TTY_YELLOW 0b0110 #define TTY_WHITE 0b0111 typedef struct tty { diff --git a/kernel/task_disk.c b/kernel/task_disk.c index 680c6a1..f344f8c 100644 --- a/kernel/task_disk.c +++ b/kernel/task_disk.c @@ -69,6 +69,10 @@ void disk_task_entry() { while (1) { down(&disk_request_queue.sem); + for (int i = 0; i < 123; i++) { + asm("hlt"); + } + mutex_lock(&disk_request_queue.mutex); assert(!list_empty(&disk_request_queue.list)); disk_request_t* req = list_first_entry(&disk_request_queue.list, disk_request_t, list); @@ -84,8 +88,8 @@ void disk_task_entry() { disk_request_queue.completed_count++; // 不需要保护 - for (int i = 0; i < 123; i++) { - asm("hlt"); - } + // for (int i = 0; i < 123; i++) { + // asm("hlt"); + // } } }