Linux内核程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux内核程序设计

第十讲 LINUX内核程序设计 LINUX进程的接口设计 LINUX内核模块示例程序 LINUX中断处理程序 内核同步问题 设备接口程序设计示例 第十讲 LINUX内核程序设计 LINUX进程的接口设计 进程、内核、硬件的过程 设备文件 进程接口函数 驱动程序 设备号 LINUX内核结构 LINUX的进程接口驱动程序设计 LINUX的进程接口驱动程序设计 LINUX内核程序设计 LINUX进程的接口设计 进程、内核、硬件的过程 设备文件 进程接口函数 驱动程序 设备号 LINUX的进程接口驱动程序设计 LINUX的进程接口驱动程序设计 LINUX的进程接口驱动程序设计 LINUX的进程接口驱动程序设计 LINUX内核程序设计 LINUX进程的接口设计 进程、内核、硬件的过程 设备文件 进程接口函数 驱动程序 设备号 LINUX的进程接口程序设计 LINUX的进程接口程序设计 LINUX内核程序设计 LINUX进程的接口设计 进程、内核、硬件的过程 设备文件 进程接口函数 驱动程序 设备号 LINUX的进程接口驱动程序设计 LINUX的进程接口驱动程序设计 主设备号和次设备号 major number:相同的设备使用相同的驱动程序 minor number:用来区分具体设备的实例 查看设备及其类型“ls -l /dev” 设备文件系统devfs /dev目录过于庞大,很多设备文件没有对应系统中的设备 devfs根据系统中的实际设备构建设备文件,并按目录存放,如 /dev/disk,/dev/pts LINUX核心生成方法 示例程序功能 LINUX核心生成方法 示例程序代码-进程1 示例程序代码-进程2 示例程序代码-设备A驱动程序 初始化模块程序 初识两个结构 file结构:在内核中标识一个打开的设备(文件) file_operations结构 :用于访问驱动程序的函数指针 如果用面向对象的概念来考虑问题 ,那么file可以看作一个对象,而操作它的函数(由file_operations结构标识)就是对象的方法。 file结构 file结构是在linux/fs.h中定义的一个数据结构,用来代表一个打开的文件(包括设备文件和普通文件)。它与用户空间程序中的FILE没有任何关联。 struct file{ mode_t f_mode , loff_t f_pos , unsigned int f_flags , struct file_operations *f_op , void *private_data , struct dentry *f_dentry , …… } file_operations结构 file_operations结构是一个定义在linux/fs.h中的函数指针数组。每个文件都通过file结构中的f_op字段与它自己的函数集相关联。这些函数负责系统调用的实现,而这个结构负责系统调用的映射。 驱动程序向系统注册 int register_chrdev(unsigned int major , const char *name , struct file_operations *fops); 在传统方式下,向系统添加一个驱动程序就意味着为其分配一个主设备号。主设备号在驱动模块注册时就必须提供。 参数major就是显式的为该驱动分配的主设备号。也可以动态的分配(major=0)。 设备文件节点 应用程序如何知道这个看起来很丑陋的主设备号(就像IP一样难以记忆),聪明的内核开发者早就为我们考虑到了——给设备起个名字(就像域名一样)。 给设备起名字,就是在文件系统上显式的创建一个文件节点,即设备文件 。 因此,应用程序看到的设备和文件是一样的,他们都是文件系统上的一个节点,有着相同的接口。 用mknod命令创建设备文件节点 mknod /dev/mydev1 c 254 0 mydev1就是设备的名字,它是/dev目录下的一个文件节点 c表示字符设备 254是主设备号 0是次设备号 字符设备驱动程序表chrdevs[ ] struct device_struct { const char *name; struct file_oprations * fops; }; static struct device_struct chrdevs[MAX_CHRDEV]; chrdevs[ ]是个全局变量,它在字符设备管理中处于核心地位。 Linux通过它组织起MAX_CHRDEV(255)个device_struct结构来记录相关

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档