设备管理与模块机制

设备管理与模块机制

ID:22317288

大小:271.00 KB

页数:26页

时间:2018-10-20

设备管理与模块机制_第1页
设备管理与模块机制_第2页
设备管理与模块机制_第3页
设备管理与模块机制_第4页
设备管理与模块机制_第5页
资源描述:

《设备管理与模块机制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、设备管理与模块机制基本概念传统方式的设备注册与管理devfs注册与管理块设备的请求队列网络设备模块机制LinuxDevice&Module基本概念字符设备、块设备、网络设备字符设备以字节为单位进行数据处理,通常只允许按顺序访问块设备将数据按可寻址的块为单位进行处理,可以随机访问,利用缓冲技术网络设备是一类特殊的设备,每块网卡有名字但没有设备文件与之对应查看系统中的设备:/proc/devices主设备号和次设备号majornumber:相同的设备使用相同的驱动程序minornumber:用来区分具体设备的实例查看设备及其类型“ls-

2、l/dev”设备文件系统devfs/dev目录过于庞大,很多设备文件没有对应系统中的设备devfs根据系统中的实际设备构建设备文件,并按目录存放,如/dev/disk,/dev/ptsLinuxDevice&Module基本概念LinuxDevice&Module基本概念建立设备:#mknod/dev/dev_nametypemajor_numberminor_numberLinuxDevice&ModuleVFS中的文件include/linux/fs.hstructfile{……structfile_operations*f_o

3、p;};structfile_operations{loff_t(*llseek)(structfile*,loff_t,int);ssize_t(*read)(structfile*,char*,size_t,loff_t*);ssize_t(*write)(structfile*,constchar*,size_t,loff_t*);int(*ioctl)(structinode*,structfile*,unsignedint,unsignedlong);int(*mmap)(structfile*,structvm_area

4、_struct*);int(*open)(structinode*,structfile*);int(*release)(structinode*,structfile*);int(*fsync)(structfile*,structdentry*,intdatasync);int(*fasync)(int,structfile*,int);……};LinuxDevice&Module(1)llseek(file,offset,whence):修改文件的读写指针。(2)read(file,buf,count,offset):从设备文

5、件的offset处开始读出count个字节,然后增加*offset的值。(3)write(file,buf,count,offset):从设备文件的offset处写入count个字节,然后增加*offset的值。(4)ioctl(inode,file,cmd,arg):向一个硬件设备发命令,对设备进行控制。(5)mmap(file,vma):将设备空间映射到进程地址空间。(6)open(inode,file):打开并初始化设备。(7)release(inode,file):关闭设备并释放资源。(8)fsync(file,dentry

6、):实现内存与设备之间的同步通信。(9)fasync(file,on):实现内存与设备之间的异步通信。LinuxDevice&Modulefs/devices.cstructdevice_struct{constchar*name;structfile_operations*fops;};staticstructdevice_structchrdevs[MAX_CHRDEV];注册与注销函数:intregister_chrdev(unsignedintmajor,constchar*name,structfile_operation

7、s*fops)intunregister_chrdev(unsignedintmajor,constchar*name);注:major即设备的主设备号,注册后就是访问数组chrdevs的索引(下标)。字符设备的注册与管理LinuxDevice&ModulePCI设备(驱动实现见word文档)Linux内核启动时会对所有PCI设备进行扫描、登录和分配资源等初始化操作,建立起系统中所有PCI设备的拓扑结构此后当内核欲初始化某设备时,调用module_init加载该设备的驱动程序LinuxDevice&Module块设备fs/block

8、_dev.cstaticstruct{constchar*name;structblock_device_operations*bdops;}blkdevs[MAX_BLKDEV];LinuxDevice&Module块设备注册fs/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。