我正在为学校作业添加对 Linux 6.1.9(使用用户模式 Linux)的系统调用。我想使用
printk
/pr_*
进行调试,但是第一个(?)printk
/pr_*
调用不会在任何地方打印任何内容!
例如,使用以下系统调用实现:
#include <linux/syscalls.h>
SYSCALL_DEFINE0(my_syscall)
{
pr_alert("1");
pr_alert("2");
pr_alert("3");
return 0;
}
和以下用户程序:
// I use -I/path/to/my/custom/kernel/headers of course
#include <linux/unistd.h>
#include <unistd.h>
int main(void) {
syscall(__NR_my_syscall);
return 0;
}
程序第一次运行打印
1
2
所有后续运行打印
3
1
2
我试过:
dmesg
.echo 7 > /proc/sys/kernel/printk
在运行程序之前,即使日志级别已经足够了。printk
返回每次应该打印的字符数,所以我不知道会发生什么!