解决了在用户态下进行系统调用会禁用中断的问题

This commit is contained in:
fslongjin
2022-04-12 15:25:21 +08:00
parent 2d7b2b7048
commit fb4ddc56ff
9 changed files with 54 additions and 126 deletions

View File

@ -475,18 +475,16 @@ void do_IRQ(struct pt_regs *rsp, ul number)
}
}
else if (number >= 0x80 && number != 250)
else if (number == 0x80) // 系统调用
{
do_syscall_int(rsp, 0);
}
else if (number > 0x80)
{
printk_color(RED, BLACK, "SMP IPI [ %d ]\n", number);
apic_local_apic_edge_ack(number);
}
else if (number == 250) // 系统调用
{
kdebug("receive syscall");
kdebug("rflags=%#010lx", rsp->rflags);
}
else
{

View File

@ -50,7 +50,7 @@ hardware_intr_controller HPET_intr_controller =
void HPET_handler(uint64_t number, uint64_t param, struct pt_regs *regs)
{
printk("(HPET)");
//printk("(HPET)");
switch (param)
{
case 0: // 定时器0中断
@ -76,7 +76,6 @@ void HPET_handler(uint64_t number, uint64_t param, struct pt_regs *regs)
if (sched_cfs_ready_queue.cpu_exec_proc_jiffies <= 0)
{
current_pcb->flags |= PROC_NEED_SCHED;
kdebug("need_sched. proc_jiffies=%ld", sched_cfs_ready_queue.cpu_exec_proc_jiffies);
}
break;