跟踪系统调用之旅-续1

简介:    本该定于周六的时候,分享这篇博文。怎奈双十一定了好多书,周五晚上到的,周六的时候在家全天充电。所以只好今天分享。各位还记得上篇博文有一问题:file->f_op_read指向的函数是哪个? 带着这个问题我们继续: 文件系统(每个注册的文件系统)在内...

   本该定于周六的时候,分享这篇博文。怎奈双十一定了好多书,周五晚上到的,周六的时候在家全天充电。所以只好今天分享。各位还记得上篇博文有一问题:file->f_op_read指向的函数是哪个?

带着这个问题我们继续:

文件系统(每个注册的文件系统)在内核中用一个类型为file_system_type的结构表示,当开机加载文件系统模块时,内核使用module_init(init_ext2_fs),初始化模块,具体位置在fs/ext2/super.c文件中,如下:
                   

在函数init_ext2_fs()中,通过调用register_filesystem()注册ext2_fs_type,即将ext2_fs_type加入到文件系统的链表中。
                  

看一下ext2_fs_type
                  

其中的字段get_sb 就是读超级快的函数。

                                         
                                         
                                         
                                        
                                       
 ext2_read_inode函数在文件fs/ext2/inode.c中。
                                       
                                       

          S_ISREG是否是一个常规文件,如果是常规文件,则将ext2_file_operations 变量的地址赋予
inode 对象的 i_fop 成员,那么inode->i_fop.read 函数指针所指向的函数,也就是ext2_file_operations
变量的成员 read 所指向的函数。
         

    ext2_file_operations 变量定义在fs/ext2/file.c文件中,如下图
               

    通过上面的层层分析,可以得出:generic_file_read 函数才是 ext2 层的真实入口。generic_file_read 函数定义在mm/filemap.c文件中。如下:
                








目录
相关文章
|
30天前
|
监控 Linux Shell
Linux 进程问题调查探秘:分析和排查频繁创建进程问题
Linux 进程问题调查探秘:分析和排查频繁创建进程问题
39 0
|
2月前
|
NoSQL Java 编译器
|
4月前
|
监控 安全 API
7.1 Windows驱动开发:内核监控进程与线程回调
在前面的文章中`LyShark`一直在重复的实现对系统底层模块的枚举,今天我们将展开一个新的话题,内核监控,我们以`监控进程线程`创建为例,在`Win10`系统中监控进程与线程可以使用微软提供给我们的两个新函数来实现,此类函数的原理是创建一个回调事件,当有进程或线程被创建或者注销时,系统会通过回调机制将该进程相关信息优先返回给我们自己的函数待处理结束后再转向系统层。
59 0
7.1 Windows驱动开发:内核监控进程与线程回调
|
5月前
|
缓存 Linux Windows
linux系统编程 进程环境
linux系统编程 进程环境
52 0
|
8月前
|
C语言
《计算机操作系统-第三章》之中断与系统调用
《计算机操作系统-第三章》之中断与系统调用
194 0
|
9月前
|
缓存 数据格式 流计算
xawtv涉及的vivid系统调用分析
xawtv涉及的vivid系统调用分析
146 0
|
11月前
|
存储 Linux API
Linux 系统调用处理流程分析:陷入内核
Linux 系统调用处理流程分析:陷入内核
320 0
|
监控
驱动开发:内核监控进程与线程回调
在前面的文章中`LyShark`一直在重复的实现对系统底层模块的枚举,今天我们将展开一个新的话题,内核监控,我们以`监控进程线程`创建为例,在`Win10`系统中监控进程与线程可以使用微软提供给我们的两个新函数来实现,此类函数的原理是创建一个回调事件,当有进程或线程被创建或者注销时,系统会通过回调机制将该进程相关信息优先返回给我们自己的函数待处理结束后再转向系统层。
328 0
驱动开发:内核监控进程与线程回调
|
Linux Shell 网络安全
使用Systemtap跟踪系统调用 (一)
SystemTap是一个诊断Linux系统性能或功能问题的开源软件。它使得对运行时的Linux系统进行诊断调式变得更容易、更简单。有了它,开发者或调试人员不再需要重编译、安装新内核、重启动等烦人的步骤。
511 0
使用Systemtap跟踪系统调用 (一)
|
存储 安全 前端开发
【译】eBPF 概述:第 5 部分:跟踪用户进程
【译】eBPF 概述:第 5 部分:跟踪用户进程
582 0