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

正文內(nèi)容

第10章設(shè)備管理-powerpointpresenta(文件)

2025-02-21 13:58 上一頁面

下一頁面
 

【正文】 驅(qū)動程序編寫實(shí)例 為了更清楚地講述 Linux中設(shè)備驅(qū)動程序的編寫,加深讀者對啟動程序的了解。這個(gè)驅(qū)動程序并不是基于特定硬件設(shè)備的,實(shí)際上僅僅是對內(nèi)存進(jìn)行讀、寫操作。 驅(qū)動程序編寫實(shí)例: 首先,要根據(jù)設(shè)備功能的需要,編寫 file_operations結(jié)構(gòu)中的操作函數(shù)。c39。 //保存設(shè)備文件系統(tǒng)的注冊句柄//第一步:編寫 file_operations函數(shù) 驅(qū)動程序編寫實(shí)例: 具體實(shí)現(xiàn) ssize_t mydrv_read(struct file * filp, char * buf, size_t count,loff_t * f_pos)。int mydrv_release(struct inode * inode, struct file * filp)。if(count 99) count = 99。}*f_pos += count。if(copy_from_user(mybuf, buf, num)) //mybuf?bufreturn EFAULT。 return 0。 驅(qū)動程序編寫實(shí)例: 具體實(shí)現(xiàn)if (dev = MAX_MYDRV_DEV)return ENODEV。 //只是簡單地加 1return 0。printk(“initing...\ n”)。}dev_handle = devfs_register( NULL, “mydrv, DEVFS_FL_DEFAULT, 99,0,S_IFCHR, mydrv_ops, NULL)。printk(%s \ n, mybuf)。printk(exiting... \ n)。 驅(qū)動程序編寫實(shí)例: 具體實(shí)現(xiàn) 當(dāng)不再需要對設(shè)備進(jìn)行操作時(shí),可以采用下面的命令卸載模塊: [rootLinux/ dev]/sbin/rmmod mydrvinclude int main(){FILE * fp。3.設(shè)備的使用下面的小程序可以對任何文件進(jìn)行先寫后讀的操作: 驅(qū)動程序編寫實(shí)例: 具體實(shí)現(xiàn)if((fp = fopen(buf, wb)) = = NULL) //buf:文件名; wb:模式(只寫、二進(jìn)制){ printf(Could not opened! \ n)。 scanf(% s, buf)。 //由文件讀取一字符串 printf(the File content is: %s \ n,buf)。 當(dāng)然,也可以采用 cat命令得到 mydrv設(shè)備的輸出內(nèi)容。 練習(xí)題? 5個(gè)驅(qū)動程序的常用接口函數(shù)。 然后 ,說明了驅(qū)動程序運(yùn)作過程。 return 0。 return 2。}else printf(File open ok! \ n)。printf(Please input file name: )。 驅(qū)動程序編寫實(shí)例: 具體實(shí)現(xiàn) 下面的操作必須是以 root身份 進(jìn)行的(用命令 su轉(zhuǎn)換成 root身份):先執(zhí)行模塊的插入操作, [rootUnuxroot]/sbin/insmod 驅(qū)動程序編寫實(shí)例: 具體實(shí)現(xiàn) 如果設(shè)備文件系統(tǒng)已經(jīng)應(yīng)用起來的話,此時(shí)在設(shè)備文件系統(tǒng)掛接的目錄 (通常是/ dev)下 ,就可以找到 mydrv文件節(jié)點(diǎn)了。}// module的卸載,進(jìn)行設(shè)備的注銷 驅(qū)動程序編寫實(shí)例: 具體實(shí)現(xiàn)void cleanup_module(void){ devfs_unregister_chrdev(mydrv_major, “mydrv”)。strcpy(mybuf,Hello, please write anything ( length 100)to mydrv.”)。 驅(qū)動程序編寫實(shí)例: 具體實(shí)現(xiàn)if (result 0){printk(KERN_WARNING “mydrv: unable to get major %d \ n”, mydrv_major)。 return 0。 //指向操作函數(shù)printk(“open success\n”)。 }}//打開 mydrv設(shè)備時(shí)調(diào)用 驅(qū)動程序編寫實(shí)例: 具體實(shí)現(xiàn) define MAX_MYDRV_DEV 2int mydrv_open (struct inode * inode,struct file *filp){ //inede:設(shè)備文件節(jié)點(diǎn)unsigned int dev = MINOR(inode i_rdev)。return num。}// mydtv_write()將用戶空間的 buf字符串賦給內(nèi)核空間的 mybuf [ ]數(shù)組中 驅(qū)動程序編寫實(shí)例:
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1