在2353这行打印的情况来看,操作系统好像给不同的进程分配不同的CPU,从上图来看,同一个进程好像基本使用的相同的CPU:
其实摸索syscall文件系统操作,本意是想找到内核文件系统中文件的创建,写入,目录创建,目录写入这样的流程。
比如:本人虚拟机中文件系统的类型是ext4
开始是正方向摸索流程,其实这有点难(也有相当的可能性是方法不对)
开始想像的是操作系统上层的应用层创建文件,写入文件,创建目录,写入目录,在内核层肯定会调用到ext4文件系统类型对应的文件创建,写入文件,创建目录,写入目录。
但是现在的问题是我们要去找对应的这四个函数(其实最好是先只找一个,找到一个后,其他三个就比较容易了),当时根据函数名字猜测会不是是这个数据结构。
从右边的目录结构来看好像是内核里边为了适配不同文件系统的源代码。
基于猜测的结果继续打印日志:
其实ext4_file_write_iter是可以被调到到的:
下边这个看名称好像是内核对ext4文件系统目录操作相关函数。
这是添加的打印日志:
这是从打印日志搜索到的:
在测试的时候,我们的test.sh如果把mkdir test_dir这行注释掉,从打印的日志搜索不到ext4_mkdir
如果我们把mkdir行取消注释,执行一把这个test.sh脚本,那么从日志是可以搜索到ext4_mkdir的:
找到函数入口后,下一步再找代码执行的流程,估计容易些。
测试目录创建,不知道这种测试手段是否足够严谨。
测试文件写,首先建立一个长时间下载的进程,时间太短容易退出,并且这个操作会写入文件。
查看这个进程的ID:
清空原来的syslog日志,打开pr_info_self打印开关,过一秒然后关闭打印开关,然后把日志拷贝过来,然后再进行对日志搜索:
搜索的结果如下:
以上基本是个人观点,测试的流程不知道是否足够严谨。
r77683962/linux-6.9.0https://gitee.com/r77683962/linux-6.9.0/test_log/syslog_2024_07_25_10_59_15
日志地址如上。