/ proc / interrupts如何更新?

时间:2013-03-05 07:07:22

标签: c linux linux-kernel irq

我想知道/proc/interrupts是如何更新的?

它是否仅探测到irq个驱动程序,或者它包含系统中所有可能irqs的列表?

2 个答案:

答案 0 :(得分:6)

正如您在内核源代码中所看到的,它显示了系统的所有可能的irq。 在source/fs/proc/interrupts.c:11中,我们可以看到/proc/interrupts具有与系统中存在的中断一样多的行。 在source/kernel/irq/proc.c:418中,我们可以看到每个中断的计数器都是通过kstat_irqs_cpu(irq, cpu)从全局计数器中提取的。因此,信息在不同的计数器中更新,每个cpu一个,并在读取proc文件时得到总和。 有关per-cpu变量的更多信息,请阅读here。有关Linux中断的更多信息,您可以获得here

答案 1 :(得分:5)

/ proc下的所有文件都是伪文件,这意味着它们中没有实际数据。

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

proc fs通常作为驱动程序的一部分实现,通过将proc和seq fs层添加到驱动程序代码中,但是内核也使用proc来显示系统的状态信息。 proc文件中没有通用的层次结构或分类,与较新的sysfs文件系统相比,很少使用它们。

要了解如何生成信息,您必须研究在fs/proc/interrupts.c

中实现的proc层

website简要介绍了其中的一些方法。