- 論壇徽章:
- 0
|
各位前輩,本人大學(xué)生,剛剛?cè)腴T(mén)學(xué)習(xí)linux不久,有個(gè)問(wèn)題向大家請(qǐng)教.
現(xiàn)在有個(gè)作業(yè)任務(wù)是這樣的:在內(nèi)核的cfs進(jìn)程調(diào)度中,通過(guò)修改內(nèi)核代碼,在有新的進(jìn)程進(jìn)隊(duì)和出隊(duì)的時(shí)候,發(fā)出一個(gè)消息,然后在一個(gè)用戶空間的程序顯示出來(lái).
現(xiàn)在我處理的思路是這樣的:
sched_fair.h是用來(lái)處理進(jìn)程出隊(duì)入隊(duì)的,我在其中發(fā)現(xiàn)了這兩個(gè)函數(shù)
圖片2.png (56.18 KB, 下載次數(shù): 104)
下載附件
2014-04-08 18:39 上傳
圖片1.png (59.08 KB, 下載次數(shù): 121)
下載附件
2014-04-08 18:39 上傳
我認(rèn)為在這兩個(gè)函數(shù)中通過(guò)linux的signal機(jī)制將信號(hào)發(fā)送給特定的進(jìn)程就可以了,而且也是這么做的,如下是我修改的代碼.
圖片3.png (126.79 KB, 下載次數(shù): 112)
下載附件
2014-04-08 18:39 上傳
處理思路是這樣的,當(dāng)有進(jìn)程入隊(duì)或者出隊(duì)時(shí),先判斷進(jìn)程的名字是不是pslot(也就是用戶空間的程序的名字),然后如果是的話,就不處理,如果不是,這時(shí)候便利內(nèi)核中的進(jìn)程列表,找到名字為pslot的程序,給他發(fā)送一個(gè)signal.
但是好像沒(méi)有我想象的順利,重新編譯內(nèi)核并替換之后,只要我一運(yùn)行名為pslot的程序,系統(tǒng)就會(huì)死機(jī),情況就是死在那里什么操作都沒(méi)有用.之后我嘗試了另外幾種發(fā)送signal的方式,如sys_kill,也是同樣的情況.現(xiàn)在也不知道該怎么調(diào)試.
現(xiàn)在,請(qǐng)各位指點(diǎn)一下,到底問(wèn)題是出在哪,我沒(méi)什么經(jīng)驗(yàn),請(qǐng)各位不吝賜教.
|
|