Как убить пользовательские приложения из обработчика IRQ? - PullRequest
2 голосов
/ 17 февраля 2012

Я работаю над встроенной системой Linux, и мне нужно выключить систему при запуске определенного обработчика IRQ.У меня не так много времени (десятки миллисекунд).Я использовал emergency_restart (), но теперь мне нужно выполнить некоторую работу (запись информации о завершении работы на флэш-память), которую нельзя выполнить из контекста прерывания, поскольку драйвер флэш-памяти не будет его поддерживать.хороший способ сделать это?Я бы с удовольствием убил мои приложения из пользовательского пространства, отправив им сигнал, чтобы они могли выполнять флэш-запись.Как мне это сделать?Я полагаю, в качестве альтернативы, у меня может быть высокоприоритетный процесс, ожидающий семафор, который генерирует мое прерывание ... Какие у меня варианты?Заранее спасибо!

1 Ответ

1 голос
/ 17 февраля 2012

Это именно то, для чего нужны сигналы.Если один из существующих сигналов не имеет смысла (см. man 7 signal), используйте один из определяемых пользователем сигналов:

#define SIGUSR1         10      /* User-defined signal 1 (POSIX).  */
#define SIGUSR2         12      /* User-defined signal 2 (POSIX).  */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...