问题标签 [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.
c - 我如何读取 sysfs 属性
我如何从用户应用程序中读取 sysfs 属性。它与 cat 命令的内容相似。比如我有一个标签是亮度。如何获得亮度标签的值?因为我需要从我的应用程序中读取 USB 信息,并且我看到它们被导出到 sysfs,如下面的拓扑:
sysfs - 模块参数
我有两个模块,让我称它们module_A
为module_B
.
Module_A
有一个公共参数声明为
我正在寻找一种解决方案来my_param
修改init_module
. module_B
它应该检查参数是否存在,如果存在module_B
应该更新module_A
.
我知道每个加载模块的参数都可以在终端内部访问/sys/module/module_name/parameters/param_name
和修改cat
,但我正在寻找一种编程解决方案。
是否可以inode
用来实现这种行为?
c - Raspberry PI、GPIO 使用 SYSFS 上拉/下拉电阻
刚开始,我想声明我知道 Python 和其他用于在 Raspberry PI 上操作 GPIO 的高级实现。我也一直在使用 WiringPI C API,并且在 Raspbian Jessie 上遇到了问题,即使我没有更改任何代码行,我在 Raspbian Wheezy 上也没有。WiringPI C API 开发人员还表示,他没有立即支持 Raspbian Jessie 的计划,所以我有点像没有桨的小溪。
出于这个原因,我一直在阅读以下关于使用sysfs访问 Raspberry PI GPIO 的教程(以及其他教程),因为这似乎是一种在不使用 WiringPI 且不编写我自己的 GPIO 库的情况下寻址 GPIO 的方法:
http://www.hertaville.com/introduction-to-accessing-the-raspberry-pis-gpio-in-c.html
根据本教程,要将 GPIO17 设置为输入,请将字符串“in”写入文件句柄:
/sys/class/gpio/gpio/17/direction
...然后我可以从以下位置读取 GPIO 输入值:
/sys/class/gpio/gpio17/值
这一切都很好,但我没有选择在我的生产板上重新安装上拉电阻。是否可以使用sysfs设置 Raspberry PI 的内置上拉和下拉电阻?
此外,如果无法通过sysfs设置上拉和下拉电阻,我是否正确假设即使在最新的 Raspbian Jessie 中,唯一的其他方法是直接写入 GPIO 寄存器?即即使在 Raspbian Jessie 中也没有用于 GPIO 编程的官方 C API?
c - 读取 sysfs GPIO 输入引脚(方向为“in”)始终打印一个固定值 (0)
在内核设备驱动程序(内核版本3.10.92)中启用 GPIO 设备支持后,我想通过 GPIO sysfs 读取 GPIO 扩展器的输入引脚的值。导出并将方向设置为“in”后,在读取时,即使在事件发生之后,该值也始终为0,这会将引脚值更改为1。虽然输出方向工作正常,即我可以通过将值更改为0或1来点亮 LED 。
我在 GPIO sysfs 中的 GPIO 扩展器的基地址是 184。因此,要根据 GPIO sysfs 读取引脚号 22 即引脚号 206,我在内核中给出的命令是
echo 206 >/sys/class/gpio/export
echo "in" >/sys/class/gpio/gpio206/direction cat/sys/class/gpio/gpio206/value (
总是给值0)
我正在使用连接到MPC8308微处理器并通过 mpc I2C总线控制的PCA9505 GPIO 扩展器(40 个 I/O 引脚)。
module - 使用哪个文件系统来公开温度传感器的读数/限制
我目前经常遇到一些硬件过热的问题。查看 Linux 内核,我发现目前完全支持热传感器,但是预配置的限制似乎太高了。我目前正在寻找修改内核模块,但我不确定修改它的最佳方法是什么。我想要以下内容:
- 在某处有一个文件,我可以在其中读取当前温度
- 有几个我可以从用户空间使用的文件来修改当前限制
现在我不确定我应该为此使用什么虚拟文件接口。到目前为止,我看到以下选项:
/dev/
通过文件系统公开所有数据,ioctl()
用于修改限制- 在 sysfs 中添加文件
- 在 debugfs 中添加文件
我不确定每种方法的优缺点是什么。到目前为止,我已经查看了 sysfs,似乎这不是正确的方法。传感器的数量与硬件高度相关,我必须添加各种技巧来为每个传感器获取一个文件(或每个传感器一个目录),可能为每个传感器添加另一个 kobject,以便我可以在生成的目录中添加文件。以前,传感器数据似乎可以通过 获得/sys/class/hwmon/hwmon0/device/temp1_input
,但是在那里被删除了。
debugfs 似乎也不是正确的方法,因为我对内核调试不太感兴趣,而是提供了一种更好的方式来配置和读取传感器。
然而,对于如此简单的设置,devfs 似乎有点过头了。
公开传感器数据并通过用户空间配置限制的最佳方式是什么?
linux-device-driver - Linux内核:如何从分区磁盘获取整个磁盘的dev_t?
鉴于磁盘上的分区,我想检索dev_t
整个磁盘的结构。这是给blkext
司机的,比如nvme
.
就像是:
我希望我的界面get_whole_disk_dev_t()
是:
参数dev_t
::part_disk
返回dev_t
::whole_disk
我提出的算法:
dev_t
从即“/dev/nvme1n1p3”获取分区磁盘的路径。我找不到任何 API 来获取路径dev_t
。- 做一些字符串操作来删除“p3”,给出整个磁盘的路径
- 传递整个磁盘的 path_name
blk_lookup_devt
以获取整个磁盘的路径dev_t
。
IEwhole_disk=blk_lookup_devt(path_name,0)
这是正确的方法还是有更好的方法?如果是前者,那么我该如何获取路径dev_t
?
PS:我需要在设备驱动程序中实现它(即在内核上下文中)。在用户空间中,我知道我可以使用udev
API。
filesystems - 如果 /etc/fstab 中没有 sysfs,如何挂载 sysfs?
如果我在 shell 上键入 $mount,它会显示几个挂载点
我在网上搜索,它说我可以通过编辑fatab来设置挂载点。(如 sysfs /sys sysfs noauto 0 0) 但在我的 /etc/fstab 中,没有关于 sysfs 的描述,它只有关于 /dev/sda1 的描述。
那么,我的 linux 是如何理解 sysfs 挂载点的呢?谁安装它?
linux - Qt 5 使用 QFile 和 QDataStream 编写 Linux SysFs 条目
我可以echo 100 > /sys/class/soft_pwm/pwm-35/duty_cycle
从命令行以 root 身份正常运行,但在以 root 身份运行时,我无法让我的 Qt 5 代码执行相同的操作。下面是代码 - 我做错了什么?谢谢。
c - raspberry-gpio (sysfs) 上的 poll()
正如标题所述,我在将一些用户空间中断代码从另一个 armv7 嵌入式 linux 平台移植到 Raspberry Pi 2 Model B 时遇到问题。
我知道wiringPi库(并让它以这种方式工作),但出于评估原因,我想在两个平台上运行尽可能多的相同代码。出于这个原因,我必须手动与 sysfs 交互。
所以,这是相关的代码片段
因此,起作用的是 Pin 的设置:(cat /sys/class/gpio/gpio2/$stuff 与正确的设置相呼应)。只要没有触发器,程序就会正确等待(按预期在 poll() 上)。
在第一个上升沿到来后, poll() 总是立即返回,因此每次都执行我的日志记录功能,而不仅仅是在上升沿。
让我感到困惑的是,完全相同的代码在另一个平台上完全按照预期工作,并且它与 GPIO 的接口相同。
linux - 在 Linux 的 /sys/devices 下创建文件
我想/sys/devices
在 Linux 的目录下创建一个文件。做这个的最好方式是什么?