Я хотел бы знать, как /proc/interrupts
обновляется?
проверено только irq
драйверов или он содержит список всех возможных irqs
в системе?
Я хотел бы знать, как /proc/interrupts
обновляется?
проверено только irq
драйверов или он содержит список всех возможных irqs
в системе?
Как видно из исходников ядра, оно отображает все возможные irq системы.
В source/fs/proc/interrupts.c:39 инициализируется операция последовательности, чтобы вернуть столько элементов, сколько существует прерываний в системе для /proc/interrupts
.
В source/kernel/irq/proc.c :479 мы видим, что счетчики каждого прерывания извлекаются из глобальных счетчиков через kstat_irqs_cpu(irq, cpu)
.
Это означает, что информация о количестве прерываний обновляется в разных счетчиках, по одному для каждого процессора. Счетчики суммируются при чтении файла proc. Это общий шаблон в ядре. Это предотвращает конкуренцию на глобальном счетчике.
Подробнее о переменных для каждого процессора вы можете прочитать здесь. Подробнее о прерываниях в Linux вы можете узнать здесь.
Все файлы в каталоге /proc являются псевдофайлами, что означает, что в них нет фактических данных.
Когда вы получаете доступ к любому файлу в proc fs, вызываются методы proc, связанные с этим конкретным файлом proc, и методы proc получают доступ к определенным связанным структурам данных ядра и динамически генерируют данные, которые можно читать и отображать. Данные из файла proc обычно используются для отображения информации о состоянии системы или состояния драйвера устройства.
proc fs обычно реализуется как часть драйвера путем добавления proc и уровня seq fs в код драйвера, однако proc также используется ядром для отображения информации о состоянии системы в целом. иерархия или классификация среди файлов proc, они используются редко по сравнению с более новой файловой системой sysfs.
Чтобы узнать, как генерируется информация, вы должны изучить слой proc, реализованный в fs/proc/interrupts.c
.
Этот веб-сайт кратко объясняет некоторые из этих методов.