如何找到proc文件sys文件对应的内核函数

简介: 工作中, 经常会读取proc或者sys目录下的很多文件, 比如cat /proc/cmdline, cat /proc/uptime之类的, 有时候我们想看看对应的内核实现, 却不知道从哪里找起, 老司机们当然很容易从源代码中根据经验和某种规律找出来, 但是新手就困难得多. 下面有一种办法是很容易得获得这些接口文件对应的内核函数 trace-cmd trace-cmd record -

工作中, 经常会读取proc或者sys目录下的很多文件, 比如cat /proc/cmdline, cat /proc/uptime之类的, 有时候我们想看看对应的内核实现, 却不知道从哪里找起, 老司机们当然很容易从源代码中根据经验和某种规律找出来, 但是新手就困难得多. 下面有一种办法是很容易得获得这些接口文件对应的内核函数

trace-cmd

trace-cmd record -p function_graph -g vfs_read cat /proc/cmdline ; trace-cmd report |vim -

会记录内核从vfs_read这一层往下调用的所有函数过程, 就很容易找到了

image.png

很容易得看出就是vfs->proc_reg_read->cmdline_proc_show, 而且每一个函数的调用时间都有

其实关于调用时间, 加了trace以后, 是有很大影响的, 比如-g参数和-l参数就差很多, 因为-g每个函数都要跑trace代码, 被trace的代码本身就很快

目录
相关文章
|
3月前
|
Shell
9-1| cp: 无法获取"884/*" 的文件状态(stat): 没有那个文件或目录 这是什么意思
9-1| cp: 无法获取"884/*" 的文件状态(stat): 没有那个文件或目录 这是什么意思
|
6月前
|
安全 Linux
使用 stat命令查看文件信息
使用 stat命令查看文件信息
114 0
|
6月前
|
Java
Files.find 去除部分目录/dev/fd,/proc如何操作
在使用 `Files.find` 方法时,如果你想在搜索过程中排除特定目录,如 `/dev/fd` 和 `/proc`,可以在 `BiPredicate` 实现中添加相应的逻辑。以下是一个示例,演示如何在 `Files.find` 中排除这些目录: ```java import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.BasicFileAttributes; imp
|
7月前
|
存储 Linux C语言
Linux获取文件信息的利器stat,fstat,lstat,fstatat
stat系列函数是C语言中的一个系统调用函数,用于获取文件的信息。通过提供文件路径,它能够返回包含文件属性的结构体数据。
167 0
|
Linux
Linux关于proc_create函数的修改
Linux关于proc_create函数的修改
704 0
Linux关于proc_create函数的修改
|
Linux
Linux 格式化分区 报错Could not stat --- No such file or directory 和 partprobe 命令
分区的过程正常: [root@db1 /]# fdisk -l   Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 160...
1360 0
|
Linux 编译器 C语言
linux中#include <sys/stat.h>的位置
linux中的gcc编译器默认是从 "cd /usr/include/" 中查找头文件的,但是在该目录下并没有发现sys子目录。那么这个sys到底对应于系统的哪个目录?经过一番查找,我发现#include 在:"cd /usr/include/x86_64-linux-gnu/sys/stat.h"这个里面。
1628 0