arm linux對(duì)中斷處理

arm linux對(duì)中斷處理

ID:20435638

大小:322.00 KB

頁(yè)數(shù):44頁(yè)

時(shí)間:2018-10-13

arm linux對(duì)中斷處理_第1頁(yè)
arm linux對(duì)中斷處理_第2頁(yè)
arm linux對(duì)中斷處理_第3頁(yè)
arm linux對(duì)中斷處理_第4頁(yè)
arm linux對(duì)中斷處理_第5頁(yè)
資源描述:

《arm linux對(duì)中斷處理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、ARMLinux對(duì)中斷的處理--中斷管理系統(tǒng)的初始化8ARMLinux對(duì)中斷的處理--中斷注冊(cè)方法18ARMLinux對(duì)中斷的處理--中斷處理21ARMLinux對(duì)中斷的處理--內(nèi)核模式下的中斷處理23ARMLinux對(duì)中斷的處理--用戶模式下的中斷處理40ARMLinux對(duì)中斷的處理--相關(guān)數(shù)據(jù)結(jié)構(gòu)中斷處理依賴(lài)于中斷的類(lèi)型:I/O中斷、時(shí)鐘中斷和處理器間中斷。不管引起中斷的電路的種類(lèi)如何,所有I/O中斷處理程序都執(zhí)行四個(gè)相同的基本操作:在內(nèi)核態(tài)堆棧中保存IRQ的值和寄存器的內(nèi)容。為正在給IRQ線服務(wù)的PIC發(fā)送一個(gè)應(yīng)答,這將允許PIC進(jìn)一步發(fā)出中斷。執(zhí)行共享這個(gè)IRQ的所有設(shè)備

2、的中斷服務(wù)例程。與中斷處理相關(guān)的數(shù)據(jù)結(jié)構(gòu)Linux系統(tǒng)里每個(gè)中斷通過(guò)一個(gè)稱(chēng)為中斷描述符的結(jié)構(gòu)irq_desc來(lái)管理,各中斷的信息都在這個(gè)結(jié)構(gòu)中得以體現(xiàn)。irq_desc結(jié)構(gòu)體在include/irq.h文件中定義:structirq_desc{??unsignedint???irq;??structtimer_rand_state*timer_rand_state;??unsignedint???????????*kstat_irqs;#ifdefCONFIG_INTR_REMAP??structirq_2_iommu?????*irq_2_iommu;#endif??irq_f

3、low_handler_thandle_irq;??structirq_chip???*chip;??structmsi_desc???*msi_desc;??void???????*handler_data;??void???????*chip_data;??structirqaction??*action;/*IRQactionlist*/??unsignedint???status;????/*IRQstatus*/???unsignedint???depth;??/*nestedirqdisables*/??unsignedint???wake_depth;/*neste

4、dwakeenables*/??unsignedint???irq_count;?/*FordetectingbrokenIRQs*/??unsignedlong?????last_unhandled;/*Agingtimerforunhandledcount*/??unsignedint???irqs_unhandled;??spinlock_t?????lock;#ifdefCONFIG_SMP??cpumask_var_t?????affinity;??unsignedint???node;#ifdefCONFIG_GENERIC_PENDING_IRQ??cpumask_

5、var_t?????pending_mask;#endif#endif??atomic_t???threads_active;??wait_queue_head_t??????wait_for_threads;#ifdefCONFIG_PROC_FS??structproc_dir_entry*dir;#endif??constchar?????*name;}____cacheline_internodealigned_in_smp;irq_desc結(jié)構(gòu)體(中斷描述符)中各個(gè)字段說(shuō)明:irq:??中斷描述符的中斷號(hào)timer_rand_state:pointertotimerra

6、ndstatestructkstat_irqs:??irqstatspercpuirq_2_iommu:?iommuwiththisirqhandle_irq:??高層的irq時(shí)間處理程序(如果為NULL,則默認(rèn)調(diào)用__do_IRQ())chip:?底層的中斷硬件訪問(wèn),指向PIC對(duì)象(irq_chip結(jié)構(gòu)),它服務(wù)于IRQ線,Linux中斷管理系統(tǒng)使用該成員來(lái)進(jìn)行中斷控制器的訪問(wèn)。msi_desc:?MSIdescriptorhandler_data:irq_chip方法使用的per-IRQ數(shù)據(jù)chip_data:???chip方法使用的特定平臺(tái)的per-chip私有數(shù)據(jù),以允許

7、共享chip的實(shí)現(xiàn)action:???標(biāo)識(shí)當(dāng)出現(xiàn)IRQ時(shí)要調(diào)用的中斷服務(wù)例程。該字段指向IRQ的irqaction鏈表的第一個(gè)元素。我們用request_irq()注冊(cè)的中斷處理方法,會(huì)被用來(lái)創(chuàng)建相關(guān)的irqaction結(jié)構(gòu)體,對(duì)于同一個(gè)中斷號(hào)注冊(cè)的各個(gè)中斷方法會(huì)被鏈接在該中斷號(hào)的中斷描述符的該字段上。status:???描述IRQ線狀態(tài)的一組標(biāo)志depth:disable-depth用于嵌套的irq_disable()調(diào)用,如果IRQ線被激活,則顯示0,如果IRQ線被禁止了不止

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。