|
|
|
|
|
Windows関連
スクリーンセーバー作成法
半透明ウインドウの性能
bootfont.bin
キャビネット形式
ウインドウスタイルをいじる
Java製ソフトをServiceに登録する
イベントログにメッセージを出力する
コントロールパネルにアイコンを追加する
Solaris関連
OpenGL
Solaris設定
ディレクトリの読み込み
主筆プラグイン開発
Sun Studio 11
マルチスレッドでの開発
door
音を出す
Blade100の正しい虐め方
パッケージの作成
画像入出力
BMPファイル
ICOファイル
ANIファイル
JPEGファイル
減色アルゴリズム
減色アルゴリズムの並列化
その他アルゴリズムなど
自由軸回転
Base64
文字列操作
CPU利用率の取得
正規表現ライブラリ
メタボールを作る
メタボールを作る2
正規表現とNFA・DFA
C言語の構文解析
マルチスレッド開発の傾向と対策
|
door_info
関数プロトタイプ
int door_info(
int d,
struct door_info *info
);
必要なヘッダ
<door.h>
必要なライブラリ
-ldoor
解説
door_info関数は、doorディスクリプタに関する情報を返す。この関数はdに指定されたdoorの情報を取得し、door_info構造体に取得した情報を設定する。
door_info構造体は次に様に定義される。
typedef struct {
pid_t di_target; /* doorサーバのpid */
door_ptr_t di_proc; /* サーバの関数 */
door_ptr_t di_data; /* doorが呼び出される時に使用されるcookie */
door_attr_t di_attributes; /* doorの属性 */
door_id_t di_uniquifier; /* 全door間での一意なID */
} door_info;
di_targetにはdoorサーバのプロセスIDが設定される。また、doorサーバのプロセスが終了していた場合には-1が設定される。
di_attributesには、次の値の組み合わせが設定される。
| DOOR_LOCAL |
doorディスクリプタは、このプロセス内のサービス手続きを参照している。 |
| DOOR_UNREF |
このdoorを参照するディスクリプタが解放される時、それが最後の一つでない場合は、解放されるという通知が来ることを期待している |
| DOOR_UNREF_MULTI |
DOOR_UNREFに似ている。このdoorは、参照が解除された時の通知が複数回来ることを期待している。 |
| DOOR_IS_UNREF |
現在、このdoorを参照しているディスクリプタは一つしか存在しない。 |
| DOOR_REFUSE_DESC |
このdoorは、door_call関数が呼び出された時に、引数にディスクリプタが指定されていた場合は、呼び出しを受け付けない。 |
| DOOR_REVOKED |
このdoorディスクリプタは、無効化されたdoorを参照している。 |
| DOOR_PRIVATE |
このdoorは分離されたサーバスレッドのプールを所有している。 |
di_procとdi_dataメンバは、サーバとクライアントでポインタのデータサイズが異なっていても共同で利用できるようにするため、void*よりもdoor_ptr_tを使用した方が良い。(例えば、クライアントが32ビットでサーバが64ビットという場合などがある。)
各doorはシステム間で一意な番号を持っている。これはdoor_create関数によってdoorが構築されたときに発番される。また、この番号はdi_uniquifierに設定される。
戻り値
成功した場合は0。
失敗した場合は-1が返され、errnoに値が設定される。
エラー値
EFAULT
引数のアドレスが不正なメモリ領域を参照している。
EBADF
dはdoorのディスクリプタではない。
このページの情報に間違いがあっても、俺は知らんぜ。
<< 「Solarisのdoorについて」に戻る
|
|
|
|