EN JA
RPC_SVC_CALLS(3)
RPC_SVC_CALLS(3) FreeBSD Library Functions Manual RPC_SVC_CALLS(3)

名称

svc_dg_enablecache, svc_exit, svc_fdset, svc_freeargs, svc_getargs, svc_getreq_common, svc_getreq_poll, svc_getreqset, svc_getrpccaller, svc_pollset, svc_run, svc_sendreplyRPC サーバのためのライブラリルーチン

ライブラリ

Standard C Library (libc, -lc)

書式

#include < rpc/rpc.h>

int
svc_dg_enablecache( SVCXPRT *xprt, const unsigned cache_size);

void
svc_exit( void);

bool_t
svc_freeargs( const SVCXPRT *xprt, const xdrproc_t inproc, caddr_t in);

bool_t
svc_getargs( const SVCXPRT *xprt, const xdrproc_t inproc, caddr_t in);

void
svc_getreq_common( const int fd);

void
svc_getreq_poll( struct pollfd *pfdp, const int pollretval);

void
svc_getreqset( fd_set * rdfds);

struct netbuf *
svc_getrpccaller( const SVCXPRT *xprt);

struct cmsgcred *
__svc_getcallercreds( const SVCXPRT *xprt);

struct pollfd svc_pollset[FD_SETSIZE];

void
svc_run( void);

bool_t
svc_sendreply( SVCXPRT *xprt, xdrproc_t outproc, void *out);

解説

これらのルーチンは C 言語プログラムにネットワークの向こう側の他のマシンにプロシージャコールを行うことができる RPC ライブラリの一部です。

これらのルーチンは RPC メカニズムのサーバ側に関連しています。それらのいくつかは、サーバが開始されるとき、 ( svc_run() のような) 他のものが呼び出される間に、サーバ側ディスパッチ関数によって呼び出されます。

ルーチン

SVCXPRT データ構造体の定義に関しては rpc(3) を参照してください。
svc_dg_enablecache()
この関数は cache_size エントリを保持することができるくらい大きい、サービス終点 xprt のための複製した要求キャッシュを割り付けます。いったん有効にされると、キャッシュを無効にする方法はありません。このルーチンは、与えられたサイズで必要なキャッシュの空間の割り付けが成功したなら 0 を返し、そうでなければ 1 を返します。
svc_exit()
この関数は、RPC サーバプロシージャまたは他のプロシージャのどれかで呼び出されるとき、 svc_run() を戻らせます。

現在実装されているように、 svc_exit() は svc_fdset グローバル変数を 0 クリアします。 RPC サーバ活動がレジューム (再開) されるなら、サービスは、 rpc_svc_create(3) 関数の 1 つを通してか、または xprt_register() を使用して、RPC ライブラリで再登録されなければなりません。 svc_exit() 関数は、グローバルな範囲があり、すべての RPC サーバ活動を終わらせます。

fd_set svc_fdset
RPC サーバの読み込みファイル記述子ビットマスクを反映するグローバル変数。それは select(2) システムコールへの引数として適切です。これはサービス実装者が、 svc_run() を呼び出さないなら、関心だけがありますが、むしろそれら自体の非同期イベント処理します。この変数は読み込み専用です (アドレスを select(2)! に渡さない)、けれども、それは svc_getreqset() または任意の作成ルーチンへの呼び出しの後、変更されるかもしれません。
svc_freeargs()
svc_getargs() を使用して引数をサービスプロシージャにデコードするとき、 RPC/XDR システムによって割り付けられたどんなデータも解放する関数マクロ。このルーチンは成功して解放された結果となれば、 TRUE 返し、そうでなければ、 FALSE を返します。
svc_getargs()
RPC サービス転送ハンドル xprt に関連している RPC 要求の引数をデコードする関数マクロ。 in 引数は引数が置かれるアドレスです。 inproc は引数をデコードするために使用される XDR ルーチンです。このルーチンはデコードが成功すれば、 TRUE 返し、そうでなければ、 FALSE を返します。
svc_getreq_common()
このルーチンは、与えられたファイル記述子で要求を取り扱うために呼び出されます。
svc_getreq_poll()
このルーチンは、サービス実装者が、 svc_run() を呼び出さないなら、関心だけがありますが、代わりにカスタム非同期イベント処理を実装します。 RPC 要求がいくつかの RPC ファイル記述子で到着したことを poll(2) が決定するとき、それは呼び出されます。 pollretvalpoll(2) からの返り値で、 pfdppoll(2) が行われた pollfd 構造体の配列です。それは許可された記述子の最大数を含むことができるくらい大きな配列と仮定されます。
svc_getreqset()
このルーチンは、サービス実装者が、 svc_run() を呼び出さないなら、関心だけがありますが、代わりにカスタム非同期イベント処理を実装します。 RPC 要求がいくつかの RPC ファイル記述子で到着したことを poll(2) が決定するとき、それは呼び出されます。 rdfds はファイル記述子ビットマスクが読み込まれた結果です。 rdfds の値に関連しているすべてのファイル記述子のサービスを提供されたとき、ルーチンは返ります。
svc_getrpccaller()
RPC サービス転送ハンドル xprt に関連しているプロシージャの呼び出し側のネットワークアドレスを取得する承認された方法。
__svc_getcallercreds()
警告: このマクロは、 FreeBSD 特有であり、したがって移植可能ではありません。このマクロは、呼び出しているクライアントを識別する、 < sys/socket.h> で定義された cmsgcred 構造体へのポインタを返します。これは、クライアントが AF_LOCAL ソケット上でサーバを呼び出している場合にだけ、動作します。
struct pollfd svc_pollset[FD_SETSIZE];
svc_pollsetsvc_fdset[] から派生された pollfd 構造体の配列です。それは poll(2) システムコールへの引数として適切です。 svc_run() における現在の実装で svc_fdset からの svc_pollset は派生します。 svc_run() を呼び出さず、この配列を使用したいサービス実装者は、かれら自身ででこの派生を実行しなければなりません。
svc_run()
このルーチンは決して返りません。それは、到着する RPC 要求を待って、1 つが到着するとき、 svc_getreq_poll() を使用して適切なサービスプロシージャを呼び出します。通常、このプロシージャは poll(2) システムコールが返るのを待ちます。
svc_sendreply()
リモートプロシージャ呼び出しの結果を送信するために RPC サービスディスパッチルーチンで呼び出されます。 xprt 引数は要求に関連する転送ハンドルです。 outproc は結果をエンコードするために使用される XDR ルーチンで、 out は、結果のアドレスです。このルーチンは成功すれば TRUE を返し、そうでなければ FALSE を返します。
May 3, 1993 FreeBSD