В KEXT я слушаю файл, закрывая через vnode или прослушиватель области файла. Для некоторых (очень немногих) файлов мне нужно отправить путь к файлу моего системного демона, который выполняет некоторую обработку (это должно произойти в демонах) и возвращает результат обратно в KEXT. Закрытие вызова файла необходимо заблокировать, пока я не получаю ответ от демона. На основе результата мне нужно выполнить некоторую операцию при закрытом вызове и успешно завершить успешный вызов. Существует много дискуссий по теме, связанной с KEXT, на форуме. Но они не являются окончательными и кажутся очень старыми (2002 год). Это требование может быть обработано FtlSendMessage(...)
Win32 API. Я ищу эквивалент, что на MacЛучший способ связи от KEXT до Daemon и блокировать до тех пор, пока результат не будет возвращен из Daemon
Вот что я смотрел и хочу резюмировать мое понимание:
- Маха сообщение: Обеспечивает очень хороший способ двусторонней связи с использованием отправителя и ответить порты с очередью mechansim. Однако API-интерфейсы машинного сообщения (например,
mach_msg
,mach_port_allocate
,bootstrap_look_up
), как представляется, не являются KPI. Может использоваться mach APImach_msg_send_from_kernel
, но это само по себе не поможет в двунаправленной связи. Правильно ли я понимаю? - IOUserClient: Это, скорее всего, будет связано с передачей из пользовательского пространства в KEXT и последующим обратным вызовом из KEXT. Я не нашел способ инициировать общение с KEXT до демона, а затем ждать результата от демона. Я что-то упускаю?
- Розетки: Это может быть последний вариант, так как мне нужно будет реализовать весь двунаправленный канал связи от KEXT до Daemon.
ioct
l/sysctl
: Я не знаю много о них. Из того, что я прочитал, его не рекомендуется использовать, особенно для двунаправленной связи.- RPC-Mig: Опять же, я не знаю много о них. Выглядит сложнее из того, что я видел. Не уверен, что это рекомендуется.
- KUNCUserNotification: Это, как представляется, просто уведомление пользователя от KEXT. Это не соответствует моему требованию.
Поддерживаемая платформа (10,5 года). Поэтому, глядя на это требование, может ли кто-нибудь предложить и предоставить некоторые указатели на эту тему?
Заранее спасибо.
Вы нашли пример того, как реализовать это с помощью сокетов? – gbdavid