中斷服務(wù)函數(shù)能不能帶形參和返回值菜枷?

概述

從本質(zhì)上來(lái)講苍糠,中斷是一種電信號(hào),當(dāng)設(shè)備有某種事件發(fā)生時(shí)啤誊,它就會(huì)產(chǎn)生中斷岳瞭,通過(guò)總線(xiàn)把電信號(hào)發(fā)送給中斷控制器。如果中斷的線(xiàn)是激活的蚊锹,中斷控制器就把電信號(hào)發(fā)送給處理器的某個(gè)特定引腳瞳筏。處理器于是立即停止自己正在做的事,跳到中斷處理程序的入口點(diǎn)枫耳,進(jìn)行中斷處理乏矾。


(1) 硬中斷

由與系統(tǒng)相連的外設(shè)(比如網(wǎng)卡、硬盤(pán))自動(dòng)產(chǎn)生的迁杨。主要是用來(lái)通知操作系統(tǒng)系統(tǒng)外設(shè)狀態(tài)的變化钻心。比如當(dāng)網(wǎng)卡收到數(shù)據(jù)包的時(shí)候,就會(huì)發(fā)出一個(gè)中斷铅协。我們通常所說(shuō)的中斷指的是硬中斷(hardirq)捷沸。

(2) 軟中斷

為了滿(mǎn)足實(shí)時(shí)系統(tǒng)的要求,中斷處理應(yīng)該是越快越好狐史。linux為了實(shí)現(xiàn)這個(gè)特點(diǎn)痒给,當(dāng)中斷發(fā)生的時(shí)候,硬中斷處理那些短時(shí)間就可以完成的工作骏全,而將那些處理事件比較長(zhǎng)的工作苍柏,放到中斷之后來(lái)完成,也就是軟中斷(softirq)來(lái)完成姜贡。

(3) 中斷嵌套

Linux下硬中斷是可以嵌套的试吁,但是沒(méi)有優(yōu)先級(jí)的概念,也就是說(shuō)任何一個(gè)新的中斷都可以打斷正在執(zhí)行的中斷楼咳,但同種中斷除外熄捍。軟中斷不能嵌套,但相同類(lèi)型的軟中斷可以在不同CPU上并行執(zhí)行母怜。

(4) 軟中斷指令

int是軟中斷指令余耽。

中斷向量表是中斷號(hào)和中斷處理函數(shù)地址的對(duì)應(yīng)表。

int n - 觸發(fā)軟中斷n苹熏。相應(yīng)的中斷處理函數(shù)的地址為:中斷向量表地址 + 4 * n碟贾。

(5)硬中斷和軟中斷的區(qū)別

軟中斷是執(zhí)行中斷指令產(chǎn)生的币喧,而硬中斷是由外設(shè)引發(fā)的。

硬中斷的中斷號(hào)是由中斷控制器提供的袱耽,軟中斷的中斷號(hào)由指令直接指出粱锐,無(wú)需使用中斷控制器。

硬中斷是可屏蔽的扛邑,軟中斷不可屏蔽怜浅。

硬中斷處理程序要確保它能快速地完成任務(wù),這樣程序執(zhí)行時(shí)才不會(huì)等待較長(zhǎng)時(shí)間蔬崩,稱(chēng)為上半部恶座。

軟中斷處理硬中斷未完成的工作,是一種推后執(zhí)行的機(jī)制沥阳,屬于下半部跨琳。

當(dāng)比如單片機(jī)這種沒(méi)有操作系統(tǒng)的,中斷處理函數(shù)不能有輸入?yún)?shù)也不能有函數(shù)返回桐罕。因?yàn)橹袛喽际切┯布詣?dòng)調(diào)用脉让,沒(méi)有程序去給他傳遞參數(shù),也沒(méi)有硬件去接收參數(shù)功炮。?那其它函數(shù)怎么傳參數(shù)給它呢溅潜?一般都是通過(guò)全局變量方式。不過(guò)為了避免中斷函數(shù)重入薪伏,我們可以在進(jìn)入中斷服務(wù)函數(shù)之后將中斷關(guān)閉滚澜,處理完后再開(kāi)中斷。

不過(guò)x86計(jì)算機(jī)的軟中斷和硬件中斷時(shí)可以有參數(shù)傳遞嫁怀,有專(zhuān)門(mén)程序去給它傳遞參數(shù)设捐。

(1) 注冊(cè)中斷處理函數(shù)

注冊(cè)中斷處理函數(shù):

/** ?* irq: 要分配的中斷號(hào) ?* handler: 要注冊(cè)的中斷處理函數(shù) ?* flags: 標(biāo)志(一般為0) ?* name: 設(shè)備名(dev->name) ?* dev: 設(shè)備(struct net_device *dev),作為中斷處理函數(shù)的參數(shù) ?* 成功返回0 ?*/ int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,? ? ? const char *name, void *dev);

中斷處理函數(shù)本身:

typedefirqreturn_t?(*irq_handler_t)?(int,void*);

/**

*?enum?irqreturn

*?@IRQ_NONE:?interrupt?was?not?from?this?device

*?@IRQ_HANDLED:?interrupt?was?handled?by?this?device

*?@IRQ_WAKE_THREAD:?handler?requests?to?wake?the?handler?thread

*/

enumirqreturn?{

IRQ_NONE,

IRQ_HANDLED,

IRQ_WAKE_THREAD,

};

typedefenumirqreturn?irqreturn_t;

#define?IRQ_RETVAL(x)?((x)?!=?IRQ_NONE)

所以中斷服務(wù)函數(shù)帶不帶形參和返回值主要是看中斷是發(fā)生在裸機(jī)上還是實(shí)時(shí)系統(tǒng)中塘淑。

http://blog.csdn.net/xy010902100449/article/details/49247527

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萝招,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子存捺,更是在濱河造成了極大的恐慌槐沼,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件召噩,死亡現(xiàn)場(chǎng)離奇詭異母赵,居然都是意外死亡逸爵,警方通過(guò)查閱死者的電腦和手機(jī)具滴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)师倔,“玉大人构韵,你說(shuō)我怎么就攤上這事。” “怎么了疲恢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵凶朗,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我显拳,道長(zhǎng)棚愤,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任杂数,我火速辦了婚禮宛畦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揍移。我一直安慰自己次和,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布那伐。 她就那樣靜靜地躺著踏施,像睡著了一般。 火紅的嫁衣襯著肌膚如雪罕邀。 梳的紋絲不亂的頭發(fā)上畅形,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音诉探,去河邊找鬼束亏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛阵具,可吹牛的內(nèi)容都是我干的碍遍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼阳液,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼怕敬!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起帘皿,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤东跪,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后鹰溜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體虽填,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年曹动,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斋日。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡墓陈,死狀恐怖恶守,靈堂內(nèi)的尸體忽然破棺而出第献,到底是詐尸還是另有隱情,我是刑警寧澤兔港,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布庸毫,位于F島的核電站,受9級(jí)特大地震影響衫樊,放射性物質(zhì)發(fā)生泄漏飒赃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一科侈、第九天 我趴在偏房一處隱蔽的房頂上張望盒揉。 院中可真熱鬧,春花似錦兑徘、人聲如沸刚盈。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)藕漱。三九已至,卻和暖如春崭闲,著一層夾襖步出監(jiān)牢的瞬間肋联,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工刁俭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留橄仍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓牍戚,卻偏偏與公主長(zhǎng)得像侮繁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子如孝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容