精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux為什么中斷不允許休眠

麥辣雞腿堡 ? 來源:嵌入式Linux系統開發 ? 作者:Jasonangel ? 2023-09-27 17:48 ? 次閱讀

Linux 為什么中斷不允許休眠?

所謂的睡眠,就是調用 schedule 讓出 CPU,調度器選擇另外個進程繼續執行,這個過程涉及進程??臻g的切換。

1、假如中斷上下文中調用 schedule ,此時獲取的 struct thread info 數據結構是發生中斷時該進程棧信息,而不是中斷上下文調用 schedule 時任何信息。這就導致再也無法返回中斷上下文中調用 schedule 的地方。

2、中斷上下文處于關中斷中,需要發送個 EOI 通知 GIC 中斷處理結束,GIC 和CPUinterface 才會進入下一次中斷處理。如果中途 schedule,那么整個系統的中斷都會被屏蔽掉。

一般進入中斷后,需要關中斷,也會關搶占,同時注意不可以調用schedule。

unhandled interrupt 和 spurious interrupt

未處理中斷和虛假中斷

在中斷處理的最后,總會有一段代碼如下:

irqreturn_t

handle_irq_event_percpu(structirq_desc*desc,structirqaction*action)

{

……

if(!noirqdebug)

note_interrupt(irq,desc,retval);

returnretval;

}

note_interrupt就是進行unhandled interrupt和spurious interrupt處理的。對于這類中斷,linux kernel有一套復雜的機制來處理,你可以通過command line參數(noirqdebug)來控制開關該功能。

當發生了一個中斷,但是沒有被處理(有兩種可能,一種是根本沒有注冊的 specific handler,第二種是有 handler,但是 handler 否認是自己對應的設備觸發的中斷),怎么辦?毫無疑問這是一個異常狀況,那么 kernel 是否要立刻采取措施將該 IRQ disable 呢?也不太合適,畢竟 interrupt request 信號線是允許共享的,直接 disable 該 IRQ 有可能會下手太狠,kernel 采取了這樣的策略:如果該 IRQ 觸發了 100,000 次,但是 99,900 次沒有處理,在這種條件下,我們就是 disable 這個 interrupt request line。

中斷線和中斷號是一個意思。

相關的控制數據在中斷描述符中,如下:

