设备管理与模块机制学习教案.ppt
上传人:王子****青蛙 上传时间:2024-09-13 格式:PPT 页数:26 大小:2MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

设备管理与模块机制学习教案.ppt

设备管理与模块机制学习教案.ppt

预览

免费试读已结束,剩余 16 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

会计学基本概念基本概念VFS中的文件(wénjiàn)(1)llseek(file,offset,whence):修改文件的读写指针。(2)read(file,buf,count,offset):从设备文件的offset处开始读出count个字节,然后增加*offset的值。(3)write(file,buf,count,offset):从设备文件的offset处写入count个字节,然后增加*offset的值。(4)ioctl(inode,file,cmd,arg):向一个硬件设备发命令,对设备进行控制。(5)mmap(file,vma):将设备空间映射(yìngshè)到进程地址空间。(6)open(inode,file):打开并初始化设备。(7)release(inode,file):关闭设备并释放资源。(8)fsync(file,dentry):实现内存与设备之间的同步通信。(9)fasync(file,on):实现内存与设备之间的异步通信。fs/devices.cstructdevice_struct{constchar*name;structfile_operations*fops;};staticstructdevice_structchrdevs[MAX_CHRDEV];注册与注销函数:intregister_chrdev(unsignedintmajor,constchar*name,structfile_operations*fops)intunregister_chrdev(unsignedintmajor,constchar*name);注:major即设备的主设备号,注册后就是访问数组chrdevs的索引(suǒyǐn)(下标)。PCI设备(shèbèi)(驱动实现见word文档)块设备(shèbèi)块设备(shèbèi)注册块设备(shèbèi)的操作block_device_operationsblock_device_operations{}并不能完全提供file_operations结构中的所必需的主要函数(例如read、write),所以内核实际上是采用def_blk_fops变量对相关的file_operations{}变量进行了赋值:structfile_operationsdef_blk_fops;除了open、release等函数利用了设备注册(zhùcè)时提供的block_device_operations{}结构中的成员变量之外,其他函数都是采用所有块设备通用的操作函数(def_blk_fops{})fs/block_dev.cstructfile_operationsdef_blk_fops={open:blkdev_open,release:blkdev_close,llseek:block_llseek,read:generic_file_read,write:generic_file_write,mmap:generic_file_mmap,fsync:block_fsync,ioctl:blkdev_ioctl,};block_read与block_write等函数是设备相关的块设备注册时一个重要的任务就是提供(tígōng)这个设备相关的操作函数给内核devfs注册(zhùcè)与管理块设备(shèbèi)的请求队列block_read()流程(liúchéng)Linux网络协议栈重要(zhòngyào)的数据结构模块(mókuài)机制(Module)模块(mókuài)的设计模块(mókuài)的设计模块(mókuài)设计注意事项模块(mókuài)调试/proc/<pid>/下文件(wénjiàn)、目录的意义SGI公司(ɡōnɡsī)OSS项目的kgdb内容(nèiróng)总结