4

私は、IOService のサブクラスである Mac OS X に IOKit ベースのカーネル拡張機能を持っています。このサービスが読み込まれると、そこから追加の特定のランタイム情報を公開する必要があり、特定の IOUserClient リクエストを行わずにユーザー空間からアクセスできるようにする必要があります。問題の情報は基本的にフィールドと値のペアであり、その形式は KEXT とそのユーザー空間ラッパー ライブラリの間で共有されます。コンテンツは、アクティブなサービス内の特定のイベントで時間の経過とともに変化します。

Linux では、/proc ファイル システム内のファイルを使用してこれを実現していました。OS X で同様の戦略をアドバイスできますか? 多分IORegistryに関連する何か?

ありがとうございました。

4

1 に答える 1

3

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

もちろん、サービスのエントリを検索し、それによって発行された情報を読み取るユーザー空間からプログラムでアクセスできるメモリ内データベースのIORegistry。

于 2010-02-25T08:04:27.010 に答える