Получить счетчики прерываний, такие как / proc / interrupts, из кода? - PullRequest
1 голос
/ 13 сентября 2010

Я могу упустить очевидное, но как / возможно ли получить счетчики прерываний для определенного прерывания без ручного анализа /proc/interrupts изнутри программы на C / C ++?

Заранее спасибо!

С наилучшими пожеланиями, Мартин

Ответы [ 3 ]

7 голосов
/ 13 сентября 2010

/proc/interrupts и /proc/stat получают свои данные, вызывая функцию ядра kstat_irqs_cpu().Я думаю, что единственный способ прочитать его без открытия файлов в / proc - это написать собственный драйвер ядра, который будет вызывать ту же функцию и возвращать результаты через ioctl () или каким-либо другим способом.

6 голосов
/ 13 сентября 2010

В Linux текстовые файлы в /proc являются каноническим пользовательским контекстным интерфейсом для большей части информации, которую они предоставляют.Хорошо это или плохо, парсинг этого текстового файла - это способ сделать это.

2 голосов
/ 13 сентября 2010

Я провел быструю проверку, и похоже, что эта информация нигде не отражена в каталоге / sys, и нет никаких перечисленных номеров системных вызовов, которые выглядят так, как будто бы они открывают доступ к этой информации, поэтому файл / proc, вероятно, единственныйместо, где он виден.

Вы также должны знать, что формат зависит от архитектуры, а иногда от конфигурации ядра;строки создаются функцией show_interrupts, которая обычно определяется в kernel / irq.c внутри каждого подкаталога архитектуры (например, arch / x86 / kernel / irq.c, arch / s390 / kernel / irq.c).Поэтому вам, вероятно, придется быть очень осторожным с синтаксическим анализом (или поочередно вносить белый список в чек, чтобы анализировать файл только на тех архитектурах, на которых вы его тестировали).

...