这可能是一个愚蠢的问题,但是有没有一种方法可以在不使用 printk(即 syslog)的情况下从驱动程序中写入 linux 控制台?
例如,在 linux 驱动程序中工作,我需要在事件发生时输出单个字符。我想在写事件开始时输出“w”,在结束时输出“W”。这种情况经常发生,因此通过 syslog 发送它并不理想。
理想情况下,如果我可以做相当于 printf("W") 或 putc('W') 的操作,然后简单地退出默认控制台,那就太好了。
TIA 迈克
这可能是一个愚蠢的问题,但是有没有一种方法可以在不使用 printk(即 syslog)的情况下从驱动程序中写入 linux 控制台?
例如,在 linux 驱动程序中工作,我需要在事件发生时输出单个字符。我想在写事件开始时输出“w”,在结束时输出“W”。这种情况经常发生,因此通过 syslog 发送它并不理想。
理想情况下,如果我可以做相当于 printf("W") 或 putc('W') 的操作,然后简单地退出默认控制台,那就太好了。
TIA 迈克
写入控制台不是您想要经常做的事情。如果printk
对你来说太贵了,你不应该以任何方式尝试控制台。
但如果你坚持:
在 内printk
,打印到控制台由call_console_drivers
. 此函数找到控制台(通过 注册register_console
)并调用它来打印数据。实际的驱动程序取决于您使用的控制台。VGA 屏幕是一个选项,串行端口是另一个选项(取决于启动参数)。
您可以尝试使用中的功能console.h
直接与控制台交互。我不知道让它工作有多难。
不幸的是,没有,因为内核中没有“控制台”的概念(即用户空间进程)。您可以尝试其他内核调试选项