九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

第6章 模塊編程實驗

上傳人:fgh****35 文檔編號:247447167 上傳時間:2024-10-18 格式:PPT 頁數(shù):26 大?。?62.50KB
收藏 版權(quán)申訴 舉報 下載
第6章 模塊編程實驗_第1頁
第1頁 / 共26頁
第6章 模塊編程實驗_第2頁
第2頁 / 共26頁
第6章 模塊編程實驗_第3頁
第3頁 / 共26頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《第6章 模塊編程實驗》由會員分享,可在線閱讀,更多相關《第6章 模塊編程實驗(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,模塊編程實驗,_,成都信息工程學院 徐虹,*,第6章 模塊編程實驗,.,/,期望該模塊所能實現(xiàn)的一些功能函數(shù),如,open(),、,release(),、,write,(),、,6.1,實驗目的,6.2 準備知識,6.2.1 模塊的組織結(jié)構(gòu),/ 其他,header,信息,int,init_module(),#,include ,模塊編程實驗,_,成都信息工程學院 徐虹,.,/,聲明是一個模塊,. /,加載時,初始化模塊的編碼,#,include /,說明是個內(nèi)核功能,/,read()、,ioctl,(),等函數(shù)

2、,.,void cleanup_module(),. /,卸載時,注銷模塊的編碼,模塊編程實驗,_,成都信息工程學院 徐虹,6.2.2 模塊的編譯,#,gcc,O2 g Wall DMODULE D_KERNEL_c filename.c,/ filename.c,為自己編寫的模塊程序源代碼文件,6.2.3 模塊的加載,6.2.4 模塊的卸載,6.2.5 模塊鏈接到內(nèi)核的示意圖,6.2.6 模塊程序中管理模塊的幾個文件操作,模塊編程實驗,_,成都信息工程學院 徐虹,int,(,*,lseek,)(),int,(,*,read)(),int,(,*,write)(),int,(,*,readdi

3、r,)(),int,(,*,select)(),int,(,*,ioctl,)(),int,(,*,mmap,)(),int,(,*,open)(),void (,*,release)(),int,(*,fsync,)(),int,(*,fasync,)(),int,(*check_media_change)(),int,(*revalidate)(),模塊編程實驗,_,成都信息工程學院 徐虹,圖,6-1,模塊鏈接到內(nèi)核的示意圖,模塊編程實驗,_,成都信息工程學院 徐虹,NULL, /,modulename,_,lseek,改變模塊結(jié)構(gòu)中的操作位置,modulename,_read,modul

4、ename,_write,NULL, /,modulename,_,readdir,讀取某個子目錄中的內(nèi)容,struct,file_operations,modulename,_fops =,NULL, /,modulename,_select,允許應用程序響應來自模塊的事件,模塊編程實驗,_,成都信息工程學院 徐虹,NULL, /,modulename,_,ioctl,應用程序通過,I/O,控制系統(tǒng)的系統(tǒng)調(diào),/ 用來控制模塊行為,NULL, /,modulename,_,mmap,模塊地址空間到用戶地址空間的映射,modulename,_open,modulename,_release,NU

5、LL, /,modulename,_,fsync,同步內(nèi)存與磁盤上的數(shù)據(jù)狀態(tài),輸,模塊編程實驗,_,成都信息工程學院 徐虹,/ 出緩沖區(qū)里尚未寫到磁盤的數(shù)據(jù)寫出去,NULL, /,modulename,_,fasync,改變模塊行為,NULL, /,modulename,_check_media_change,檢查自上次操作后,/ 介質(zhì)(軟盤和,CD-ROM),是否更換,NULL /,modulename,_revalidate,若更換了介質(zhì),則更新信息,模塊編程實驗,_,成都信息工程學院 徐虹,6.3 實驗內(nèi)容,6.3.1 編寫一個簡單的內(nèi)核模塊,6.3.2 模塊加載前后的比較,6.3.3

6、向模塊中再添加一些新函數(shù),6.4 實驗指導,6.4.1 一個簡單的內(nèi)核模塊,模塊編程實驗,_,成都信息工程學院 徐虹,#,include /,在內(nèi)核模塊中共享,#,include /,一個模塊,/ 處理,CONFIG_MODVERSIONS,#if CONFIG_MODVERSIONS = 1,#define MODVERSIONS,#include ,#,endif,int,init_module() /,初始化模塊,模塊編程實驗,_,成都信息工程學院 徐虹,printk,(Hello! This is a testing module! n);,return 0;,void cleanup

