Дамп на стек процессов в Linux

Мне нужно сбросить каждый стек процессов в ядре Linux, когда система зависает.

В настоящее время я пытаюсь реализовать в одном из моих модулей ядра на основе тайм-аута сторожевого таймера. Сторожевой таймер сбрасывается демоном пользователя для каждого временного интервала. Когда система зависает, никто не может сбросить таймер. Следовательно, он истекает и генерирует прерывание. Я написал обработчик прерываний, в котором я должен выгружать стек всех запущенных процессов.

Итак, мой вопрос, как я могу сбросить стек каждого процесса в ядре?

Спасибо венкатеш

1 ответ

show_state() (include/linux/sched.h) сделает это за вас. Кстати, эта функция уже доступна из обработчика sysrq, который вы могли бы использовать, если она включена. Смотрите документацию / sysrq.txt

Кроме того, есть некоторые другие опции отладки ядра, которые вы могли бы включить, чтобы помочь найти вашу проблему. Проверьте меню взлома ядра в make menuconfig. В частности, CONFIG_LOCKUP_DETECTOR ("Обнаружение жестких и программных блокировок" в меню) может быть полезным.

Другие вопросы по тегам