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

正文內(nèi)容

word版可編輯-linux字符設(shè)備驅(qū)動(dòng)課程設(shè)計(jì)報(bào)告精心整理docxdocx(完整版)

  

【正文】 LL_IOCTQSET _IO(SCULL_IOC_MAGIC, 4)define SCULL_IOCGQUANTUM _IOR(SCULL_IOC_MAGIC, 5, int)define SCULL_IOCGQSET _IOR(SCULL_IOC_MAGIC, 6, int)define SCULL_IOCUANTUM _IO(SCULL_IOC_MAGIC, 7)define SCULL_IOCSET _IO(SCULL_IOC_MAGIC, 8)define SCULL_IOCXQUANTUM _IOWR(SCULL_IOC_MAGIC, 9, int)define SCULL_IOCXQSET _IOWR(SCULL_IOC_MAGIC,10, int)define SCULL_IOCHQUANTUM _IO(SCULL_IOC_MAGIC, 11)define SCULL_IOCHQSET _IO(SCULL_IOC_MAGIC, 12)define SCULL_IOC_MAXNR 14int main(){ int testdev。 /*注銷設(shè)備*/ kfree(ly_devp)。 ly_devp[i].data = kmalloc(MYDEV_SIZE, GFP_KERNEL)。cdev, MKDEV(ly_major, 0), MYDEV_NR_DEVS)。 } if (result 0) return result。}/*文件操作結(jié)構(gòu)體*/static const struct file_operations ly_fops ={ .owner = THIS_MODULE, .llseek = ly_llseek, .read = ly_read, .write = ly_write, .open = ly_open, .release = ly_release, .unlocked_ioctl = ioctl,}。 break。 break。case SCULL_IOCTQUANTUM: /* Tell: arg is the value */ printk(SCULL_IOCTQUANTUM + %lx,arg)。 printk(KERN_INFO written %d bytes(s) from %lx\n, count, p)。 unsigned int count = size。 /*獲得設(shè)備結(jié)構(gòu)體指針*/ /*判斷讀位置是否有效*/ if (p = MYDEV_SIZE) return 0。ly_devp[num]。module_param(ly_major, int, S_IRUGO)。在文件的所有實(shí)例都被關(guān)閉之后,內(nèi)核會(huì)釋放這個(gè)數(shù)據(jù)結(jié)構(gòu);③ inode結(jié)構(gòu),提供了關(guān)于特殊設(shè)備文件/dev/mydev的信息。三、 系統(tǒng)分析與設(shè)計(jì) 系統(tǒng)分析 系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核和應(yīng)用程序之間的接口,設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口。一、 課程設(shè)計(jì)目的Linux 系統(tǒng)的開(kāi)源性使其在嵌入式系統(tǒng)的開(kāi)發(fā)中得到了越來(lái)越廣泛的應(yīng)用,但其本身并沒(méi)有對(duì)種類繁多的硬件設(shè)備都提供現(xiàn)成的驅(qū)動(dòng)程序,特別是由于工程應(yīng)用中的靈活性,其驅(qū)動(dòng)程序更是難以統(tǒng)一,這時(shí)就需開(kāi)發(fā)一套適合于自己產(chǎn)品的設(shè)備驅(qū)動(dòng)。設(shè)備驅(qū)動(dòng)程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來(lái),硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以象操作普通文件一樣對(duì)硬件設(shè)備進(jìn)行操作。各個(gè)結(jié)構(gòu)的定義如下:(1)file_operations結(jié)構(gòu):static const struct file_operations my_fops ={ .owner = THIS_MODULE, .llseek = my_llseek, .read = my_read, .write = my_write, .open = my_open, .release = my_release, .unlocked_ioctl = ioctl,}。struct ly_dev *ly_devp。 /*將設(shè)備描述結(jié)構(gòu)指針賦值給文件私有數(shù)據(jù)指針*/ filpprivate_data = dev。 if (count MYDEV_SIZE p) count = MYDEV_SIZE p。 int ret = 0。 } return ret。 break。case SCULL_IOCHQUANTUM: /* sHift: like Tell + Query */ printk(SCULL_IOCHQUANTUM + %lx,arg)。 case 2: /* SEEK_END */ newpos = MYDEV_SIZE 1 + offset。/*設(shè)備驅(qū)動(dòng)模塊加載函數(shù)*/static int lydev_init(void){ int result。 /*初始化cdev結(jié)構(gòu)*/ cdev_init(amp。 /* 為設(shè)備描述結(jié)構(gòu)分配內(nèi)存*/ ly_devp = kmalloc(MYDEV_NR_DEVS * sizeof(struct ly_dev), GFP
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1