Использование launchd для загрузки и настройки расширения ядра в OS X

Я пишу расширение сетевого ядра для фильтрации сокетов. Чтобы сделать его настраиваемым, пользовательская программа считывает файл конфигурации и передает информацию в kext через сокет PF_SYSTEM.

Если я хочу, чтобы фильтр сокетов запускался как можно быстрее при запуске системы, как мне организовать запуск?

Моя текущая идея состоит в том, чтобы использовать launchd для запуска небольшой программы инициализации пользовательской среды. Эта программа будет использовать kextload для запуска kext. После этого он будет читать файл конфигурации и общаться с kext через сокет PF_SYSTEM. Выполнив свою работу, он быстро выйдет.

Другим вариантом было бы иметь два элемента launchd, один для kext (с использованием kextload), а другой для чтения файла конфигурации пользовательского пространства. Это позволило бы избежать разветвления, но в остальном было бы идентично. В любом случае, launchd пришлось бы запускать быструю пользовательскую программу, не являющуюся демоном.

Однако launchd, по-видимому, предназначен для запуска реальных демонов, а не для быстрых задач, которые выполняют свою работу и завершаются. документ библиотеки разработчиков говорит:

Важно: если ваш демон слишком быстро завершает работу после запуска, launchd может решить, что произошел сбой. Демоны, которые продолжают это поведение, могут быть приостановлены и не запущены снова при поступлении будущих запросов. Чтобы избежать такого поведения, не выключайте компьютер в течение как минимум 10 секунд после запуска.

Это создает у меня впечатление, что launchd - неправильный способ сделать это. Как организовать запуск? Вся моя идея идет в неправильном направлении?

(В качестве примечания я хочу дать пользователю возможность изменять параметры фильтрации и во время выполнения. Я полагаю, что это можно сделать, просто открывая новое соединение сокета PF_SYSTEM с kext всякий раз, когда необходимы изменения.)


person jjs    schedule 10.05.2011    source источник


Ответы (1)


Я думаю, что это предостережение относится только к демонам, которые запускаются по требованию.

person LaC    schedule 10.05.2011
comment
Спасибо. Если это действительно так, то это отличная новость. Это вы сами узнали или это где-то задокументировано? - person jjs; 10.05.2011