2010-02-22 3 views
4

J'ai une extension de noyau basée sur IOKit sous Mac OS X, une sous-classe de IOService. Lorsque ce service est chargé, j'ai besoin de publier des informations d'exécution spécifiques supplémentaires et j'ai besoin qu'il soit accessible depuis l'espace utilisateur sans faire de requêtes IOUserClient spécifiques. Les informations en question sont essentiellement des paires de champs \ valeur et son format est partagé entre la bibliothèque KEXT et sa bibliothèque d'espace utilisateur. Le contenu changera au fil du temps sur certains événements spécifiques dans le service lorsqu'il est actif.Publication des informations de IOKit KEXT sous OS X

Sur Linux, j'aurais accompli cela avec un fichier dans le système de fichiers/proc. Pouvez-vous conseiller une stratégie similaire sur OS X? Peut-être quelque chose en rapport avec IORegistry?

Merci.

Répondre

3

Eh bien, cela s'est avéré assez facile. Votre service IOKit est (éventuellement) hérité de la classe IOService, héritée de IORegistryEntry, qui représente une instance de votre service dans IORegistry et fournit une famille de méthodes setProperty \ getProperty pour ajouter \ modifier \ supprimer vos propres champs Entrée IORegistry pour votre service. IORegistry dans une base de données en mémoire qui est bien sûr accessible par programme à partir de l'espace utilisateur où vous recherchez l'entrée de votre service et lisez les informations qu'il publie.