linux - 如何从 Linux 内核模块的 sysfs 属性文件中读取字符串?

标签 linux module linux-kernel sysfs

基本上,我想要一个配置文件,例如包含一串字符的“myconfigfile”,例如“abcdefg”。

我想在我的内核模块中读取这个字符串作为一个值。也就是说,我希望在我的代码中有一个 char* 从该文件中获取值“abcdefg”。据我了解,我应该使用 sysfs。这是我的问题:

  1. 我是否只创建文件并将其移动到 /sys/module/path/to/my/module 目录?
  2. 如果我有可用的文件,我该如何准确读取值?假设文件名为“myconfigfile”。我读了this documentation但坦率地说,我不明白。

最佳答案

你的实际问题是你想在你的模块中配置一些东西。

读取配置文件并不能解决那个问题,它只会引入另一个问题。

要在模块中配置某些东西,请使用模块参数:

#include <linux/kernel.h>
#include <linux/module.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Sefu");

static char *my_param = "default";
module_param(my_param, charp, 0444);
MODULE_PARM_DESC(my_param, "my little configuration string");

int init_module(void)
{
    printk(KERN_INFO "The parameter is: %s\n", my_param);
    return 0;
}

void cleanup_module(void)
{
}

要设置该值,请用类似的东西加载您的模块

modprobe mymodule my_param=whatever

或者将此行放入 /etc/modprobe.d/ 中的某个 .conf 文件中:

options mymodule my_param=whatever

关于linux - 如何从 Linux 内核模块的 sysfs 属性文件中读取字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20208660/

相关文章:

java - Linux PC 和 Android 之间的 Wifi 文件传输

linux - 比较 Unix/Linux IPC

node.js - 在 Node.js 中使用 Underscore 模块

c - 将功能分配给CPU

linux - Linux 中的 init_user 命名空间是什么?

linux - 启动时重新启动 autossh 反向隧道的问题

c - 用于打印 “stat”缓冲区内容的格式说明符

macros - 是否可以使用 "namespace"Rust 宏?

python - Docker 上的 Odoo 开发

linux-kernel - Linux Kernel Boot Arguments 在哪里解析