structirq_desc{

……

unsignedintirq_count;--------記錄發生的中斷的次數,每100,000則回滾

unsignedlonglast_unhandled;-----上一次沒有處理的IRQ的時間點

unsignedintirqs_unhandled;------沒有處理的次數

……

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10829

    瀏覽量

    211193
  • Linux
    +關注

    關注

    87

    文章

    11232

    瀏覽量

    208950
  • 中斷
    +關注

    關注

    5

    文章

    895

    瀏覽量

    41401
收藏 人收藏

    評論

    相關推薦

    為保醫療質量不允許開展互聯網醫療診治?

    互聯網時代,很多人都已經習慣了通過網絡解決很多問題,包括看病找醫生。在線輔助問診是否合法?對此,國家衛計委新聞發言人宋樹立表示:互聯網上涉及醫學診斷治療是不允許開展的,只能做健康方面的咨詢。
    發表于 04-13 09:46 ?1124次閱讀

    “tc1.3”編譯報錯不允許使用向量表編號TriCore?怎么解決?

    “tc1.3” TriCore? 不允許使用矢量表編號
    發表于 01-22 08:33

    NgdBuild:486不允許屬性“SIM_MODE”

    “BU2_U0_blk_mem_generator_valid.cstr_ramloop [3] .ram.r_v5_noinit.ram_SP.WIDE_P RIM36.TDP”上不允許屬性“SIM_MODE”。該屬性將被忽略。這可以嗎?ISE版本
    發表于 10-10 11:48

    請問SPI不允許在main函數中對SD卡操作嗎?

    請問下,我在一個定時中斷里使用原子哥寫SD的程序寫SD卡,在mian函數的循環里同樣也有對SD卡的操作(SD_Init(),MSD_WriteBuffer),這時我發現程序有一定概率在出定時中斷后不跑了,把main函數中對SD卡操作的函數都去掉后就完全沒有這個問題了。難道
    發表于 07-11 04:35

    電壓互感器二次側為什么不允許短路

    變壓器的工作原理是什么?變壓器是由哪些部分組成的?電流互感器二次側為什么不允許開路?電壓互感器二次側為什么不允許短路?
    發表于 08-09 06:48

    電流互感器與電壓互感器二次側為什么不允許開路

    變壓器的工作原理是什么?變壓器是由哪些部分組成的?電流互感器二次側為什么不允許開路?電壓互感器二次側為什么不允許短路?
    發表于 08-23 06:14

    FreeRTOS的某些內容是不允許MDMA讀取內存嗎?

    驗證了 RAM 地址存在于 AXI 內存中,所以似乎 FreeRTOS 的某些內容不允許 MDMA 讀取內存?// Write operationMDMA_Channel0-&gt
    發表于 12-07 07:47

    STM32H7時鐘為什么不允許調整?

    時鐘不允許調整。通常它不應該發出警告。
    發表于 12-14 06:52

    TTL門電路為什么輸出端不允許并聯相接呢?

    TTL門電路為什么輸出端不允許并聯相接?希望能從三極管的角度解釋一下,最好有圖解。
    發表于 04-28 11:06

    不允許32位傳輸的i.MX 8是否有限制?

    字節的 DMA 傳輸(DMA 控制器在設備內部,因此它會進行 PCI 總線主傳輸)并且該傳輸從未開始或完成,所以看起來 4 字節的傳輸大小是太小。較大的傳輸(8 個或更多字節)工作正常。 不允許
    發表于 05-11 06:34

    網絡電視不允許直播世界杯?

    2018世界杯比賽不允許在互聯網電視平臺上進行賽事的直播和延時播出,否則都屬于違規,只能在賽事結束后提供比賽點播服務。
    的頭像 發表于 06-08 09:44 ?5260次閱讀

    AVR單片機外部中斷實例及下載燒錄的方法

    中斷向量位于Boot Loader 區,那么執行應用區代碼時中斷是禁止的。401不允許運行于Boot Loader 區的LPM 指令從應用區讀取數據。若中斷向量位于Boot Load
    發表于 04-09 15:05 ?2159次閱讀
    AVR單片機外部<b class='flag-5'>中斷</b>實例及下載燒錄的方法

    為什么中性線不允許單獨斷開

     在我們通常所用的TN系統中,不管單相電路還是三相電路,零線和地線一樣在任何情況下都是不允許斷開的,也就是說零線不允許經過開關和保險絲。零線在電工學里用PEN表示,中性線用N表示,保護線(地線)用PE表示。我們生活中所用、通常所說的零線實際上在電工學里叫“中性線”。
    的頭像 發表于 12-22 03:42 ?9460次閱讀
    為什么中性線<b class='flag-5'>不允許</b>單獨斷開

    減速機為什么不允許有軸向竄動現象?

    減速機為什么不允許有軸向竄動現象? 減速機是一種用來改變輸入軸傳動力矩和轉速的裝置。作為機械設備的核心部件之一,減速機在各個行業中起到非常重要的作用,廣泛應用于機械傳動系統中。 在減速機
    的頭像 發表于 11-23 10:46 ?1056次閱讀

    電力系統不允許發生諧振的原因

    電力系統諧振是指在電力系統中,由于某些特定條件的滿足,導致系統內部的電感和電容元件相互配合,形成一種振蕩現象。諧振現象在電力系統中是不允許發生的,因為它會帶來一系列嚴重的問題和危害。以下是對電力系統
    的頭像 發表于 08-22 14:21 ?621次閱讀