工作中, 经常会读取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这一层往下调用的所有函数过程, 就很容易找到了
很容易得看出就是vfs->proc_reg_read->cmdline_proc_show, 而且每一个函数的调用时间都有
其实关于调用时间, 加了trace以后, 是有很大影响的, 比如-g参数和-l参数就差很多, 因为-g每个函数都要跑trace代码, 被trace的代码本身就很快