块设备读写流程.docVIP

  • 55
  • 0
  • 约2.24万字
  • 约 23页
  • 2017-11-17 发布于河南
  • 举报
块设备读写流程

1、? open()打开指定的块设备,通过systemcall机制陷入内核,执行blkdev_open()函数,该函数注册到文件系统方法(file_operations)中的open上。在blkdev_open函数中调用bd_acquire()函数,bd_acquire函数完成文件系统inode到块设备bdev的转换,具体的转换方法通过hash查找实现。得到具体块设备的bdev之后,调用do_open()函数完成设备打开的操作。在do_open函数中会调用到块设备驱动注册的open方法,具体调用如下:gendisk-fops-open(bdev-bd_inode, file)。 2、? read、write函数对设备进行读写,文件系统会调用相应的方法,通常会调用如下两个函数:generic_file_read和blkdev_file_write。在读写过程中采用了多种策略,首先分析读过程。 3、?read函数,内核执行generic_file_read,如果不是direct io方式,那么直接调用do_generic_file_read-do_generic_mapping_read()函数,在do_generic_mapping_read(函数位于filemap.c)函数中,首先查找数据是否命中Cache,如果命中,那么直接将数据返回给用户态;否则通过address_space

文档评论(0)

1亿VIP精品文档

相关文档