问题标签 [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 投票
1 回答
356 浏览

linux-kernel - Linux GPIO 处理

我对 Linux 内核和 GPIO 有一些疑问。我知道在 Linux 中一切都是文件,所以当我做类似的事情时

真的会发生什么?我的意思是 sysfs 是如何处理的?它是否调用 gpiolib 中实现的系统调用?

0 投票
2 回答
831 浏览

linux-kernel - 轮询用户空间中设备的控制寄存器以检查错误

我正在编写代码来记录 PCI 设备上发生的用户空间中的错误(内核已经将它们记录在内核环形缓冲区中)。目前,我面前有两种方法,

  1. 修改内核设备驱动程序以向我的用户空间进程发送中断(使用 eventfd),然后在收到此中断时(使用 select() 或 poll())我可以使用 ioctl 获取详细的错误信息(需要更改设备驱动程序)。这需要更改我想避免的内核代码。

  2. 我的进程以 root 身份运行,因此,我可以使用 sysfs 读取/写入设备的错误状态寄存器。为此,我将不得不不断地轮询寄存器,一旦发生错误,我可以读取状态寄存器,对其进行解码,获取详细的错误信息,然后清除寄存器。

我更倾向于第二种方法,因为它只需要在用户空间中进行更改。

我的问题是:

  1. 第二种方法是否有意义?
  2. 如果是这样,那么这两种方法的优缺点是什么?
  3. 第二种方法的轮询将导致 CPU 周期的浪费。在第一种方法中使用 select() 或 poll() 是否也会导致类似比例的 CPU 周期浪费。

非常感谢您的帮助!:)

0 投票
2 回答
4186 浏览

linux - 一般来说,在 ucLinux 上,ioctl 比写入 /sys 文件系统快吗?

我有一个正在使用的嵌入式系统,它目前使用 sysfs 来控制某些功能。

但是,如果可能的话,我们希望加快某些功能。

我发现这个子系统也支持和 ioctl 接口,但在重写代码之前,我决定搜索看看哪个是更快的接口(在 ucLinux 上):sysfs 或 ioctl。

有没有人足够了解这两种实现,让我大致了解每种实现的开销差异?我正在寻找通用信息,例如“ioctl 更快,因为您已从函数调用中删除了文件层”。或者“它们大致相同,因为 sysfs 有一个非常简单的界面”。

2013 年 10 月 24 日更新:

我目前正在做的具体案例如下:

在 kernel/power/main.c 中,处理此写入的代码如下所示:

这可以通过移动到自定义 ioctl() 来加速,其中处理 ioctl 调用的代码如下所示:

(因此 ioctl() 调用与 sysfs 函数相同的低级函数)。

0 投票
2 回答
510 浏览

memory - Linux 内核中发生的内存交错和内存划分在哪里?

我正在编写有关 Linux 内核中 sysfs 虚拟文件系统的课程作业。作为设置 sysfs 虚拟文件系统的一部分,Linux 内核将物理内存组织成块,并进一步组织到此目录 sys/devices/system/memory 中的部分。在该目录中,内存块将表示为 memory0、meomory1、memory2 等。

在挖掘 Linux 内核之后,我发现内存被分成 128MB 块,然后进一步分成内存部分,并在此处的 C 文件中找到了执行此操作的代码:Memory.c。在上面的 C 文件中,方法 memory_dev_init() 具有将整个内存块拆分并划分为部分的逻辑(或者这就是我所理解的:))。根据我的教授的说法,Linux 中的内存被分成等级,等级包含交错的内存地址,如下所示:

作为我作业的一部分,我想将排名格式更改为这样,以便我可以获得连续的内存块:

所以我只想知道这种内存交错到底发生在哪里,以及现有的排名发生在当前的 Linux 内核中。谁能指出我正确的方向?

0 投票
1 回答
1017 浏览

linux - Linux 中用于了解内存交错信息的命令是什么?

作为课程作业的一部分,我正在研究 Linux 内核,这是我寻求的信息:

在最新的系统中,内存被分成等级,在这些等级下,内存以不连续的方式在不同等级之间交错。这是为了提高处理器访问内存的速度。我想知道Linux中是否有任何命令在执行时会为我们提供有关内存如何划分为等级的任何信息。我尝试使用以下命令

但是上面的命令显示了有关硬件的信息,但没有显示内存是否被交错。谁能告诉我是否有任何命令可以向我显示此类信息?如果这样的命令不存在,能否请您告诉我可以参考代码的哪一部分来实现 Linux 内核中的内存交错?

谢谢你。

0 投票
2 回答
3780 浏览

android - 如何在 sysfs 的文件夹中创建文件夹

我正在尝试为我在 android 中的实现创建一个 sysfs,并坚持在CLASS.

我的要求:

代码:

我在这里粘贴了我的代码,请在这方面帮助我。

0 投票
1 回答
3109 浏览

linux-kernel - GPIO 更改状态时如何更新 sysfs?

假设 gpio X 可以在 sysfs 中作为输入引脚导出,之后将在 /sys/class/gpio/ 中创建一个名为 gpioX 的目录。gpioX/ 包含一些文件,例如表示 gpio X 的当前状态(高或低)的“值”。

当施加到引脚 X 的信号改变其状态(例如从低到高)时(在内核空间中)会发生什么?

我的意思是,在转换之前 gpioX/value 包含“低”,但之后它将包含“高”值。操作系统如何更新此文件?

我认为需要中断机制。是否使用中断机制来更新sysfs?

0 投票
0 回答
394 浏览

linux-kernel - 计算Linux中正在运行的进程的抢占次数

有没有办法从用户空间计算特定 PID 的抢占?我有兴趣衡量一个进程被抢占了多少次。

0 投票
1 回答
3522 浏览

c - /proc/partitions 主要和次要编号,用于检测物理磁盘和分区

我想从输出中区分物理磁盘 ( /dev/sda) 和逻辑磁盘 ( )。/dev/sda1/proc/partitions

  1. 我看到的一种简单方法是检查一些正则表达式模式是否以整数结尾
  2. 正如我所见,我机器上的输出比所有条目的sda价值最小sdaN
  3. 检查是否存在/sys/block/[NAME]所以我将尝试读取/sys/block/sdaN目录(这将失败)和/sys/block/sda(这将成功)

我不知道哪个可靠,还有其他方法吗?

另外,我怎样才能可靠地制作树状结构sda : {sda1, sda2, sda3, sda4, sda4}, sdb : {sdb1}

  1. 就凭它的名字
  2. 按次要号码
  3. 再次调查/sys/block
  4. 按位置(是否确认 sda1 总是在 sda 之后?例如,逻辑分区条目是否总是在物理磁盘条目之后?)
0 投票
1 回答
2432 浏览

linux - 如何从 Linux 内核模块的 sysfs 属性文件中读取字符串?

基本上,我想要一个配置文件,例如“myconfigfile”,其中包含一串字符,例如“abcdefg”。

我想在我的内核模块中读取这个字符串作为一个值。也就是说,我想char*在我的代码中有一个从该文件中获取值“abcdefg”。据我了解,我应该使用 sysfs。以下是我的问题:

  1. 我只是创建文件并将其移动到/sys/module/path/to/my/module目录中吗?
  2. 如果我有可用的文件,我该如何准确读取该值?假设该文件名为“myconfigfile”。我阅读了此文档,但坦率地说,我不明白。