Skip to content
oraccha edited this page Jan 14, 2013 · 1 revision

SpringSolarisに実装されているRPC/IPCの一種.

  • [http://www.rampant.org/doors/ Doors/Linux] . Linux 上での実装も存在する.

RPCのように,サーバプロセスがエクスポートした関数をクライアントプロセスから呼び出す仕組みが door である. {{{ // サーバプロセス main() door_create(function, ...); // door を作成する.

function() : door_return(); // door 関数から戻る

// クライアントプロセス main() door_call(); // door 記述子を利用して door 関数を呼び出す. }}}

door_create した時点で door 関数を実行するためのサーバスレッドが作成され,sleep 状態でクライアントプロセスからの呼出しを待つ.クライアントプロセスにて door_call が実行されるとサーバスレッドにコンテキストスイッチして door 関数が実行される.

サーバプロセスからクライアントプロセスへの door 記述子の受渡しについて補足しておく. サーバプロセスは door_create によって得られた door 記述子を fattach を使ってファイルパス名にバインドする(namefs 疑似ファイルシステムの機能).クライアントプロセスはそのファイルパス名を open することで door 記述子を得ることができる.

Clone this wiki locally