什么相当于在Linux中“在DOS中注册ISR”

时间:2013-12-26 12:20:41

标签: linux assembly

在DOS中,可以通过以下代码注册isr(中断服务程序):

mov    ah,25H
mov    al,0BH
lea    dx,handler
mov    bx,seg handler
mov    ds,bx
int    21H

该过程将处理0BH中断。

我想知道:在linux中这相当于什么?

2 个答案:

答案 0 :(得分:1)

在DOS中,您可以使用函数25h为系统调用或来自设备的硬件中断安装处理程序。实模式代码通常不关心硬件异常,但有一些DOS程序使用它们,例如“不存在协处理器”,用于模拟80x87的CAD程序,等等。

在Linux中,您可以执行这些操作,但仅限于内核模式,即设备驱动程序。

  • 例外:它们由内核自动处理。您的(用户)程序收到一个信号。处理它。您的内核程序不应该触发任何异常(页面错误除外,这是可恢复的)

  • 系统调用:驱动程序可以通过写入syscalls数组来更改系统调用表,添加或修改现有的调用表。更多信息here

  • 硬件中断:使用request_interrupt()函数为绑定到IRQ的硬件中断安装处理程序(与DOS的中断号不同)

答案 1 :(得分:0)

或多或少相当于内核函数:

request_irq(11,handler,...)

参见手册: http://mirror.linux.org.au/linux-mandocs/2.4.24/request_irq.html