freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

操作系統(tǒng)課件_設(shè)備管理-資料下載頁(yè)

2025-01-22 02:06本頁(yè)面
  

【正文】 模塊,同時(shí)提供其它一些信息,比如其它模塊是否在使用另一個(gè)模塊。lsmod (等同于 cat /proc/modules)Module Size Used by Not taintedradeon 115364 1 agpgart 56664 3n insmod命令: 插入模塊,但不會(huì)自動(dòng)解決依存關(guān)系,所以一般加載內(nèi)核模塊時(shí)使用的命令為 modprobe。使用 modprobe命令,可以智能插入模塊,它可以根據(jù)模塊間依存關(guān)系,以及 /etc/文件中的內(nèi)容智能插入模塊。n modinfo命令: 用來(lái)查看模塊信息,如 modinfo d cdrom。n rmmod命令: 如果后面有 autoclean,則該模塊可以被 rmmod a命令自動(dòng)清除。 rmmod a命令會(huì)將目前有 autoclean的模塊卸載,如果這時(shí)候某個(gè)模塊未被使用,則將該模塊標(biāo)記為 autoclean。* 77設(shè)備驅(qū)動(dòng)程序與內(nèi)核的接口是 file_operations結(jié)構(gòu),它通過(guò)文件系統(tǒng)為用戶(hù)進(jìn)程和內(nèi)核其他部分提供統(tǒng)一的接口,將對(duì)設(shè)備的操作通過(guò)文件系統(tǒng)映射到具體的設(shè)備驅(qū)動(dòng)程序。216。 寫(xiě)驅(qū)動(dòng)程序的任務(wù)之一就是完成file_operations中的函數(shù)指針。* 78file_operations提供的設(shè)備操作函數(shù)因設(shè)備的不同而有所不同,主要的操作有: 216。 *open: 打開(kāi)設(shè)備準(zhǔn)備進(jìn)行 I/O操作。返回 0表示打開(kāi)成功,返回負(fù)數(shù)表示失敗。如果驅(qū)動(dòng)程序沒(méi)有提供 open入口,則只要/dev/driver文件存在就認(rèn)為打開(kāi)成功。216。 *read: 讀,參數(shù) buf為存放讀取結(jié)果的緩沖區(qū), count為所要讀取的數(shù)據(jù)長(zhǎng)度。返回值為負(fù)表示讀取操作發(fā)生錯(cuò)誤;否則,返回實(shí)際讀取的字節(jié)數(shù)。對(duì)于字符型,要求讀取的字節(jié)數(shù)和返回的實(shí)際讀取字節(jié)數(shù)都必須是 inodei_blksize的倍數(shù)。216。 *write: 寫(xiě),與 read類(lèi)似。216。 *lseek: 定位讀 /寫(xiě)位置。216。 *ioctl: 進(jìn)行讀、寫(xiě)以外的其他控制操作。216。 *release: 即 close操作。 * 79 linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā) 設(shè)備驅(qū)動(dòng)程序和應(yīng)用程序區(qū)別如下:216。 應(yīng)用程序 一般有一個(gè) main 函數(shù),從頭到尾執(zhí)行一個(gè)任務(wù);216。 驅(qū)動(dòng)程序 沒(méi)有 main函數(shù),通過(guò)使用宏 module_init(初始化函數(shù) )。 將初始化函數(shù)加入內(nèi)核全局初始化函數(shù)列表中,在內(nèi)核初始化時(shí)執(zhí)行驅(qū)動(dòng)的初始化函數(shù),從而完成驅(qū)動(dòng)的初始化和注冊(cè),之后驅(qū)動(dòng)便停止等待被應(yīng)用軟件調(diào)用。驅(qū)動(dòng)程序中有一個(gè)宏 moudule_exit(退出處理函數(shù) )注冊(cè)退出處理函數(shù)。它在驅(qū)動(dòng)退出時(shí)被調(diào)用。 * 801 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)流程 216。 編寫(xiě)驅(qū)動(dòng)源碼216。 編寫(xiě) Makefile文件216。 編譯驅(qū)動(dòng)模塊216。 加載驅(qū)動(dòng)模塊216。 驅(qū)動(dòng)程序框架* 81//includelinux/includelinux/includelinux/staticint__inithello_init(void){printk(KERN_ALERTHelloWorld! \n)。return0。}staticvoid__exithello_exit(void){printk(KERN_ALERTGoodbyeWorld! \n)。}module_init(hello_init)。module_exit(hello_exit)。MODULE_LICENSE(GPL)。編寫(xiě)驅(qū)動(dòng)源碼216。 module_init(初始化函數(shù) ):在內(nèi)核初始化時(shí)執(zhí)行驅(qū)動(dòng)的初始化函數(shù),完成驅(qū)動(dòng)的初始化和注冊(cè),之后驅(qū)動(dòng)便停止等待被調(diào)用。216。 moudule_exit(退出處理函數(shù) ),在驅(qū)動(dòng)退出時(shí)被調(diào)用。* 82驅(qū)動(dòng)程序源代碼結(jié)構(gòu)分析n 頭文件:大多的 Linux驅(qū)動(dòng)程序需要包含三個(gè)頭文件。252。 include linux/:定義了驅(qū)動(dòng)的初始化和退出相關(guān)的函數(shù)252。 include linux/:定義了經(jīng)常用到的函數(shù)原型及宏定義252。 include linux/:定義了內(nèi)核模塊相關(guān)的函數(shù)、變量及宏。* 83216。 初始化:任何一個(gè)驅(qū)動(dòng)都去需要提供一個(gè)初始化函數(shù),當(dāng)驅(qū)動(dòng)加載到內(nèi)核中時(shí),這個(gè)初始化函數(shù)就會(huì)被自動(dòng)執(zhí)行,初始化的函數(shù)原型定義為: typedef int (*initcall_t)(void)。staticint__inithello_init(void){printk(KERN_ALERTHelloWorld! n)。return0。}module_init(hello_init)。216。 驅(qū)動(dòng)程序是通過(guò)module_init宏來(lái)聲明初始化函數(shù)的* 84n 卸載: 如果驅(qū)動(dòng)程序編譯成模塊(動(dòng)態(tài)加載)模式,那么它需要一個(gè)清理函數(shù)。當(dāng)移除一個(gè)內(nèi)核模塊時(shí)這個(gè)函數(shù)被調(diào)用執(zhí)行清理工作。清理函數(shù)的函數(shù)原型定義為: typedef void (*exitcall_t)(void)。216。 驅(qū)動(dòng)程序是通過(guò)module_exit宏來(lái)聲明清理函數(shù)的:staticvoid__exithello_exit(void){printk(KERN_ALERTGoodbyeWorld! n)。}module_exit(hello_exit)。n 版權(quán)信息: Linux內(nèi)核是按照 GPL發(fā)布的,同樣 Linux的驅(qū)動(dòng)程序也要提供版權(quán)信息,否則當(dāng)加載到內(nèi)核中是系統(tǒng)會(huì)給出警告信息。 Hello World例子中的版權(quán)信息是 GPL。252。 MODULE_LICENSE(GPL)。* 85Makefileobjm:=KDIR=/usr/src/all:$(MAKE)C$(KDIR)M=$(PWD).PHONY:cleanclean:rmf*.*.*.ko*.o*.tmp_versions針對(duì)以上源碼寫(xiě)一個(gè) Makefile文件用來(lái)編譯, Makefile和 在同一個(gè)目錄下。Makefile文件的內(nèi)容可以簡(jiǎn)單編寫(xiě)如下內(nèi)容:編寫(xiě) Makefile文件* 86make:Enteringdirectory`/usr/src/39。CC[M]/root/drvhello/Buildingmodules,stage2.MODPOST1modulesCC/root/drvhello/LD[M]/root/drvhello/make:Leavingdirectory`/usr/src/39。編譯驅(qū)動(dòng)模塊在 Makefile所在目錄下執(zhí)行 make 即可,編譯后在當(dāng)前目錄生成 編譯過(guò)程經(jīng)歷了這樣的步驟:先進(jìn)入 linux內(nèi)核所在的目錄,并編譯出,然后創(chuàng)建模塊,運(yùn)行 MODPOST生成臨時(shí)的 件,而后根據(jù)此文件編譯出 ,之后連接 ,最后離開(kāi) linux內(nèi)核所在的目錄。* 87使用 ls命令查看當(dāng)前目錄可以看到如下信息。[rootJLUZHdrvhello]lsMakefile[rootJLUZHdrvhello]* 88[rootJLUZHdrvhello]insmod[rootJLUZHdrvhello]lsmodModuleSizeUsedbyhello11320…[rootJLUZHdrvhello]cat/var/log/messages…Jul2109:02:53JLUZHkernel:HelloWorld!rmmod//卸載模塊加載驅(qū)動(dòng)模塊編譯中可以看到有一個(gè) ,這就是模塊,下一步加載該模塊。使用 insmod來(lái)加載該驅(qū)動(dòng)模塊,并且使用相關(guān)的命令來(lái)驗(yàn)證或查看該驅(qū)動(dòng)模塊運(yùn)行的信息。其操作如下: END OF THIS CHAPTER
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1