问题标签 [sysfs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
30699 浏览

c - 如何在 Linux 内核 v3.2 中创建一个简单的 sysfs 类属性

我正在学习如何在我的 Linux 模块中使用sysfs,但我很难找到关于这些主题的最新文档。不幸的是,我一直在使用的Linux Device Drivers 3rd Edition书在这方面似乎已经过时了(例如,class_device在当前的 Linux 版本中该结构似乎完全消失了)。

我只是想在我的模块的相应sysfs类下显示一个属性,这将允许我从内核空间读取模块变量的值。

在我的代码中,我创建了一个类,它允许 udev 在/dev/foo为我的模块创建一个设备节点:

当我插入模块时,我会创建一个sysfs类目录,并在/sys/class/bar/foo/处填充一些默认属性。如何创建显示在这个新目录下的属性?

我相信我已经很好地掌握了这些概念——创建属性结构、定义sysfs_ops函数等——我的问题是我不知道要使用哪个特定的内核结构(class_attribute?),也不知道如何使这些属性出现在右侧sysfs目录。

有人会向我指出详细介绍当前 Linux 内核过程的教程或文章吗?

0 投票
1 回答
16059 浏览

linux - 使用 Linux sysfs_notify 调用

我正在尝试在内核驱动程序和用户空间程序之间进行异步通信(我知道这里有很多问题需要类似的信息,但我找不到任何与 sysfs_notify 相关的问题)。

我将在这里留下 Vilhelm 的编辑,但将源代码添加到一个使用 sysfs 的简单驱动程序和一个用户空间程序来轮询它。驱动程序运行良好(我从网上获得了大部分内容;它缺少学分,但是当我回去添加它们时找不到它们)。不幸的是,投票程序不起作用。它总是立即返回成功。有趣的是,如果我在投票前不执行两次读取,revents 成员将设置为 POLLERR | POLLIN 而不仅仅是程序输出中看到的 POLLIN。

程序输出:

root@ubuntu:/home/wmulcahy/demo# ./readhello
触发
属性文件值: 74 (t) [0]
revents[0]: 00000001
revents[1]: 00000001

这是驱动程序:hello.c(你可以看到我从哪里开始......)

这是投票程序:readhello.c

一些即将推出的 sysfs 增强功能

在内部,补丁为系统上的每个 kobject 添加了一个等待队列头;该队列被插入到轮询表中以响应 poll() 调用。然而,sysfs 代码无法知道任何给定 sysfs 属性的值何时发生变化,因此实现可轮询属性的子系统必须显式调用:

谢谢,李

0 投票
1 回答
3130 浏览

android - 如何从 android 应用程序访问 sysfs 条目

有人可以向我解释一下吗how to access a value exposed by sysfs from an android application.

表明我们无法访问的参考是here

但是有一个android 应用程序可以做到这一点。

请解释。

0 投票
1 回答
692 浏览

interface - 何时使用 SysFs 接口

我需要为内核模块提供用户空间 API,其中内核模块使用 I2C 和 SPI 接口与设备交互。我已经实现了内核模块,它为用户空间公开了 ProcFs 接口。我还开发了一个用户空间应用程序来通过 ProcFS 与 KernelModule 进行交互。这一切都很好。

我可以使用 SYSFs 接口代替 procfs 吗?这是正确的做法吗?

0 投票
1 回答
2334 浏览

linux-kernel - 热插拔设备的 sysfs 条目

我已经读过驱动程序核心通过netlink从sysfs发送uevents到udev或一些正在监听它的守护进程,然后在udev识别相应的驱动程序并加载它之后。但是如何创建对应于热插拔设备的 sysfs 条目?.

提前感谢您的回复。

0 投票
2 回答
5731 浏览

linux-kernel - 用户空间如何能够写入 sysfs

最近我正在查看 kobjects 和 sysfs 的内核。

我知道/理解以下内容..

  • 所有内核对象使用地址 > 0x80000000
  • kobjects应该也不例外
  • sysfs 只不过是一个层次结构kobjects(可能包括ksets和其他 k* 的东西..不确定)

鉴于此信息,我不确定我是否完全了解跑步时会发生什么echo ondemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

我可以看到 cpufreq 模块有一个名为的函数store_scaling_governor,它处理对这个“文件”的写入。但是用户模式如何通过这个简单的回显超越内核模式?

0 投票
1 回答
1526 浏览

linux - How to get a parent kobject for a path in sysfs?

How it is possible to get a kobject for, say, a path of /sys/devices, for use as parent kobject for your own sysfs entry ?

0 投票
1 回答
1224 浏览

linux-kernel - sysfs:免费使用 struct device platform_data 字段?

总结:设备驱动模块中的platform_data字段是否可以struct device免费使用?

我正在为我的字符设备驱动程序模块创建一个非常简单的 sysfs 条目,以允许我控制一个内部变量(因为我知道使用ioctl()并且proc不推荐使用文件系统。)我调用class_create()创建一个类,/sys/class/然后device_create()创建一个新的设备条目。然后我调用device_create_file()为驱动程序设置我的加载和存储例程。我想将我的驱动程序锁定在这些例程中。我的驱动程序的主要结构中有一个互斥锁。我可以使用该platform_data字段来存储指向该结构的指针,就像我在模块例程中使用的private_data字段一样,还是保留它?之后它被设置为NULL,所以它看起来不错,但我不确定。struct fileopen()device_create

我想做的是:

所以这将创建/sys/class/myclass/mydev/mydeva可以写入的条目。如果该platform_data字段可用,那么我可以避免使用全局变量。但是,如果它在我下面移动,我的内核充其量只能是 oops 并且可能会恐慌。

0 投票
1 回答
624 浏览

linux - 为什么我们需要 sysfs 目录中的驱动程序属性文件?

我想知道.. sysfs 中的属性文件实际上是什么,.. 为什么我们需要在 sysfs 目录中为某些驱动程序而不是某些驱动程序创建属性文件..

我们什么时候真正需要它?

我已经阅读了 LDD3 中 Linux 设备模型中的属性和其他一些教程 sin 网络。我能够配置它用于从用户空间与设备驱动程序通信......但是当我们可以构建一个用于与硬件通信的应用程序时(通过驱动程序)那为什么我们需要一个额外的属性?

0 投票
2 回答
5027 浏览

linux - linux内核如何创建sysfs?

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

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

我已参考此文档来了解 sysfs 文件系统:[sysfs]:https ://www.kernel.org/doc/Documentation/filesystems/sysfs.txt

但是这个文档只解释了目录结构、目录的创建和读/写属性。我对内核在引导期间如何创建这些目录更感兴趣。我了解以下方法负责在 sysfs 中创建目录。

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

我知道在启动时,内核会检测内存并在 sys/devices/system/memory 下创建目录。我打算在我的作业中更改这个目录结构。那么,能否请您指出负责创建此特定内存目录的文件和方法?