質問

私は、Mac OS X、IOServiceのサブクラスにIOKitのベースのカーネル拡張を持っています。場合は、このサービスの負荷が私はそれから追加特定のランタイム情報を公開する必要があると私はそれがいくつかの特定のIOUserClient要求をすることなく、ユーザ空間からアクセスできるようにする必要があります。問題の情報は基本的には、フィールド\値のペアで、それのフォーマットはKEXT、それのユーザ空間のラッパーのライブラリーの間で共有されます。それがアクティブなときの内容は、サービス内のいくつかの特定のイベントに時間の経過とともに変化します。

Linuxの私は、/ procファイルシステム内のファイルでこれを達成しているだろう。あなたはOS X上で同様の戦略を助言することはできますか? IORegistryに関連たぶん何か?

ありがとうございます。

役に立ちましたか?

解決

まあ、これは非常に簡単であることが判明しました。 あなたのIOKitのサービスは、(eventially)IORegistryであなたのサービスのエントリのインスタンスを表し、\変更を追加するのsetProperty \のgetPropertyメソッドのファミリを提供して順番にIORegistryEntryから継承されIOServiceのクラス、から継承されIORegistryで独自のフィールドを削除\あなたのサービスのためのエントリ。

あなたはあなたのサービスのエントリのためにそれを検索し、それによって公開されている情報をお読みユーザ空間から、もちろん、プログラムでアクセス可能であるインメモリデータベースでIORegistry。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top