【问题标题】:Writing to linux console without using printk不使用 printk 写入 linux 控制台
【发布时间】:2012-05-21 20:33:12
【问题描述】:

这可能是一个愚蠢的问题,但是有没有办法在不使用 printk(即 syslog)的情况下从驱动程序中写入 linux 控制台?

例如,在 linux 驱动程序中工作,我需要在事件发生时输出单个字符。我想在写事件开始时输出'w',在它结束时输出'W'。这种情况经常发生,因此通过 syslog 发送它并不理想。

理想情况下,如果我可以执行 printf("W") 或 putc('W') 的等效操作,然后将其简单地从默认控制台输出,那就太好了。

TIA 迈克

【问题讨论】:

  • 假设您的系统日志没有记录内核调试,您可以这样做:printk(KERN_DEBUG, "message");。只是一个想法。

标签: linux linux-kernel


【解决方案1】:

写入控制台不是您想要经常做的事情。如果printk 对你来说太贵了,你不应该尝试任何方式的控制台。

但如果你坚持:

printk 内,打印到控制台由call_console_drivers 处理。这个函数找到控制台(通过register_console注册)并调用它来打印数据。实际的驱动程序取决于您使用的控制台。 VGA屏幕是一种选择,串口是另一种选择(取决于启动参数)。

您可以尝试使用console.h中的函数直接与控制台交互。我不知道让它工作起来有多难。

【讨论】:

【解决方案2】:

很遗憾,没有,因为内核中没有“控制台”的概念(即用户空间进程)。你可以试试其他kernel debugging options

【讨论】:

  • 抱歉,内核中有一个控制台的概念,正如 ugoren 在他的回答中所解释的那样。
  • 内核有钩子来连接控制台,这是不同的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-17
  • 2017-08-27
  • 2013-07-22
  • 2020-10-07
相关资源
最近更新 更多