在列舉型別irqreturn定義在include/linux/irqreturn.h檔案中。
unsigned long flags:中斷處理的屬性,與中斷管理有關的位掩碼選項,有一下幾組值:
#define irqf_disabled 0x00000020 /*中斷禁止*/
#define irqf_sample_random 0x00000040 /*供系統產生隨機數使用*/
#define irqf_shared 0x00000080 /*在裝置之間可共享*/
#define irqf_probe_shared 0x00000100/*探測共享中斷*/
#define irqf_timer 0x00000200/*專用於時鐘中斷*/
#define irqf_percpu 0x00000400/*每cpu週期執行中斷*/
#define irqf_nobalancing 0x00000800/*復位中斷*/
#define irqf_irqpoll 0x00001000/*共享中斷中根據註冊時間判斷*/
#define irqf_oneshot 0x00002000/*硬體中斷處理完後觸發*/
#define irqf_trigger_none 0x00000000/*無觸發中斷*/
#define irqf_trigger_rising 0x00000001/*指定中斷觸發型別:上公升沿有效*/
#define irqf_trigger_falling 0x00000002/*中斷觸發型別:下降沿有效*/
#define irqf_trigger_high 0x00000004/*指定中斷觸發型別:高電平有效*/
#define irqf_trigger_low 0x00000008/*指定中斷觸發型別:低電平有效*/
#define irqf_trigger_mask (irqf_trigger_high | irqf_trigger_low | \
irqf_trigger_rising | irqf_trigger_falling)
#define irqf_trigger_probe 0x00000010/*觸發式檢測中斷*/
Linux 核心中斷體系 初探
還是要先理解整個中斷的體系,首先要理解對中斷的含義 如果這是涉及到的軟體的除錯的話,沒有接觸過硬體的同學會對,gdb的除錯中的中斷有一定的認知 但是,這兩個中斷指的意思是不相同的,gdb的除錯中的中斷 指的是程式執行到某個節點的的時候就跳出程式,這個 節點指的是提前設定好的中斷點,而這個linux ...
linux核心中符號位址的獲取
有些核心函式或者核心變數是不匯出的,但是確實需要用,那該怎麼辦?因此尋找核心符號位址就有必要進行一下總結,更有甚,如果想找一條特定的指令,比如movl的指令位址,那更需要投入一些精力!總的來說,我總結了下面五種方式 1.通過procfs中的kallsym檔案或者system.map檔案直接查詢 這種...
linux核心中的軟中斷的實現
最近在閱讀linux核心原始碼,把自己的一些理解發上來,一方面看到的朋友可以幫我指正我理解偏差的地方,別一方面也算是做乙個簡單的總結。首先呼叫open softirq 函式來初始化軟體中斷處理函式,將軟體中斷處理函式根據軟中斷的下標號插入到softirq vec陣列中,實現過程很簡單如下 123 4...