5

我想知道如何 /proc/interrupts保持最新状态?

是只irq探测了驱动程序还是包含irqs系统中所有可能的驱动程序的列表?

4

2 回答 2

8

正如您在内核源代码中看到的,它显示了系统所有可能的 irq。
source/fs/proc/interrupts.c:39中,一个序列操作被初始化为返回与系统中存在的中断一样多的元素/proc/interrupts

source/kernel/irq/proc.c:479中,我们可以看到每个中断的计数器都是通过kstat_irqs_cpu(irq, cpu).
这意味着中断计数信息在不同的计数器中更新,每个 cpu 一个。计数器在读取 proc 文件时求和。这是内核中的常见模式。它可以防止对全局计数器的争用。

有关 per-cpu 变量的更多信息,您可以在此处阅读。更多关于 linux 中断的信息,你可以在这里找到

于 2013-03-05T10:20:48.323 回答
5

/proc 下的所有文件都是伪文件,这意味着其中不存在实际数据。

当您访问 proc fs 下的任何文件时,将调用与该特定 proc 文件链接的 proc 方法,并且 proc 方法访问某些相关的内核数据结构并动态生成数据,这些数据可以读取和显示。proc 文件中的数据通常用于显示系统的状态信息,或设备驱动程序的状态。

proc fs一般是作为驱动的一部分实现的,在驱动代码中加入proc和seq fs层,不过proc也被内核使用,一般用来显示系统的状态信息。由于没有通用proc 文件之间的层次结构或分类,与较新的 sysfs 文件系统相比,它们很少使用。

要知道信息是如何产生的,你必须研究实现的proc层。fs/proc/interrupts.c

网站简要介绍了其中一些方法。

于 2013-03-05T10:44:22.723 回答