|
|
|
|
|
Windows関連
スクリーンセーバー作成法
半透明ウインドウの性能
bootfont.bin
キャビネット形式
ウインドウスタイルをいじる
Java製ソフトをServiceに登録する
イベントログにメッセージを出力する
コントロールパネルにアイコンを追加する
Solaris関連
OpenGL
Solaris設定
ディレクトリの読み込み
主筆プラグイン開発
Sun Studio 11
マルチスレッドでの開発
door
音を出す
Blade100の正しい虐め方
パッケージの作成
画像入出力
BMPファイル
ICOファイル
ANIファイル
JPEGファイル
減色アルゴリズム
減色アルゴリズムの並列化
その他アルゴリズムなど
自由軸回転
Base64
文字列操作
CPU利用率の取得
正規表現ライブラリ
メタボールを作る
メタボールを作る2
正規表現とNFA・DFA
C言語の構文解析
マルチスレッド開発の傾向と対策
|
door_create
関数プロトタイプ
int door_create(
void (*server_procedure) (
void *cookie,
char *argp,
size_t arg_size,
door_desc_t *dp,
uint_t n_desc
),
void *cookie,
uint_t attributes
);
必要なヘッダ
<door.h>
必要なライブラリ
-ldoor
解説
door_create関数は、server_procedureに指定された関数を示すdoor記述子を生成して返す。
cookieに指定した値は、server_procedure関数が呼び出されたときに、その関数のcookieの引数に渡される。
server_procedureの他の引数は、door_call関数が呼ばれたときの引数から与えられる。
attributesには、生成するdoorの属性を指定する。
| DOOR_UNREF |
このドアを参照するディスクリプタの数が1になるとき、特別な通知が行われる。この通知が行われる状態になるためには、少なくとも2つ以上のディスクリプタが、同時にこのdoorを参照しなければならない。server_procedureの引数argpには、参照が解放されたときの呼び出しであることを示すDOOR_UNREF_DATAが渡される。参照が解放された時の呼び出しでは、arg_sizeとdpとn_didには0が渡される。参照が解放された時の呼び出しは、door一つにつき一回だけである。
(参照が解放された時つーのは、クライアント側でdoorディスクリプタがcloseされた時つー意味だと思うが。)
|
| DOOR_UNREF_MULTI |
DOOR_UNREFに似ている。このdoorは「参照するディスクリプタの数が一つになった」という通知が、複数回あることを予期している。追加的な参照が行われうる状態になってから、参照が解放された時の通知が行われるまでの間は、door_info関数を使い、DOOR_IS_UNREF属性を調べることによって、当該のdoorが未だに誰からも参照されていないのか否かを調べることが出来る。
(意味分からんかった)
|
| DOOR_PRIVATE |
doorを代表して、サーバスレッドのプールを分離するようにする。サーバスレッドは、door_bindによって使用されるプライベートサーバプールに合併される。 |
| DOOR_REFUSE_DESC |
このdoor記述子に対するdoor_call関数で、(door_call関数の)descriptors引数が指定された場合は、ENOTSUPによって失敗するようにする。このフラグが設定された場合、サーバ手続き(server_procedure)の引数n_descは常に0となる。 |
door_create関数から返されたディスクリプタには、close-on-exec(FD_CLOEXEC) フラグが付けられている。
doorの情報は、door_info関数を使用するすることによって、全てのクライアントから参照することが出来る。そのため、セキュリティ性が求められるアプリケーションでは、door_info関数によってアクセス可能なdoorデータに、セキュアな情報を記録してはいけない。特に、cookieにはセキュアなデータを配置してはいけない。
デフォルトでは、door_call関数によってサーバ手続きが呼び出されたときに、必要に応じてスレッドが生成される。この挙動を変更するには、door_server_createを参照すること。
戻り値
成功した場合は記述子の番号(非負の整数)。
失敗した場合は-1が返され、errnoに値が設定される。
エラー値
EINVAL
attributesに不正な値が指定された。
EMFILE
ファイル開きすぎ。もう開けない。
このページの情報に間違いがあっても、俺は知らんぜ。
<< 「Solarisのdoorについて」に戻る
|
|
|
|