在DOS中,可以通过以下代码注册isr(中断服务程序):
mov ah,25H
mov al,0BH
lea dx,handler
mov bx,seg handler
mov ds,bx
int 21H
该过程将处理0BH
中断。
我想知道:在linux中这相当于什么?
答案 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