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

正文內容

第10章設備管理(編輯修改稿)

2025-02-27 13:58 本頁面
 

【文章內容簡介】 if (major = = 0 ){ write_lock(chrdevs_lock)。for(major=MAX_CHRDEV1。major0。major){ if (chrdevs[major].fops= =NULL){ chrdevs[major].name=name。 chrdevs[major].fops=fops。 write_unlock(chrdevs_lock)。 return major。}}write_unlock(chrdevs_lock)。return EBUSY。}if(majorMAX_CHRDEV) return EINVAL。write_lock(chrdevs_lock)。if(chrdevs[major].fops chrdevs[major].fops!=fops){write_unlock(chrdevs_lock)。return EBUSY。}chrdevs[major].name=name。chrdevs[major].fops=fops。write_unlock(chrdevs_lock)。return 0。} 驅動程序編寫實例 為了更清楚地講述 Linux中設備驅動程序的編寫,加深讀者對啟動程序的了解。下面介紹一個簡單的設備驅動的實現過程。 由于基于特殊的硬件設備實現的驅動程序難度較大,而且不方便驗證,下面舉一個虛擬設備驅動程序的例子。 設備功能介紹 實現虛擬設備的寫入、讀出等操作。這個驅動程序并不是基于特定硬件設備的,實際上僅僅是對內存進行讀、寫操作。 當執(zhí)行寫入操作時,將會對特定的存儲空間進行寫入;當執(zhí)行讀出操作時,將會對該存儲空間進行數據的讀取;同時還可以利用 ioctl進行清除該存儲空間的操作。 這個 mydrv設備的實現文件是 ,其中的文件接口 flle_operations{}提供了mydrv_open、 mydrv_release、 mydrv_read、 mydrv_write、 mydrv_ioctl等函數。1. 函數 mydrv_read()的功能是從 mybuf[100]中讀取字符串,并傳遞給調用的進程。2. 函數 mydrv_write()的功能是將調用的進程傳入的字符串賦值給 mybuf,如果字符串的長度超過 100,則只取前 100個字符。3. 函數 mydrv_ioctl()中僅僅實現了一個控制功能:清除 mybuf存儲區(qū)。 具體實現 首先,要根據設備功能的需要,編寫file_operations結構中的操作函數。 其次,要向系統注冊該設備,包括字符設備的注冊, devfs節(jié)點的注冊與中斷響應函數的注冊。然后就可以利用對應的文件進行設備操控了。具體如下:1.源程序 include linux/ include linux/ include linux/ include linux/ include linux/ include asm/ include asm/ include linux/ include linux/ define MYDRV_CLS_IO( 39。c39。 ,0x01 ) //定義清存儲區(qū)命令字char mybuf[100]。 //存儲區(qū)域int mydrv_major = 99。 //主設備號devfs_handle_t dev_handle。 //保存設備文件系統的注冊句柄//第一步:編寫 file_operations函數ssize_t mydrv_read(struct file * filp, char * buf, size_t count,loff_t * f_pos)。 //函數聲明static ssize_t mydrv_write(struct file * filp,const char * buf,size_t count,loff_t * ppos)。static int mydrv_ioctl( struct inode * inode,struct file * file, unsigned int cmd, unsigned
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1