-
Notifications
You must be signed in to change notification settings - Fork 0
door
oraccha edited this page Jan 14, 2013
·
1 revision
SpringやSolarisに実装されている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 記述子を得ることができる.