我想知道/proc/interrupts
是如何更新的?
它是否仅探测到irq
个驱动程序,或者它包含系统中所有可能irqs
的列表?
答案 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
本website简要介绍了其中的一些方法。