我刚刚读到 Linux 内核模块无法打印到屏幕,即printf无法工作。它与中断处理有关吗?为什么会这样?
我有一段记忆,研究过一些 C 语言和汇编语言,但你无法使用它们printf,那是因为中断被关闭了。
答案1
在内核中,printf不起作用,因为它没有实现!你用printk相反(或者early_printk在非常早期的代码中,在控制台设置之前)。printk编码非常仔细,因此可以在任何情况下从任何地方安全地调用(特别是,它不需要分配内存)。它实现了与 几乎相同的 API printf,并添加了日志级别来指示正在打印的消息的重要性,以及格式说明符在内核中有用。