Goal: 设计一个系统调用函数,用来统计系统中所有系统调用的次数
实验环境:OS:Ubuntu 20.04.2 LTS (GNU/Linux 5.15.0-53-generic x86_64)
目前已完成:编写一个普通的带参数的系统调用,并通过 syscall()函数调用成功
遇到的难点
-
不知道全局数组存放的位置,无从下手。因为按照以往的旧内核( v2.6 ),是在 sys_i386.c 文件中编写代码创建一个 NR_syscalls 的数组,但是在新版的内核中系统调用似乎已经不再跟以往的一样。我在实现有参调用时仅修改了三个文件就完成了,分别是:
-
kernel/sys.c // 编写函数
-
include/linux/syscalls.h //声明函数 ,asmlinage..
-
arch/x86/entry/syscalls/syscall_64.tbl //调用号表
-
这种局部的好处理,全局的还能统计每个调用次数的又该怎么实现呢? 求大佬解答,看源码看不懂..关于新版内核的系统调用研究目前能找到的资讯也很少