设备管理与模块机制--传统方式的设备注册与管理(ppt27页)

上传人:ahu****ng1 文档编号:146171356 上传时间:2020-09-27 格式:PPTX 页数:28 大小:491.03KB
返回 下载 相关 举报
设备管理与模块机制--传统方式的设备注册与管理(ppt27页)_第1页
第1页 / 共28页
设备管理与模块机制--传统方式的设备注册与管理(ppt27页)_第2页
第2页 / 共28页
设备管理与模块机制--传统方式的设备注册与管理(ppt27页)_第3页
第3页 / 共28页
设备管理与模块机制--传统方式的设备注册与管理(ppt27页)_第4页
第4页 / 共28页
设备管理与模块机制--传统方式的设备注册与管理(ppt27页)_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《设备管理与模块机制--传统方式的设备注册与管理(ppt27页)》由会员分享,可在线阅读,更多相关《设备管理与模块机制--传统方式的设备注册与管理(ppt27页)(28页珍藏版)》请在金锄头文库上搜索。

1、设备管理与模块机制,基本概念 传统方式的设备注册与管理 devfs注册与管理 块设备的请求队列 网络设备 模块机制,Linux Device ; struct loff_t (*llseek)(struct file *,loff_t,int); ssize_t (*read)(struct file *,char *,size_t,loff_t *); ssize_t (*write)(struct file *,const char *,size_t,loff_t *); int(*ioctl) (struct inode *,struct file *,unsigned int,unsi

2、gned long); int(*mmap) (struct file *,struct vm_area_struct *); int(*open) (struct inode *,struct file *); int(*release) (struct inode *,struct file *); int(*fsync) (struct file *,struct dentry *,int datasync); int(*fasync) (int,struct file *,int); ;,Linux Device struct * fops; ; static struct devic

3、e_struct chrdevsMAX_CHRDEV; 注册与注销函数: int register_chrdev(unsigned int major, const char * name, struct *fops) int unregister_chrdev(unsigned int major, const char * name); 注:major即设备的主设备号,注册后就是访问数组chrdevs的索引(下标)。,字符设备的注册与管理,Linux Device struct block_device_operations *bdops; blkdevsMAX_BLKDEV;,Linux

4、 Device int (*release) (struct inode *, struct file *); int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long); int (*check_media_change) (kdev_t); int (*revalidate) (kdev_t); struct module *owner; ;,Linux Device 除了open、release等函数利用了设备注册时提供的block_device_operations结构中的成员变量之外,其他函数都是采用所有

5、块设备通用的操作函数(def_blk_fops),块设备的缺省操作def_blk_fops,Linux Device ,块设备的缺省操作def_blk_fops,Linux Device queue_proc *queue; void *data; ; struct blk_dev_struct blk_devMAX_BLKDEV;,Linux Device /读写队列 request_fn_proc *request_fn; ,Linux Device return 0; void cleanup_module(void) printk(Goodbye cruel worldn); 编译模块

6、 # gcc c hello.c DMODULE D_KERNEL_ -DLINUX -Wall O2 -I/usr/src/linux-2.4/include 安装、卸载模块 # insmod hello.o Hello world # rmmod hello Goodbye cruel world,Linux Device & Module,模块设计注意事项,模块设计与应用程序设计 模块是装入内核的,运行时CPU处于核心态 应用程序运行时CPU处于用户态 编译模块 设计应用程序使用的include文件:/usr/include 设计内核模块使用的include文件:/usr/src/lin

7、ux-2.4/include 两者如果不一致,在编译内核模块时要用-I指明include路径 设计的模块可以调用Linux内核及其他模块已经输出(exported)的函数,不能利用标准C提供的库函数如printf #more /proc/ksyms或,Linux Device & Module,模块调试,printk 利用/proc文件系统或ioctl; ksyms 使用调试器 gdb kdebug 远程调试,Linux Device & Module,/proc/下文件、目录的意义,Linux Device & Module,SGI公司OSS项目的kgdb,Linux Device & Mo

8、dule,1、有时候读书是一种巧妙地避开思考的方法。20.9.2720.9.27Sunday, September 27, 2020 2、阅读一切好书如同和过去最杰出的人谈话。18:32:4318:32:4318:329/27/2020 6:32:43 PM 3、越是没有本领的就越加自命不凡。20.9.2718:32:4318:32Sep-2027-Sep-20 4、越是无能的人,越喜欢挑剔别人的错儿。18:32:4318:32:4318:32Sunday, September 27, 2020 5、知人者智,自知者明。胜人者有力,自胜者强。20.9.2720.9.2718:32:4318:3

9、2:43September 27, 2020 6、意志坚强的人能把世界放在手中像泥块一样任意揉捏。2020年9月27日星期日下午6时32分43秒18:32:4320.9.27 7、最具挑战性的挑战莫过于提升自我。2020年9月下午6时32分20.9.2718:32September 27, 2020 8、业余生活要有意义,不要越轨。2020年9月27日星期日6时32分43秒18:32:4327 September 2020 9、一个人即使已登上顶峰,也仍要自强不息。下午6时32分43秒下午6时32分18:32:4320.9.27 10、你要做多大的事情,就该承受多大的压力。9/27/2020

10、6:32:43 PM18:32:432020/9/27 11、自己要先看得起自己,别人才会看得起你。9/27/2020 6:32 PM9/27/2020 6:32 PM20.9.2720.9.27 12、这一秒不放弃,下一秒就会有希望。27-Sep-2027 September 202020.9.27 13、无论才能知识多么卓著,如果缺乏热情,则无异纸上画饼充饥,无补于事。Sunday, September 27, 202027-Sep-2020.9.27 14、我只是自己不放过自己而已,现在我不会再逼自己眷恋了。20.9.2718:32:4327 September 202018:32,谢谢大家,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号