spc.h ファイル
目的
システム・リソース・コントローラー (SRC) サブルーチンによって提供される外部インターフェースを定義します。
説明
/usr/include/spc.h ファイルは、SRC サブルーチンを呼び出すときに使用されるデータ構造とシンボリック定数を定義します。 ソケットまたはメッセージ・キューを介して SRC によって制御されるすべてのサブシステムに、このヘッダー・ファイルを組み込む必要があります。
spc.h ファイルの scrreq データ構造は、 srcmstr デーモンによってサブシステムに送信される要求の形式を定義します。 このフォーマットは、 SRCMSTR デーモンに要求を送信する SRC サブルーチンによっても使用されます。
SRCREQ データ構造には、以下のフィールドが含まれます。
| 項目 | 説明 |
|---|---|
| mtype | メッセージ・キューのメッセージ・タイプ。 このフィールドは、メッセージ待ち行列サブシステムの場合にのみ組み込む必要があります。 プログラムを生成するには、 -DSRCBYQUEUE フラグを指定してプログラムをコンパイルする必要があります。mtype設定します。 |
| srchdr | SRC サブシステムとの間で送受信されるすべてのパケットに組み込む必要がある SRC ヘッダー。 |
| subreq | SRC サブシステムによって処理される要求。 |
SRCREQ データ構造内の SRCHDR データ構造には、要求に応答するために必要な戻りアドレスが含まれています。 SRCRQ サブルーチンを使用して、この情報を要求から抽出することができます。 SRCHDR データ構造は、サブシステムによって戻される応答構造の一部でもあります。
SRCHDR データ構造には、以下のフィールドが含まれます。
| 項目 | 説明 |
|---|---|
| retaddr | リターン・アドレス |
| dversion | SRC パケット・バージョン。 |
| cont | 継続標識。 可能な値は次のとおりです。
|
サブ要求 データ構造には、サブシステムによって処理される要求が含まれます。 この同じ構造は、サブシステムに要求を送信するために SRCSRQT サブルーチンを呼び出すときに使用されます。 SRCSRQT サブルーチンは、必要な SRCHDR 構造体をフォーマットします。 要求は SRCMSTR デーモンによって処理され、サブシステムに渡されます。
サブ要求 データ構造には、以下のフィールドが含まれます。
| 項目 | 説明 |
|---|---|
| object | アクションを実行するオブジェクトを定義します。 可能な値は、 サブシステム 定数またはサブサーバー・コード・ポイントのいずれかです。 オブジェクトがサブシステムの場合、このフィールドの値は、 spc.h ファイルに定義されている SUBSYSTEM 定数です。 objnameフィールドにヌル値またはサブシステム名のいずれかが入っています。 オブジェクトがサブサーバーの場合は、objectフィールド値は、サブサーバー・オブジェクト定義からのコード・ポイントです。 objnameフィールドはサブシステム定義です。 このobjnameフィールドは、ヌル、サブサーバー名、またはサブサーバー・プロセス ID にすることができます。 サブサーバーのオブジェクト値は、サブシステム用に予約されている値と等しくすることはできません。 |
| action | 実行する SRC アクション。 表示されるタイプは次の通りです。
値 0 から 255 は、SRC が使用するために予約されています。 |
| parm1 | アクションに関連付けられた変数を示すことにより、SRC アクション・タイプを変更します。 このフィールドは、アクションごとに異なる方法で使用されます。 |
| parm2 | アクションに関連付けられた変数を示すことにより、SRC アクション・タイプを変更します。 このフィールドは、アクションごとに異なる方法で使用されます。 |
| objname | 要求が適用されるオブジェクトの名前。 これは、サブシステム名、サブサーバー・オブジェクト、またはサブサーバー・プロセス ID のいずれかです。 |
spc.h ファイルの srcrep および statrep 構造体は、サブシステムによって戻される応答のフォーマットを定義します。 詳しくは、 SRCSRP サブルーチンを参照してください。
SRCREP データ構造は、開始、停止、リフレッシュ、およびトレース要求に対する応答に使用する必要があります。 以下のフィールドが含まれています。
| 項目 | 説明 |
|---|---|
| srchdr | SRC 要求/応答 (SRCHDR) ヘッダーを指定します。 |
| svrreply | 以下のフィールドを含む応答構造体。 |
| rtncode | 要求に対するサブシステム応答。 この応答は、エラーまたはサブシステム固有のメッセージでは否定的なものです。 |
| objtype | オブジェクト・タイプ。 これは次のいずれかになります。
|
| objtext | テキスト記述。 |
| objname | オブジェクトの名前 (subsystem/subserver)。 |
| rtnmsg | サブシステム固有メッセージ。 |
ステータス担当者 データ構造は、状況要求に対する応答に使用されます。 以下のフィールドが含まれています。
| 項目 | 説明 |
|---|---|
| srchdr | SRC 要求/応答 (SRCHDR) ヘッダーを指定します。 |
| statcode | 以下のフィールドを含む状況構造体。 これらの構造の配列が存在する可能性があります。 この構造体には以下のフィールドがあります。 |
| objtype | オブジェクト・タイプ。 これは次のいずれかになります。
|
| status | 状況コード このフィールドで使用できるシンボリック定数については、 spc.h ファイルを参照してください。 |
| objtext | テキスト記述。 |
| objname | この応答が属するオブジェクト (サブシステム/サブサーバー) の名前。 |
spc.h ファイルは、 srcmstr デーモンとの通信に役立つ以下の定数も定義します。
| 項目 | 説明 |
|---|---|
| SRCNAMESZ (R) | SRC オブジェクト名の最大長 (NULL 終止符を含めて、30 バイト)。 |
| SRCPKTMAX | 最大パケット・サイズ (8192 バイト)。 |
また、SRC オブジェクト (サブシステムおよびサブサーバーを含む) を管理するための SRC サブルーチンもあります。 spc.h ファイルは、オブジェクト属性を定義するときに役立つ特定のシンボリック定数を定義します。 以下の SRC オブジェクト記述子は、 /usr/include/sys/srcobj.h ファイルに定義されています。
| 項目 | 説明 |
|---|---|
| Respawn アクション: |
RESPAWN=1
ONCE=2
| 項目 | 説明 |
|---|---|
| 連絡先オプション: |
SRCIPC=1
SRCSIGNAL=2
SRCSOCKET=3
| 項目 | 説明 |
|---|---|
| 1 つのサブシステムの複数インスタンスが許可されます。 |
SRCYES=1
SRCNO=0
| 項目 | 説明 |
|---|---|
| 特定の条件下でのサブシステム状況の表示: |
SRCYES=1
SRCNO=0
| 項目 | 説明 |
|---|---|
| デフォルトの制限時間: |
TIMELIMIT=20(秒)
spc.h ファイルには、 /usr/include/srcerrno.h ファイルも含まれています。このファイルには、SRC ライブラリー・サブルーチンによって戻されるエラーのシンボリック定数が入っています。 ソース・エラー・メッセージ サブルーチンを使用して、対応するエラー・メッセージを検索することができます。
SRC 要求構造の例
以下のプログラムの抜粋は、SRC 要求 (SRCREQ) 構造体の例です。
struct srcreq
{
long mtype; /*Contains the message type in the IPC buffer*/
/*This field is included if IPC is used and a
message queue is expected*/ struct srchdr srchdr; /*src header table entry - defined below*/
struct subreq subreq; /*the request passed to the subsystem*/
}; struct srchdr /*srchdr structure is used by SRC routines*/
/*subsystems are not responsible for setting \
this*/
{
struct sockaddr_un retaddr;
short dversion; /*the version of the data format*/
short cont; /*used to indicate message is continued*/
}; struct subreq
{
short object; /*object to act on*/
short action; /*action START, STOP, STATUS,TRACE,REFRESH*/
short parm1; /* */
short parm2; /* */
char objname[SRCNAMES]; /*object name*/
};