ホーム 主筆 その他ソフト その他情報 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_info

2006年2月11日公開

関数プロトタイプ

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


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