gpt4 book ai didi

c - xv6内核启动后如何获取系统调用的数量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:39:08 25 4
gpt4 key购买 nike

我想编写一个简单的“C”程序来查找操作系统启动后的系统调用次数。我正在关注其他系统调用,如 fork() 或 getpid() 并且基本上复制了他们的大部分内容。我不确定应该在何处/何时增加我的计数器?有什么例子吗?

在 kernel/syscall.c 中定义计数器并相应地增加它是个好主意吗?

void
syscall(void)
{
int num;
counter++; //mona
num = proc->tf->eax;
if(num > 0 && num < NELEM(syscalls) && syscalls[num] != NULL) {
proc->tf->eax = syscalls[num]();
} else {
cprintf("%d %s: unknown sys call %d\n",
proc->pid, proc->name, num);
proc->tf->eax = -1;
}
}

这也是我目前在 kernel/sysproc.c 中为我的简单系统调用获得的代码:

sys_getsyscallinfo(void)
{

return counter; //mona
}

但是我收到这个错误:

kernel/sysproc.c: In function ‘sys_getsyscallinfo’:
kernel/sysproc.c:48: error: ‘counter’ undeclared (first use in this function)
kernel/sysproc.c:48: error: (Each undeclared identifier is reported only once
kernel/sysproc.c:48: error: for each function it appears in.)
make: *** [kernel/sysproc.o] Error 1

最佳答案

我在 kernel/defs.h 中将一个计数器变量定义为 extern int,并在系统调用定义中使用它作为 kernel/sysproc.c 中的返回值,并且在 kernel/syscall.c 中完成所有陷阱处理的地方增加了它。希望对您有所帮助。

关于c - xv6内核启动后如何获取系统调用的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18821107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com