試驗(yàn)3_內(nèi)核模塊_試驗(yàn)報(bào)告_第1頁
試驗(yàn)3_內(nèi)核模塊_試驗(yàn)報(bào)告_第2頁
試驗(yàn)3_內(nèi)核模塊_試驗(yàn)報(bào)告_第3頁
試驗(yàn)3_內(nèi)核模塊_試驗(yàn)報(bào)告_第4頁
試驗(yàn)3_內(nèi)核模塊_試驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、內(nèi)核模塊 實(shí)驗(yàn)報(bào)告題目:內(nèi)核模塊實(shí)驗(yàn)1、實(shí)驗(yàn)?zāi)康哪K是Linux系統(tǒng)的一種特有機(jī)制,可用以動(dòng)態(tài)擴(kuò)展操作系統(tǒng)內(nèi)核功能。 編寫實(shí) 現(xiàn)某些特定功能的模塊,將其作為內(nèi)核的一部分在管態(tài)下運(yùn)行。 本實(shí)驗(yàn)通過內(nèi)核 模塊編程在/porc文件系統(tǒng)中實(shí)現(xiàn)系統(tǒng)時(shí)鐘的讀操作接口。2、實(shí)驗(yàn)內(nèi)容設(shè)計(jì)并構(gòu)建一個(gè)在/proc文件系統(tǒng)中的內(nèi)核模塊clock,支持readfl作,read(超 回值為一字符串,其中包塊一個(gè)空格分開的兩個(gè)子用,分別代表 xtime.tv_sec和 xtime.tv_usec。3、實(shí)驗(yàn)原理Linux模塊是一些可以作為獨(dú)立程序來編譯的函數(shù)和數(shù)據(jù)類型的集合。在裝 載這些模塊時(shí),將它的代碼鏈接到內(nèi)核中。Li

2、nux模塊可以在內(nèi)核啟動(dòng)時(shí)裝載,也可以在內(nèi)核運(yùn)行的過程中裝載。如果在模塊裝載之前就調(diào)用了動(dòng)態(tài)模塊的一個(gè) 函數(shù),那么這次調(diào)用將會(huì)失敗。如果這個(gè)模塊已被加載,那么內(nèi)核就可以使用系 統(tǒng)調(diào)用,并將其傳遞到模塊中的相應(yīng)函數(shù)。4、實(shí)驗(yàn)步驟編寫內(nèi)核模塊文件中主要包含 init_module(), cleanup_module(), proc_read_clock()三個(gè)函數(shù)。 其中init_module(), cleanup_module()負(fù)責(zé)將模塊從系統(tǒng)中力口載或卸載, 以及增加 或刪除模塊在/proc中的入口。 read_func()負(fù)責(zé)產(chǎn)生/proc/clock被讀時(shí)的動(dòng)作。內(nèi)核編譯部分過程:1L

3、a*iv)Ct arch/ asK/k-emeV all JJ4. iC arcli/KSEks-mfil / aspfLi o -DC也 rc 府“曲 gGC白N為片/g|7*1,網(wǎng)譏門的.nOC四Ei/厘$a. CC flixti/icac/lio-rn&L/aCCaCC-/1|愚汴軻厘1/1.(1的用1!0CC.FC 由/*. E#i:1y.i.0OZarcn/K3Slt&i f USZ5J ,0CCAKfl/ riK/hAfrMl/H.l ronrau,B1 bc_ *CCarch/Hft-/limGl/if r mrr a TOC o 1-5 h z 伐:口CCfit .Eh/jfJ

4、tfhEiTsel f 興 i-pOCtnsh/nM/fcrrwW pa rcti/kSG, M q ecI F . r dc口cc.此島/注7皿01,01九4CC arcn/ $6/k#nwl4LKh/e*1 FrI E 個(gè)CC貨mi/幽FUnwlf仙電CCarch/i/hJtmAL/itap, 口CdEh/fCtftreh/wW/hrTwl./*i KT w u. earcl-i/K3C/&ml /.工 pL/bocn, 0CtarcH/d/h.ml/Mpl/ftlp c嗎d 此 r/Ef 禺多 rmlFNpdi叫。上4.。&arEti/*M/ksiroVcljiXcTtat-Wansn/

5、kk/MowI f c pi /bull 11x0CCaneJ/K9t/k*m*L/ 邛ix!, a111加華 Mhi-E) llriv)*上t)苒*t)加卬UD 1/5. 43f6jpLn. 0fl/prK./ wh jwm4 4CEfspraz/lriDdfi,aOCfi/p iw/rgt, 4T*0ro ,巾羊生1 =5 WEI; J ULkrlJE : VCCfu iprac fa rrayBgCC旭 rocJPc1n 口Bfa/prawT.flGZTs ”.ee paLn忖 口CCfa/ipiw /diHlc wai *CCTftjprcw /irarrupTf.Fff/pnx/li

6、B*d*Rrgi CCfT/prgc/BHmi.niD, hGf/prcM /stat, CCffprXhT/uipfLft*fv/nx/verufln. v 1/prM/icrftirqi-flHfsifprac,naiEa; ih 口 dCC也依血,由-IF,CCfsgrg /pmc s舊ctL f wfp rnc / p FTC_pst - -dfv/pr HYPERLINK file:/knrf.fi /knrf.fiCJZfiifcpra juETr4gH修和ECjhEgCCiSRE五,pipSEUOf*/pra/p,cLDfsrprac /buLl E- 4n g恒/MM rt/L

7、nMH, WgZ飆44曲f明 口LOe,pfEe- v2TfiCrlt#扁1ML =CtTfiMmC W&|gt ,a過程持續(xù)較長(zhǎng)時(shí)間.編譯內(nèi)核模塊Makefile文件MakefileCC= gccMODCFLAGS := -Wall -D_KERNEL_ -DMODULE -DLINUXclock.o :clock.c /usr/include/linux/version.h$(CC) $(MODCFLAGS) -c clock.cecho insmod clock.o to turn it onecho rmmod clock to turn ig offecho編譯完成之后生成clock

8、.o模塊文件。注:此參考makefile文件包含錯(cuò)誤,于是從網(wǎng)上尋找相關(guān)教程自行修改得到合適 的Makefile文件內(nèi)核模塊源代碼clock.c#define MODULE#define MODULE_VERSION1.0”#define MODULE_NAMEclock” #include #include #include int proc_read_clock(char* page, char* start, off_t off,int count,int* eof,void* data)一一一int len;struct timeval xtime;do_gettimeofday(&x

9、time);len = sprintf(page,%d %dn,xtime.tv_sec,xtime.tv_usec);printk(clock: read_func()n);return len;/ proc_dir_entry 數(shù)據(jù)結(jié)構(gòu)struct proc_dir_entry* proc_my_clock;int init_module().printk(clock: init_module()n);my_clock=create_proc_read_entry(clock,0,&proc_root, proc_read_clock, 0); printk(KERN_INFO %s %s

10、 has initialized.nMODULE_NAME,MODULE_VERSION);return 0;void cleanup_module()printk(clock: cleanup_module()n);remove_proc_entry(proc_my_clock-name, &proc_root);printk(KERN_INFO %s %s has removed.n, MODULE_NAME,MODULE_VERSION);MODULE_DESCRIPTION( clock module for gettimeofday of proc.);EXPORT_NO_SYMBO

