head.s中設定了idt的指標,共256項,都指向ignore_int函式
ignore_int:
cldpushl %eax
pushl %ecx
pushl %edx
push
%dspush
%espush
%fs movl $(kernel_ds),%eax
mov %ax,%ds
mov %ax,%es
mov %ax,%fs
pushl $int_msg
call _printk
popl %eax
pop%fs
pop%es
pop%ds
popl %edx
popl %ecx
popl %eax
iret
而在traps.c檔案中,對可能出現的異常進行初始化
void trap_init(void)
至於硬體裝置產生的中斷,linux1.0核心專門建立了對應的函式呼叫表,當產生中斷則呼叫相應的函式。在irq.c檔案中處理。
void init_irq(void)
bh_active = 0;
intr_count = 0;
}
Linux 核心中斷體系 初探
還是要先理解整個中斷的體系,首先要理解對中斷的含義 如果這是涉及到的軟體的除錯的話,沒有接觸過硬體的同學會對,gdb的除錯中的中斷有一定的認知 但是,這兩個中斷指的意思是不相同的,gdb的除錯中的中斷 指的是程式執行到某個節點的的時候就跳出程式,這個 節點指的是提前設定好的中斷點,而這個linux ...
Linux核心 10 核心中的鍊錶
使用鍊錶的目的很明確,因為有很多事情要做,於是就把它放進煉表裡,一件事一件事的處理。比如在usb子系統裡,u盤不停的提交urb請求,usb鍵盤也提交,usb滑鼠也提交,那usb主機控制器咋應付得過來呢?很簡單,建乙個鍊錶,然後你每次提交就是往裡邊插入,然後usb主機控制器再統一去排程,乙個乙個來執行...
linux核心中的軟中斷的實現
最近在閱讀linux核心原始碼,把自己的一些理解發上來,一方面看到的朋友可以幫我指正我理解偏差的地方,別一方面也算是做乙個簡單的總結。首先呼叫open softirq 函式來初始化軟體中斷處理函式,將軟體中斷處理函式根據軟中斷的下標號插入到softirq vec陣列中,實現過程很簡單如下 123 4...