- 1、本文档共91页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9-uClinux的扩充和应用-29-uClinux的扩充和应用-2
Linux device driver 的概念 Linux device driver 的概念 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口,设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件, 应用程序可以象操作普通文件一样对硬件设备进行操作. Linux device driver 的概念 Linux device driver 的概念 设备号 Linux device driver 的概念 字符设备和块设备的主要区别是: 在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,块设备则不然,它利用一块系统内存作缓冲区,当用户进程对设备请求能满足用户的要求,就返回请求的数据. Linux device driver 的概念 块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待. 用户进程是通过设备文件来与实际的硬件打交道.每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备 Linux device driver 的概念 设备文件的的主设备号必须与设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问到驱动程序. Linux device driver 的概念 设备驱动程序是内核的一部分,它完成以下的功能: 1.对设备初始化和释放. 2.把数据从内核传送到硬件和从硬件读取数据. 3.读取应用程序传送给设备文件的数据和回送应用程序请求的数据. 4.检测和处理设备出现的错误. 每个字符设备用结构char_device_struct来描述,所有的字符设备组成数组chrdevs: static struct char_device_struct { struct char_device_struct *next; unsigned int major; unsigned int baseminor; …… char name[64]; struct file_operations *fops; …… } *chrdevs[CHRDEV_MAJOR_HASH_SIZE]; 初始化 注册一个字符设备register_chrdev() (fs/char_dev.c) register_chrdev(unsigned int major,const char *name,struct file_operations *fops) int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops) { struct char_device_struct *cd; struct cdev *cdev; char *s; int err = -ENOMEM; cd = __register_chrdev_region(major, 0, 256, name); if (IS_ERR(cd)) return PTR_ERR(cd); cdev = cdev_alloc(); //分配一个cdev对象空间 if (!cdev) goto out2; cdev-owner = fops-owner; cdev-ops = fops; kobject_set_name(cdev-kobj, %s, name); for (s = strchr(kobject_name(cdev-kobj),/); s; s = strchr(s, /)) *s = !; err = cdev_add(cdev, MKDEV(cd-major, 0), 256); if (err) goto out; cd-cdev = cdev; return major ? 0 : cd-major;out: kobject_put(cdev-kobj);out2: kfree(__unregister_chrdev_region(cd-major, 0, 256)); return err;} static struct char_device_struct *__register_chrdev_region (unsigned int major, unsigned int baseminor, int minorct, const char *name) { struct char_device_struct *cd,
您可能关注的文档
- 636工序、单元工程施工质量验收评定表636工序、单元工程施工质量验收评定表.doc
- 64米箱梁-地胎膜施工方案.6-1264米箱梁-地胎膜施工方案.6-12.doc
- 65T龙门吊基础设计计算书65T龙门吊基础设计计算书.doc
- 6-船舶保安计划6-船舶保安计划.ppt
- 6MW 汽轮机技术协议(凝汽电调)6MW 汽轮机技术协议(凝汽电调).doc
- 5411班班规草稿5411班班规草稿.doc
- 6d01a1b317190cc7dee3f2c32a259cf46d01a1b317190cc7dee3f2c32a259cf4.ppt
- 6、卫生器具安装技术交底6、卫生器具安装技术交底.doc
- 6、一年级数学上册第六单元复习6、一年级数学上册第六单元复习.ppt
- 6《4.1版曳引式防爆电梯监督检验自检报告》6《4.1版曳引式防爆电梯监督检验自检报告》.doc
- 中国国家标准 GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- 《GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计》.pdf
- 中国国家标准 GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- 《GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置》.pdf
- 中国国家标准 GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- GB/T 17889.4-2024梯子 第4部分:铰链梯.pdf
- 《GB/T 17889.4-2024梯子 第4部分:铰链梯》.pdf
文档评论(0)