Pregunta

I tiene una extensión del núcleo basada en IOKit en Mac OS X, una subclase de IOService. Cuando este cargas de servicio necesito publicar información adicional específica de tiempo de ejecución de la misma y que necesito que sea accesible desde el espacio de usuario sin hacer algunas peticiones específicas IOUserClient. La información en cuestión es básicamente de campo \ pares de valor y de formato es compartida entre el kext y de biblioteca de derivador de espacio de usuario. Los contenidos cambian con el tiempo en algunos eventos específicos dentro del servicio cuando está activo.

En Linux i hubiera logrado esto con un archivo en el sistema de archivos / proc. Puede aconsejarle una estrategia similar en OS X? Tal vez algo relacionado con IORegistry?

Gracias.

¿Fue útil?

Solución

Bueno, esto resultó ser bastante fácil. Su servicio IOKit es (eventially) heredado de la clase IOService, que a su vez se hereda de IORegistryEntry, lo que representa un ejemplo de la entrada de su servicio en IORegistry y proporciona una familia de métodos setProperty \ getProperty añadir \ cambio \ eliminar sus propios campos en IORegistry entrada para su servicio.

El IORegistry en una base de datos en memoria que es, por supuesto, mediante programación accesible desde el espacio de usuario al que buscarla para que la entrada de servicio y la información de lectura publicados por ésta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top