Articles of sysfs

从内核模块创buildsysfs条目

我想传递一个string> 1024个字符到我的模块(文件系统)。 由于内核参数限制为1024个字符, 有人build议使用sysfs来代替。 我试图在我的super.c类中包含这个例子,在我的模块的sysfs中创build一个string'filename'和string'code'条目。 static decl_subsys(myfs, NULL, NULL); struct myfs_attr { struct attribute attr; char *value; }; static struct myfs_attr fname = { .attr.name="filename", .attr.owner = THIS_MODULE, .attr.mode = 0644, .value = "/my/test/path", }; static struct myfs_attr code = { .attr.name="code", .attr.owner = THIS_MODULE, .attr.mode = 0644, .value = "0101", }; 编译我的模块时,我得到了很多错误(第41行是decl_subsys): fs/myfs/super.c:41:26: error: […]

Linux内核如何创buildsysfs?

我已经开始研究我的操作系统课程的Linux内核代码。 在这我对sys文件系统(sysfs)感兴趣。 我有兴趣找出何时以及如何创buildsysfs? linux内核代码中的哪些文件生成这个文件系统? 我在我的系统上安装了linux内核,并已经开始通过代码进行debugging。 我已经提到了这个文件来理解sysfs文件系统:[sysfs]: https : //www.kernel.org/doc/Documentation/filesystems/sysfs.txt 但是这个文档只解释目录结构,目录的创build和读/写属性。 我更感兴趣的是内核如何在启动时创build这些目录。 我明白,以下方法负责在sysfs中创build目录。 int sysfs_create_file(struct kobject *kobj, struct attribute *attr); 这个函数接受kboject的结构,属性并使用它们在sysfs中创build目录。 我知道,在启动时,内核检测到内存,并在sys / devices / system / memory下创build目录。 我打算改变这个目录结构作为我的作业的一部分。 那么,请你指点一下负责创build这个特定内存目录的文件和方法吗?

使用Linux sysfs_notify调用

我试图在内核驱动程序和用户空间程序之间进行asynchronous通信(我知道这里有很多问题需要类似的信息,但是我找不到任何与sysfs_notify有关的问题)。 我在这里离开Vilhelm的编辑,但是将源代码添加到使用sysfs的简单驱动程序和用户空间程序来轮询它。 司机工作正常(我从网上获得了大部分,它是缺less信用,但我回去添加他们时找不到他们)。 不幸的是,投票程序不起作用。 它总是立即返回成功。 有趣的是,如果我在调查之前没有执行两次读取,则revents成员将设置为POLLERR | POLLIN而不是像在程序输出中看到的POLLIN。 节目输出: root @ ubuntu:/ home / wmulcahy / demo#./readhello 触发 属性文件值:74(t)[0] revents [0]:00000001 revents [1]:00000001 这里是驱动程序:hello.c(你可以看到我从哪里开始…) #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/slab.h> struct my_attr { struct attribute attr; int value; }; static struct my_attr notify = { .attr.name="notify", .attr.mode = 0644, .value = […]