En KEXT, estoy escuchando el archivo cerrado a través de vnode o el oyente del alcance del archivo. Para ciertos (muy pocos) archivos, debo enviar la ruta del archivo a mi daemon del sistema, lo que hace algo de procesamiento (esto tiene que suceder en daemon) y devuelve el resultado a KEXT. La llamada cercana al archivo debe bloquearse hasta que reciba la respuesta de daemon. De acuerdo con el resultado, necesito alguna operación en la llamada cercana y devolver la llamada cercana exitosamente. Hay mucho debate sobre el tema relacionado con la comunicación KEXT en el foro. Pero no son concluyentes y parece ser muy viejo (año 2002 alrededor). Este requisito puede ser manejado por FtlSendMessage(...)
Win32 API. Busco equivalente de que en MacLa mejor manera de comunicarse de KEXT a Daemon y bloquear hasta que se devuelva el resultado de Daemon
Aquí es lo que he mirado y quiere resumir mi entendimiento:
- mensaje Mach: Proporciona una muy buena forma de comunicación bidireccional utilizando remitente y responder puertos con cola mechansim. Sin embargo, las API de mensajes mach (por ejemplo,
mach_msg
,mach_port_allocate
,bootstrap_look_up
) no parecen ser KPI. Se puede usar la API machmach_msg_send_from_kernel
, pero eso solo no ayudará en la comunicación bidireccional. Es mi entendimiento ¿verdad? - IOUserClient: Esto parece tener más que ver con la comunicación desde el espacio de usuario a KEXT y luego tener algunas devoluciones de llamadas de KEXT. No encontré una forma de iniciar la comunicación de KEXT a daemon y luego esperar el resultado de daemon. ¿Me estoy perdiendo de algo?
- Enchufes: Esta podría ser la última opción, ya que tendría que implementar todo el canal de comunicación bidireccional de KEXT a Daemon.
ioct
l/sysctl
: No sé mucho sobre ellos. Por lo que he leído, no es una opción recomendada especialmente para comunicación bidireccional- RPC-Mig: De nuevo, no sé mucho sobre ellos. Parece complicado por lo que he visto. No estoy seguro si esta es la manera recomendada.
- KUNCUserNotification: Parece que se trata de una notificación al usuario de KEXT. No cumple con mis requisitos.
La plataforma compatible es (10.5 en adelante). Entonces, al observar el requisito, ¿alguien puede sugerir y proporcionar algunos consejos sobre este tema?
Gracias de antemano.
¿Encontró un ejemplo de cómo implementar esto con sockets? – gbdavid