Question

J'ai une extension du noyau basé IOKit sur Mac OS X, une sous-classe de IOService. Lorsque cette charge de service i doivent publier des informations d'exécution supplémentaires spécifiques de celui-ci et je en ai besoin d'être accessible depuis l'espace utilisateur sans faire des demandes de IOUserClient spécifiques. L'information en question est essentiellement sur le terrain paires \ valeur et son format est partagé entre le kext et sa bibliothèque wrapper espace utilisateur. Le contenu changeront au fil du temps sur certains événements spécifiques à l'intérieur du service quand il est actif.

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 lié à IORegistry?

Merci.

Était-ce utile?

La solution

Eh bien, c'est avéré être assez facile. Votre service IOKit est (eventially) héritées de la classe IOService, ce qui est héritée de IORegistryEntry, ce qui représente une instance de l'entrée de votre service dans IORegistry et offre une famille de méthodes setProperty \ getProperty ajouter \ changement \ supprimer vos propres champs IORegistry entrée pour votre service.

Le IORegistry dans une base de données en mémoire qui est bien sûr accessible depuis l'espace programme utilisateur dans lequel vous effectuez une recherche pour vous l'entrée de service et lire les informations publiées par ce dernier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top