Linux有一个中断向量表,中断向量表中有不同的项。这些项就是一个一个的“门”。穿过这些门才能真正
进入到中断服务程序。
门的种类和结构
这些门有不同的种类:任务们、中断们、陷阱门、调用门。
门由64位组成,逻辑成员(任务门除外)就是
1。TSS (16位)任务的状态段,就是对运行任务时所需要的寄存器、堆栈或者叫现场的描述。
2。类型码(3位)代表这是什么门
3。P标志位 表示是否在内存
4。DPL (3位)运行级别
5。位移高16位,位移低16位
6。保留一位永远为0,另外三位永远为000
对IDT的初始化
_ _init trap_init(void) 中使用 set_trap_gate( 偏移量,函数地址) 初始化
set_trap_gate使用 set_gate(IDT表+偏移量,15,0,addr) 中间的参数 2项表示类型码和D位,三项表示DPL。
init_irq()对外设中断进行设置。使用了set_intr_gate(偏移量,函数地址数组)
函数地址数组interruput[]表示了所有使用相同中断的函数地址。所有的函数都是将中断的分码进行压栈,然后
调用同一个函数