从内核中的用户空间获取输入

时间:2018-06-11 17:37:19

标签: c linux linux-kernel

我是内核编程的新手,我正在对内存模块进行更改。问题在于,当我输入printk()语句时,在启动时输出非常冗长,并且由于打印的计算量很大,因此需要花费大量时间来启动。我正在考虑为它构建一个切换,因为它可以让用户打开/关闭打印。

我见过sscanf()vsscanf(),但只接受已经给定的字符串输入。我也知道,对于安全问题,不应该在逻辑上允许这样的输入,但有没有办法确保可以做到?或者我不知道的任何其他方法?

编辑:为清楚起见,我的意思是:在内核启动/启动后按需打开/关闭打印件。

1 个答案:

答案 0 :(得分:1)

如果需要在引导之前配置内核的行为,则有两种简单的方法:

  • 由于这是一个调试问题,最简单且侵扰性较小的选项是配置两个内核(一个启用,一个禁用),并让用户选择引导哪个内核,例如: GRUB。

  • 如果你真的需要使用相同的内核(例如某些用户可能在某个时刻需要它并且你不想要或者不能分发多个版本),那么使用启动内核参数。请查看https://elixir.bootlin.com/linux/v4.17/source/include/linux/moduleparam.h

  • 上的宏和文档

当然,可能还有其他方法可以为您提供输入(即来自任何类型的持久存储) - 但出于调试目的,我建议您选择第一个选项。