ホーム 主筆 その他ソフト その他情報 Syuhitu.org English

Windows関連

スクリーンセーバー作成法

半透明ウインドウの性能

bootfont.bin

キャビネット形式

ウインドウスタイルをいじる

Java製ソフトをServiceに登録する

イベントログにメッセージを出力する

コントロールパネルにアイコンを追加する

スクリプトによる拡張1

スクリプトによる拡張2

ガジェットの作成

大容量メモリ

メモリ搭載量の下限に挑む

スパースファイルにする

表示されるアイコンの種類を調べてみた

メモリマップIOとエラー処理

ファイルを作る順番と速度の関係

Cryptography API: Next Generationを使う

Windows 10のアクセントカラー

iSCSIディスクにバックアップを取る

サーバプロセスを分離して実装する

サーバプロセスを分離して実装する - F#

レジストリに大量に書き込む

Solaris関連

OpenGL

Solaris設定

ディレクトリの読み込み

主筆プラグイン開発

マルチスレッドでの開発

door

音を出す

Blade100の正しい虐め方

パッケージの作成

画像入出力

BMPファイル

ICOファイル

ANIファイル

JPEGファイル

減色アルゴリズム

減色アルゴリズムの並列化

その他アルゴリズムなど

自由軸回転

Base64

文字列操作

CPU利用率の取得

正規表現ライブラリ

メタボールを作る

メタボールを作る2

正規表現とNFA・DFA

C言語の構文解析

液晶ディスプレイを解体してみた

iSCSIの理論と実装

単一フォルダにファイルを沢山作る

USB-HUBのカスケード接続

SafeIntの性能

VHDファイルのフォーマット

USBメモリに書き込み続けてみた

door_create

2006年2月11日公開

関数プロトタイプ

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について」に戻る


連絡先 - サイトマップ - 更新履歴
Copyright (C)  2000 - 2016 nabiki_t All Rights Reserved.