11、LS;工餐4 卜 Kifp.上fniMI支事吐色盛電卻用ZlT)至桎0)L q打開 坳 C 二二 Q QWrtqxtfdatlns MtDJLE.如He110rdeTire ELE二飛1盟小flraclimfe- -J.nwM/ktrTwl iH-finclijda:fsIll pro:,匕.科 c2f W cCTjrrt fcirt1, 8孔21dls dat-a) (int 15:mWwcf tli*Miiil. Hi”; dointjvb| ;Iw* = 中pag*, Jrtlno- .tw_sw ,r it Jrla. Tvjlwc 51 ;prLnthCclcch.;1M

12、fm C ro-tarn la-ri;!/ p rD._dlr_artnK_4iT_s*rtry* 廬leek;nt irdLt nodula |i( prirrthCc 1 co 1-1111;clw,QI;PFlHtk.|KEFH KF 狂,5res 3H1E IqlgJWl., hT r眸JWte:秋 tUJE_MW t 曲I : frrnm 1;voLd 門meo e* *牛位鹿口/* ttM a加載內(nèi)核模塊在系統(tǒng)root用戶下運(yùn)行用戶態(tài)模塊命令裝載內(nèi)核模塊#insmod clock.o測(cè)試測(cè)試源代碼gettime.c#include #include #include int mai

13、n(void)(struct timeval getSystemTime;char procClockTime256;int infile,len;gettimeofday(&getSystemTime,NULL);infile = open(/proc/clock,O_RDONLY);len = read(infile,procClockTime,256);close(infile);procClockTimelen = 0;printf(SystemTime is %d %dnProcClockTime is %sn,getSystemTime.tv_sec ,getSystemTime.

14、tv_usec,procClockTime);sleep(1);,hrf.Tcnil.hcFlilt !U_E:Hdri 口 ccJui priii:nDckTli*13S6 j.get tlngicifdji IoaTxffl -H.LL) j5/譏 epl( a7fl TJC/CloW ,C_REWLTJ ;Ion - rd| inf ila rocCl-eK kT ina,3S5-|i ;ClMClATlHI prwCl/M kru*lfln l - W :Is td -nProcCL ack I iiw is ,is -ia.sri I i.ria. tv .(! trxtrtll IBs t uxl pEi-OcL ach I irJi ;SlWdlf fl :程序測(cè)試輸出結(jié)果為o小聞單削w 曲留甘 口小二 TS總杏RUft03,甘鼻毛中業(yè)盛史醫(yī),府里普UTETLk,一檔/口1 加IrElydv -*fcrYtl .hJi |. ii ij. *diKrHald叨冉町文律共射破索31W1ZJM 曰工匹感SI文件交氧提注1日W日町用立型:391言眄月7日0 13文4世ZHS*3fi7Hoia寶牛國201斑1月B法mIE戲T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論