首先(?)`printk` / `pr_*` 不在任何地方打印

问题描述 投票:0回答:0

我正在为学校作业添加对 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
返回每次应该打印的字符数,所以我不知道会发生什么!

linux-kernel system-calls printk user-mode-linux
© www.soinside.com 2019 - 2024. All rights reserved.