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

正文內(nèi)容

設(shè)備管理結(jié)構(gòu)及驅(qū)動(dòng)程序編寫實(shí)例(已改無錯(cuò)字)

2023-02-24 09:23:09 本頁面
  

【正文】 le *filp)。int mydrv_release(struct inode * inode, struct file * filp)。 //函數(shù)聲明 驅(qū)動(dòng)程序編寫實(shí)例: 具體實(shí)現(xiàn)struct file_operations mydrv_ops={ //設(shè)備函數(shù)接口 open: mydrv_open , //實(shí)現(xiàn)對(duì)設(shè)備的操作 read: mydrv_read, write: mydrv_write, ioctl: mydrv_ioctl,release: mydrv_release。}。// mydrv_read()將內(nèi)核空間的 mybuf中的字符串賦給用戶空間的 buf區(qū) 驅(qū)動(dòng)程序編寫實(shí)例: 具體實(shí)現(xiàn)ssize_t mydrv_read(struct file * filp, char * bur, size_t count,loff_t * f_pos)//filp:指向設(shè)備文件的指針; f_pos:偏移量int length = strlen(mybuf)。if(count 99) count = 99。 //忽略大于 100部分count = length * f_pos。 //計(jì)算字符個(gè)數(shù)的技巧 驅(qū)動(dòng)程序編寫實(shí)例: 具體實(shí)現(xiàn)if(copy_to_user(buf, mybuf, count) ) { //重內(nèi)核區(qū)復(fù)制到用戶區(qū) printk(error reading, copy_to_user\n”)。retum EFAULT。}*f_pos += count。 //下一個(gè)retum count。}// mydtv_write()將用戶空間的 buf字符串賦給內(nèi)核空間的 mybuf [ ]數(shù)組中 驅(qū)動(dòng)程序編寫實(shí)例: 具體實(shí)現(xiàn)static ssize_t mydrv_write(struct file * filp,const char * buf, size_t count,loff_t * ppos){int num。num=count100? count: 100。if(copy_from_user(mybuf, buf, num)) //mybuf?bufreturn EFAULT。printk(mydrv_write succeed! \ n”)。return num。} 驅(qū)動(dòng)程序編寫實(shí)例: 具體實(shí)現(xiàn)static int mydrv_ioctl( struct inode * inode,struct file * file, //如果傳人的命令字是 unsigned int cmd, unsigned long arg){ //MYDRVCLS則清除 mybuf數(shù)組內(nèi)容switch ( cmd ){ case MYDRV_CLS: mybuf[0] = 0x0。 return 0。 default: return EINVAL。 }}//打開 mydrv設(shè)備時(shí)調(diào)用 驅(qū)動(dòng)程序編寫實(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)。if(mydrv_num) return 1。 驅(qū)動(dòng)程序編寫實(shí)例: 具體實(shí)現(xiàn)if (dev = MAX_MYDRV_DEV)return ENODEV。filp f_ap = mydrv_ops。 //指向操作函數(shù)printk(“open success\n”)。MOD_INC_USE_COUNT。 //只是簡(jiǎn)單地加 1return 0。}//關(guān)閉 mydrv設(shè)備,這里只是將引用次數(shù)減 1int mydrv_release(struct inode * inode, struct file * filp){ MOD_DEC_USE_COUNT。 return 0。 } 驅(qū)動(dòng)程序編寫實(shí)例: 具體實(shí)現(xiàn)//第二步:向系統(tǒng)注冊(cè)該設(shè)備// module的安裝,采用兩種方式進(jìn)行了設(shè)備的注冊(cè)int init_module(void){int result。printk(“initing...\ n”)。result = devfs_register_chrdev
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1