RPC プログラムは、次の構文を使用して宣言します。
program-definition:
"program" program-ident "{"
version-list
"}" "=" value;
version-list:
version ";"
version ";" version-list
version:
"version" version-ident "{"
procedure-list
"}" "=" value;
procedure-list:
procedure ";"
procedure ";" procedure-list
procedure:
type-ident procedure-ident "(" type-ident ")" "=" value;
-N オプションを指定すると、rpcgen は次の構文も認識します。
procedure:
type-ident procedure-ident "(" type-ident-list ")" "=" value;
type-ident-list:
type-ident
type-ident "," type-ident-list
たとえば以下のようになります。
/*
* time.x: 時間を取得するか、または設定してください。
* 時間は、1970 年 1 月 1 日 0:00 から経過した秒数で表されます。
*/
program TIMEPROG {
version TIMEVERS {
unsigned int TIMEGET(void) = 1;
void TIMESET(unsigned) = 2;
} = 1;
} = 0x20000044;
void 引き数型は、引数が渡されないことを意味していることに注意してください。
このファイルは、出力ヘッダファイルの、以下の #define 文にコンパイルされます。
#define TIMEPROG 0x20000044 #define TIMEVERS 1 #define TIMEGET 1 #define TIMESET 2