- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内核符号表 内核符号简介 模块之间用符号连接在一起 符号导出 内核符号表 /proc/ksyms System.map 模块初始化和关闭 模块加载调用的第一个函数init_module 模块所使用资源的分配与释放 使用计数 模块卸载和cleanup_module 显式指定初始化和清除函数 驱动程序使用的资源 获取内存区域 kmalloc ioport和iomem资源的使用 运行时动态分配iomem,ioport 静态分配存储器和端口映射 我该如何选择资源分配方式 动态分配主设备号 register_chrdev注册动态主设备号 动态分配主设备号的优缺点 /proc/devices和lsmod 动态生成设备文件系统节点 dev_t和kdev_t 访问设备驱动程序的方法 devfs简介 devfs的兼容性 proc简介 sysfs简介 用ioctl控制驱动程序实例分析(1) int scull_ioctl(struct inode *inode, struct file *filp,unsigned int cmd, unsigned long arg) { int err = 0, tmp; int retval = 0; if (_IOC_TYPE(cmd) != SCULL_IOC_MAGIC) return -ENOTTY; if (_IOC_NR(cmd) SCULL_IOC_MAXNR) return -ENOTTY; if (_IOC_DIR(cmd) _IOC_READ) err = !access_ok(VERIFY_WRITE, (void __user *)arg, _IOC_SIZE(cmd)); else if (_IOC_DIR(cmd) _IOC_WRITE) err = !access_ok(VERIFY_READ, (void __user *)arg, _IOC_SIZE(cmd)); if (err) return -EFAULT; 用ioctl控制驱动程序实例分析(2) switch(cmd) { case SCULL_IOCRESET: scull_quantum = SCULL_QUANTUM; scull_qset = SCULL_QSET; break; case SCULL_IOCSQUANTUM: /* Set: arg points to the value */ if (! capable (CAP_SYS_ADMIN)) return -EPERM; retval = __get_user(scull_quantum, (int __user *)arg); break; case SCULL_IOCTQUANTUM: /* Tell: arg is the value */ if (! capable (CAP_SYS_ADMIN)) return -EPERM; scull_quantum = arg; break; case SCULL_IOCGQUANTUM: /* Get: arg is pointer to result */ retval = __put_user(scull_quantum, (int __user *)arg); break; 模块加载与卸载函数模板 struct xxx_dev_t //设备结构体 { struct cdev cdev; ...} xxx_dev; static int _ _init xxx_init(void) //设备驱动模块加载函数 { ... cdev_init(xxx_dev.cdev, xxx_fops); //初始化cdev xxx_dev.cdev.owner = THIS_MODULE; if (xxx_major) //获取字符设备号 { register_chrdev_region(xxx_dev_no, 1, DEV_NAME);} else { alloc_chrdev_region(xxx_dev_no, 0, 1, DEV_NAME); ret = cdev_add(xxx_dev.cdev, xxx_dev_no, 1); //注册设备 } ... } static void _ _exit xxx_e
您可能关注的文档
- 2012《金版新学案》高考总复习(大纲版)数学(课件):第八章 圆锥曲线方程8.1.ppt
- 2009-大气科学导论-动力气象学.ppt
- 2012年GCT逻辑辅导下.ppt
- 5-Biochemistry-生物化学.ppt
- UML建模之用例分析与设计.ppt
- 人力资源规划(四级)学员课件.ppt
- 级第讲:代数学的新生.ppt
- 2018年高考现代文阅读论述类文本复习指导.ppt
- 代谢--生命活动的基本过程.ppt
- 40传感器原理.ppt
- 我国加工贸易现存问题剖析与发展路径探寻.docx
- 第6课从隋唐盛世到五代十国教学课件--高一上学期统编版必修中外历史纲要上.pptx
- 江西省经济 - 社会 - 资源环境系统协调发展度的综合评估与策略研究.docx
- 豫东平原某市棕地居民小区土壤重金属污染特征与健康风险的深度剖析.docx
- 从空间塑造到氛围营造:楼梯在建筑中的多维调节作用探究.docx
- 蓝城房地产项目成本管理:策略、实践与创新路径.docx
- 期末专项复习光现象透镜习题课件-人教版(2024)物理八年级上册.pptx
- 高血压患者脑网络特征剖析:结构、功能与临床关联的深度洞察.docx
- TAVR手术围术期护理.pptx
- 病人分级护理评估与质量管理PPT——实用护理培训课件,涵盖标准制定、动态调整与信息化应用.pptx
文档评论(0)