linux - linux内核如何创建sysfs?

标签 linux linux-kernel operating-system kernel sysfs

我已经开始为我的操作系统类(class)研究 Linux 内核代码。因为我对 sys 文件系统 (sysfs) 很感兴趣。我有兴趣了解何时以及如何创建 sysfs? linux内核代码中的哪些文件生成了这个文件系统?

我已经在我的系统上设置了 linux 内核,并开始通过代码进行调试。

我引用了这个文档来理解 sysfs 文件系统: [系统文件系统]:https://www.kernel.org/doc/Documentation/filesystems/sysfs.txt

但本文档仅对目录结构、目录的创建和读写属性进行了说明。我对内核在引导期间如何创建这些目录更感兴趣。 我了解到以下方法负责在 sysfs 中创建目录。

   int sysfs_create_file(struct kobject *kobj, struct attribute *attr);

此函数接受 kboject 结构、属性并使用它们在 sysfs 中创建目录。

我了解到在启动时,内核会检测内存并在 sys/devices/system/memory 下创建目录。作为作业的一部分,我打算更改此目录结构。那么,您能否指出负责创建此特定内存目录的文件和方法?

最佳答案

你不应该直接使用那种功能。您还应该避免使用 kobject(除非您正在接触内核核心)。

通常,sysfs 属性关联到device 结构。因此,当您注册设备时,会创建 sysfs 属性。

看看device.h中的device结构第 689 行。在结构的末尾,您将找到以下字段

const struct attribute_group **groups;

您必须创建自己的属性,将它们插入到属性组中,并在调用 device_register() 之前将您的组分配给您的设备

如果您遵循 device_register() 函数,您将看到它是如何创建关联的 sysfs 属性的

关于linux - linux内核如何创建sysfs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19529018/

相关文章:

linux - 设备树中根节点的模型字段

c - sk_buff 如何指向 sk_buff_head

c++ - 在编译时确定操作系统

linux - 如何在 linux 中向文件夹添加注释并使用鼠标光标查看它们

linux - 反馈两个进程的stdin和stdout

c++ - Epoll_wait 在关闭的文件描述符上返回事件

python - 如何在 Linux shell 脚本或 python 中找出上周六的日期?

linux - 添加链接本地地址

linux - 对发生模式不匹配的文件进行行编号

operating-system - 从逻辑地址到物理地址的转换