7、_module() /,取消,init_module(),函數(shù)所做的打印功能操作,printk,(Sorry! The testing module is unloading now! n);,模塊編程實驗,_,成都信息工程學院 徐虹,root,linux,/#,gcc,O2,Wall,DMODULE,D_KERNEL_ c,testmodule,.c,root,linux,/#,ls,s /,在當前目錄下查看生成的目標文件,testmodule,.o,root,linux,/#,insmod,f,testmodule,.o,Hello! This is a testing module!,模

8、塊編程實驗,_,成都信息工程學院 徐虹,root,linux,/#,rmmod testmodule,Sorry! The testing module is unloading now!,6.4.2 模塊加載前后的比較,#,include /,用戶空間的標準,I/O,出頭文件,void GetCr3(),模塊編程實驗,_,成都信息工程學院 徐虹,int iValue,;,_ _,asm,_ _volatile_ _(,movl,%cr3,%0: =r,(a);,printf,(,“,the value in cr3 is: %d,”,a); /,用戶空間的標準輸出函數(shù),int,main(),

9、模塊編程實驗,_,成都信息工程學院 徐虹,GetCr3();,return 0;,#,include ,int,init_module(),int iValue,;,_ _,asm,_ _volatile_(,模塊編程實驗,_,成都信息工程學院 徐虹,movl,%cr3,%0: =r(,iValue,);,printf,(cr3:%d,iValue,);,return 0;,void cleanup_module(void),printk,(uninstall GetCr3! n);,模塊編程實驗,_,成都信息工程學院 徐虹,DFLAGS=D_KERNEL_DMODULE,CFLAGS=O2,

10、g,Wall,Wstrict,-prototypes,pipe,l/user/include/,linux,/,gcc,c GetCr3.c $(DFLAGS) $(CFLAGS),o GetCr3.o,clean:,rm,f,*,.o,GetCr3.o: GetCr3.c,模塊編程實驗,_,成都信息工程學院 徐虹,root,linuxserver,root# /,sbin,/,insmod,GetCr3.o,Cr3:234320012 /,這個數(shù)值有可能不一樣,root,linuxserver,root# /,sbin,/,rmmod,GetCr3,Uninstall GetCr3!,模塊編

11、程實驗,_,成都信息工程學院 徐虹,6.4.3 向模塊中添加新函數(shù),int,open(,struct inode,*,inode,struct,file,*,filp,) ,MOD_INC_USE_COUNT; /,增加該模塊的用戶數(shù)目,printk,(This module is in open!n);,return 0;,模塊編程實驗,_,成都信息工程學院 徐虹,void release(,struct inode,*,inode,struct,file*,filp,) ,MOD_DEC_USE_COUNT; /,該模塊的用戶數(shù)目減1,printk,(This module is in r

12、elease!n);,return 0;,#,ifdef,DEBUG,模塊編程實驗,_,成都信息工程學院 徐虹,printk,(release(%p,%p)n,inode,filp,);,#,endif,int,read(,struct inode,*,inode,struct,file*,filp,char*,buf,int,count) ,int,leave;,if(verify_area(VERIFY_WRITE,buf,count) = DEFAULT),return DEFAULT;,for(leave=count;leave0;leave -) ,模塊編程實驗,_,成都信息工程學院

13、 徐虹,_ _put_user(1,buf,1);,buf,+;,return count;,Int,write(,struct inode,*,inode,struct,file,*,filp,const char,*,buf,int,count) ,return count;,模塊編程實驗,_,成都信息工程學院 徐虹,6.4.4 模塊的測試,#,mknod,/dev/,moduledev,c major minor,root,linux,/#cat /proc/modules |,awk,$2=,moduledev, print$1,模塊編程實驗,_,成都信息工程學院 徐虹,#,inclu

14、de ,#include ,#include ,#include ,main ( ) ,int,i,testmoduledev,;,char,buf,10;,testmoduledev,=open(/dev/,moduledev,O_RDWR);,if(,testmoduledev,= 1),模塊編程實驗,_,成都信息工程學院 徐虹,printf,(Cant open the file! n);,exit(0);,read(,testmoduledev,buf,10);,for(i=0;i10;i+),printf,(%dn,buf,i,);,close(,testmoduledev,);,return 0;,模塊編程實驗,_,成都信息工程學院 徐虹,模塊編程實驗,_,成都信息工程學院 徐虹,

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!