我已经开始为我的操作系统类(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/