2013-07-12 2 views
2

Могу ли я использовать Emergency_restart()?Как сбросить систему в беспроводной драйвер?

или Если я использую kill (1, SIGTERM);

мне нужно включить "signal.h", но это, кажется, не работает в беспроводной драйвер

  1. встроенная система Linux
  2. устройство: беспроводная точка доступа
  3. код раздела: беспроводной драйвер
+2

Вы не можете использовать системные вызовы пользовательской земли (например, 'kill') изнутри драйвера ядра. –

ответ

0

Как говорит Базиле, kill() - это системный вызов пользовательского пространства, поэтому вы не можете использовать его из модуля ядра. Это грубый способ выполнить то, что вы пытаетесь сделать в любом случае. Если у вас нет причины использовать emergency_restart() над kernel_restart(), я бы воспользовался последним. Варианты у вас есть в reboot.h.

BTW, это открывает отверстие безопасности в вашей системе. Поскольку драйвер интерпретирует пакет данных, чтобы определить, пришло ли время перезагрузки, ОС не может определить, имеет ли этот источник полномочия для выполнения такого действия в вашей системе. Возможно, вам будет лучше с демоном пространства пользователя, который запускается с соответствующими разрешениями для перезагрузки компьютера и может действовать как агент аутентификации и агент перезагрузки, а не делать это в вашем драйвере.