Linux内核:记录到特定的文件



我正在尝试编辑linux内核。作为调试过程的一部分,我希望将一些信息写入文件。我读过关于printk函数的文章。但我想将文本添加到一个特定的文件(除了保存调试日志的默认文件之外的文件)。简而言之:我想在printk函数中指定"目的地"(或者至少围绕它做一些工作)

我怎样才能做到这一点?使用fwrite/fopen是否有效(如果是,与printk相比,它是否有效而不会引起太多开销,因为它们的实现方式不同)?

我还有什么其他选择?

使用fopenfwrite肯定不起作用。在内核空间中处理文件通常是个坏主意。

不过,这一切实际上都取决于你在内核中做什么。在某些配置中,甚至可能没有硬盘可供您写入。但是,如果您正处于对运行的内核有某些假设的阶段,那么您可能实际上想要写入内核模块,而不是编辑内核本身。不管你怎么说,内核模块和内核的任何其他部分一样好,但它们是在内核已经启动并运行时插入的。

您也可能考虑这样做以进行调试,或者获得内核级应用程序的输出(例如,由于实时约束等原因,您被迫在内核级运行的应用程序)。在这种情况下,kio可能会引起你的兴趣,但如果你想使用它,一定要确保你明白为什么。

kio是我为那些"内核级应用程序"编写的库,它使内核模块看到/proc文件,就好像它是它的用户(而不是提供者)一样。为了让它发挥作用,你应该让一个用户空间应用程序也打开该虚拟文件,并将其重定向到你想写日志的地方。类似于在写模式和用户空间中用kopen打开文件的内容告诉cat /proc/your_file > ~/log_file

注意:除非你真的知道自己在做什么,否则我仍然推荐printk既然你在考虑内核空间中的fopen,我想你真的不知道自己在做什么。

相关内容

  • 没有找到相关文章

最新更新