一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

Linux為什么中斷不允許休眠

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:Jasonangel ? 2023-09-27 17:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

1、假如中斷上下文中調(diào)用 schedule ,此時獲取的 struct thread info 數(shù)據(jù)結(jié)構(gòu)是發(fā)生中斷時該進程棧信息,而不是中斷上下文調(diào)用 schedule 時任何信息。這就導(dǎo)致再也無法返回中斷上下文中調(diào)用 schedule 的地方。

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

一般進入中斷后,需要關(guān)中斷,也會關(guān)搶占,同時注意不可以調(diào)用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有一套復(fù)雜的機制來處理,你可以通過command line參數(shù)(noirqdebug)來控制開關(guān)該功能。

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

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

相關(guān)的控制數(shù)據(jù)在中斷描述符中,如下:

structirq_desc{

……

unsignedintirq_count;--------記錄發(fā)生的中斷的次數(shù),每100,000則回滾

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

unsignedintirqs_unhandled;------沒有處理的次數(shù)

……

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11083

    瀏覽量

    217190
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11512

    瀏覽量

    213912
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    905

    瀏覽量

    42828
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    為保醫(yī)療質(zhì)量不允許開展互聯(lián)網(wǎng)醫(yī)療診治?

    互聯(lián)網(wǎng)時代,很多人都已經(jīng)習(xí)慣了通過網(wǎng)絡(luò)解決很多問題,包括看病找醫(yī)生。在線輔助問診是否合法?對此,國家衛(wèi)計委新聞發(fā)言人宋樹立表示:互聯(lián)網(wǎng)上涉及醫(yī)學(xué)診斷治療是不允許開展的,只能做健康方面的咨詢。
    發(fā)表于 04-13 09:46 ?1203次閱讀

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

    “tc1.3” TriCore? 不允許使用矢量表編號
    發(fā)表于 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版本
    發(fā)表于 10-10 11:48

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

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

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

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

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

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

    FreeRTOS的某些內(nèi)容是不允許MDMA讀取內(nèi)存嗎?

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

    STM32H7時鐘為什么不允許調(diào)整?

    時鐘不允許調(diào)整。通常它不應(yīng)該發(fā)出警告。
    發(fā)表于 12-14 06:52

    TTL門電路為什么輸出端不允許并聯(lián)相接呢?

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

    不允許32位傳輸?shù)膇.MX 8是否有限制?

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

    網(wǎng)絡(luò)電視不允許直播世界杯?

    2018世界杯比賽不允許在互聯(lián)網(wǎng)電視平臺上進行賽事的直播和延時播出,否則都屬于違規(guī),只能在賽事結(jié)束后提供比賽點播服務(wù)。
    的頭像 發(fā)表于 06-08 09:44 ?5578次閱讀

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

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

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

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

    減速機為什么不允許有軸向竄動現(xiàn)象?

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

    電力系統(tǒng)不允許發(fā)生諧振的原因

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