Skip to content

irq_handler疑问 #37

Description

@tuantuanyyyy

这段代码中

void irq_handler(pt_regs *regs)
{
  // 发送中断结束信号给 PICs
  // 按照我们的设置,从 32 号中断起为用户自定义中断
  // 因为单片的 Intel 8259A 芯片只能处理 8 级中断
  // 故大于等于 40 的中断号是由从片处理的
  if (regs->int_no >= 40) {
  	// 发送重设信号给从片
  	outb(0xA0, 0x20);
  }
  // 发送重设信号给主片
  outb(0x20, 0x20);

  if (interrupt_handlers[regs->int_no]) {
  	interrupt_handlers[regs->int_no](regs);
  }
}

为什么先发送重设信号后调用处理函数呢?有影响吗,谢谢解答

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions