我想知道/proc/interrupts是如何更新的?
它是只探测了驱动程序的irq,还是包含系统中所有可能的irqs的列表?
发布于 2013-03-05 18:20:48
正如您在内核的源代码中所看到的,它显示了系统的所有可能的irqs。
在source/fs/proc/interrupts.c:39中,序列操作被初始化为返回与/proc/interrupts系统中存在的中断一样多的元素。
在source/kernel/irq/proc.c:479中,我们可以看到通过kstat_irqs_cpu(irq, cpu)从全局计数器中提取每个中断的计数器。
这意味着中断计数信息会在不同的计数器中更新,每个计数器对应一个cpu。计数器在读取proc文件时求和。这是内核中的一种常见模式。它可以防止全局计数器上的争用。
发布于 2013-03-05 18:44:23
/proc下的所有文件都是伪文件,这意味着它们中没有实际的数据。
当您访问proc fs下的任何文件时,将调用与该特定proc文件链接的proc方法,并且proc方法将访问某些相关的内核数据结构并动态生成可读取和显示的数据。proc文件中的数据通常用于显示系统的状态信息,或设备驱动程序的状态。
proc fs通常被实现为驱动程序的一部分,通过将proc和seq fs层添加到驱动程序代码中,然而,为了在general.Since中显示系统的状态信息,内核也使用proc。在proc文件之间没有一般的层次结构或分类,与较新的sysfs文件系统相比,它们很少使用。
要了解信息是如何生成的,必须研究在fs/proc/interrupts.c中实现的proc层
这篇website简要解释了其中的一些方法。
https://stackoverflow.com/questions/15217793
复制相似问题