標準
標準/拡張機能 |
C/C++ |
依存項目 |
z/OS®UNIX |
両方 |
|
形式
#include <sys/server.h>
int __server_pwu(int fcncode, const char *transclass,
const char *applenv, server_classify_t classify,
int *appldatalen, void **appldata,
struct __srv_fd_list **fdlstruc);
機能説明
__server_pwu() 関数は、ワークロード・マネージャー (WLM) サービスによる作業を管理および処理するための汎用インターフェースを提供します。このサービスで提供される機能には次のものが含まれます。作業要求を WLM 作業
キューに入れ、作業を WLM 作業キューから取得し、作業を別の WLM 作業
サービスに転送し、作業単位 (UOW) を終了し、WLM エンクレーブを削除し、さらに WLM 作業サービスを最新表示します。
サポートされるパラメーターは次のとおりです。
- fcncode
- 要求される関数を指示する、次の 1 つ以上の値が入ります。
- SRV_PUT_NEWWRK
- 新規に作成された WLM エンクレーブの一部として、applenv パラメーターによって識別されるアプリケーション環境サーバー
の作業キューに、新規作業要求を入れることを指示します。この値は、その他のどの fcncode 値とも結合できません。
- SRV_PUT_SUBWRK
- 呼び出しスレッドと関連した WLM エンクレーブの一部として、applenv パラメーターによって識別されるアプリケーション環境サーバー
の作業キューに、新規作業要求を入れることを指示します。この値は、SRV_END_WRK fcncode 値と結合することができます。
- SRV_TRANSFER_WRK
- 呼び出しスレッドにより取得した最後の作業要求を、ターゲット・アプリケーション環境サーバーの作業キューに転送することを
指示します。転送の一部として、呼び出しスレッドがその WLM エンクレーブから分離されます。この値は、その他のどの fcncode 値とも結合できません。
- SRV_GET_WRK
- 新規作業要求を、呼び出しアプリケーション環境サーバーの WLM 作業キュー
から取得することを指示します。また、SRV_GET_WRK fcncode も、呼び出しスレッドが、作業要求の WLM エンクレーブと関連付けられるという結果になります。呼び出しスレッドが、既に、SRV_GET_WRK の __server_pwu() に対する以前の
呼び出しのために、WLM エンクレーブと関連付けられている場合には、取得された作業要求と関連付けられるのみでなく、以前の WLM エンクレーブ
から分離されます。呼び出しスレッドが、thru タスク終了に進むか、あるいはこのプロセスが終了
されるときには、終了タスクまたはプロセスにより所有されている場合、作業要求が終了され、関連した WLM エンクレーブが削除されます。 SRV_PUT_NEWWRK または SRV_TRANSFER_WRK 関数を使用して、作業がキューに
入れられた場合には、SRV_GET_WRK 呼び出し元がエンクレーブを所有します。呼び出し元が、pthread_create (pthread) を介して作成されるスレッドの
場合には、このスレッド・タスクがエンクレーブを所有します。呼び出し元が pthread ではない場合には、プロセスによってエンクレーブが
所有されます。この値は、SRV_END_WRK および SRV_DEL_ENC fcncode 値と結合する
ことができます。
- SRV_REFRESH_WRK
- 呼び出し作業およびキュー・マネージャーによって管理
される、アプリケーション環境と関連したサーバーの更新
を指示します。これによって、すべてのサーバーで、既存の
作業要求が完了されてから、終了されることになります。新規
サーバーは、それから新規作業を処理するために開始されます。この値は、その他のどの fcncode 値とも結合できません。
- SRV_END_WRK
- 呼び出しスレッドを、その WLM エンクレーブから分離するように指示します。この値は、SRV_DEL_ENC、SRV_PUT_SUBWRK、および SRV_GET_WRK fcncode 値
と結合することができます。
- SRV_DEL_ENC
- 呼び出しスレッドと関連した WLM エンクレーブの削除を指示します。この値は、SRV_GET_WRK および SRV_END_WRK fcncode 値と結合する
ことができます。
- SRV_DISCONNECT
- 呼び出しサーバーの WLM への接続を、切断するように指示します。
いったんサーバーが WLM から切断されると、このサービスを使用して、(server_init() 関数の呼び出しによる) 接続されていたアプリケーション環境の要求を処理することができなくなります。SRV_DISCONNECT が作業およびキュー・マネージャーにより実行される場合には、すべての関連サーバー・マネージャーは、暗黙的に WLM への接続を失います。また、関連サーバー・マネージャーはこのサービスを通して要求を処理することもできなくなります。
- SRV_DISCONNECT_COND
- 呼び出し元に、まだ管理中の WLM エンクレーブがそれ以上ない場合のみ、呼び出しサーバーの WLM への接続を、切断するように指示します。作業およびキュー・マネージャーは、まだサーバー・マネージャーで保守されて
いる場合には、依然としてエンクレーブを管理しています。
いったんサーバーが WLM から切断されると、このサービスを使用して、(server_init() 関数の呼び出しによる) 接続されていたアプリケーション環境の要求を処理することができなくなります。SRV_DISCONNECT_COND が作業およびキュー・マネージャーにより
実行される場合には、すべての関連サーバー・マネージャーは、暗黙的に WLM への接続を失います。また、関連サーバー・マネージャーはこのサービスを通して要求を処理することもできなくなります。
- *transclass
- 作業要求と関連付けられるトランザクション・クラスの
名前を表す NULL 終了ストリングを示します。このパラメーターが
有効なのは、SRV_PUT_NEWWRK fcncode パラメーター値
が指定される場合のみです。その他の fcncode パラメーター値では、NULL にする必要があります。文字ストリングの長さは、最高 8 バイトです。
- *applenv
- 作業要求が、そのもとで保守されるアプリケーション環境の名前を
含む NULL 終了ストリングを示します。このパラメーターが有効なのは、SRV_PUT fcncode 値、SRV_TRANSFER_WRK fcncode 値、および SRV_REFRESH_WRK fcncode 値のセットの場合のみです。その他の fcncode パラメーター値では、NULL にする必要があります。文字ストリングの長さは、最高 32 バイトです。
- *classify
- 作業要求マクロについての、種別情報を含む文字ストリングを示します。
- *appldatalen
- SRV_PUT または SRV_TRANSFER fcncode パラメーター値
の 1 つが指定されるとき、これは **appldata パラメーターによって
指定されたアプリケーション・データの長さを含む整数を指すように指定された
パラメーターです。SRV_GET_WRK fcncode 値が指定された場合、これは出力パラメーターです (ここでは、__server_pwu() 関数により、取得した作業要求と関連した
アプリケーション・データの長さが戻されます)。*appldatalen が有効なのは、SRV_PUT、SRV_GET_WRK、または SRV_TRANSFER fcncode パラメーター値の 1 つが指定された
ときのみで、値が指定されない場合には、無視されます。アプリケーション・データでサポートされる最大長は、10 メガバイトです。
- **appldata
- SRV_PUT または SRV_TRANSFER fcncode パラメーター値
の 1 つが指定されるとき、これはアプリケーション・データ
・ストリングを指すパラメーターです。このアプリケーション・データによって、呼び出し元は、要求している特定作業を
固有に識別できます。SRV_GET_WRK fcncode 値が指定された場合、これは出力パラメーターです
(ここでは、__server_pwu() 関数により、取得した作業要求と関連した
アプリケーション・データへのポインターが戻されます)。戻りデータ域は、作業要求を WLM 作業キューに入れる、対応する __server_pwu() 呼び出しで提供されたデータ域の
同一のコピーになります。**appldata が有効なのは、SRV_PUT、SRV_GET_WRK、または SRV_TRANSER fcncode パラメーター値の 1 つが指定された
ときのみで、値が指定されない場合には、無視されます。
- **fdlstruct
- SRV_PUT または SRV_TRANSFER fcncode パラメーター値
の 1 つが指定されたとき、**fdlstruc パラメーターは入力パラメーターで、__srv_fd_list 構造体へのポインターが入ります。__srv_fd_list 構造体には、以下のメンバーが入ります。
int fdcount count of file descriptiors
int flags flag SRV_FDCLOSE
int fd(SRV_FDS) file descriptor list
提供される __srv_fd_list 構造体には、伝搬されるファイル記述子の数が含まれており、このサービスへの呼び出し
によって作成された作業要求を取得するために、server_pwu() を
呼び出すプロセスに伝搬されるファイル記述子のリストが、後に続いています。SRV_FDCLOSE フラグが、__srv_fd_list 構造体のフラグ・フィールドでオンに
なっている場合には、リスト中のファイル記述子すべてが、呼び出しプロセスで
クローズされます。NULL ポインターが指定されると、ファイル記述子は伝搬されません。**fdlstruc パラメーターを使用して、ファイル記述子を伝搬する場合
には、リスト中のファイル記述子すべてが、呼び出し元のプロセス中の有効オープン・
ファイル記述子であり、このサービスの処理中にクローズされていないことを、呼び出し元は確認することが必要です。そうでない場合には、この関数による、指定ファイル記述子の妥当な伝搬は保証
できません。SRV_GET_WRK fcncode パラメーター値が指定された場合、**fdlstruc パラメーターは出力パラメーターです (ここでは、__server_pwu() 関数は、取得した作業要求と関連した __srv_fd_list 構造体への
ポインターを戻します)。戻された __srv_fd_list 構造体には、戻された構造体にファイル記述子の数が入り、作業要求を WLM 作業キューに入れる、対応する __server_pwu() 呼び出し
の __srv_fd_list 構造体で提供されたファイル記述子の呼び出しプロセスの
再マップ・ファイル記述子の値のリストが後に続きます。戻り __srv_fd_list 構造体のフラグ・フィールドは、NULL になります。**fdlstruc パラメーターが有効なのは、SRV_PUT、SRV_TRANSFER、または SRV_GET_WRK fcncode パラメーター値
の 1 つが指定された場合のみです。値が指定されない場合には、無視されます。ファイル記述子のリスト構造でサポートされるファイル記述子の最大数は 64 です。
正常に実行された SRV_PUT_NEWWRK fcncode の __server_pwu() への
呼び出しは、WLM 作業キューに入れる作業要求を作成するのみでなく、作業要求
の取得時に、その作業を実行するための新規 WLM エンクレーブも作成します。対照的に、キュー作業では、SRV_PUT_SUBWRK と SRV_TRANSFER_WRK fcncodes が呼び出しスレッドの既存の WLM エンクレーブの一部である必要があります。
正常に実行された SRV_GET_WRK fcncode の __server_pwu() への
呼び出しは、呼び出し元が、呼び出し元のアプリケーション環境と関連した WLM 作業
キューから作業要求を取得するという結果になるのみでなく、呼び出しスレッドが、取得した作業要求と関連した WLM エンクレーブと関連付けられるという結果にも
なります。
server_pwu 関数の使用には、__server_init() 関数へ呼び出しを正常に発行する
呼び出しアドレス・スペースが必要です。
SRV_PUT_NEWWRK 関数を正常に実行するために、呼び出し元は
次の
managertype パラメーターの組み合わせの 1 つで、__server_init() サービスへの呼び出しを正常に発行している必要があります。
- SRV_WORKMGR + SRV_QUEUEMGR
- SRV_WORKMGR + SRV_QUEUEMGR + SRV_SERVERMGR
SRV_PUT_SUBWRK および SRV_TRANSFER_WRK 関数を正常に実行するために、呼び出し元は、次の
managertype パラメーターの組み合わせの 1 つで、__server_init() サービスへの呼び出しを正常に発行している必要があります。
- SRV_WORKMGR + SRV_QUEUEMGR SRV_SERVERMGR
- SRV_SERVERMGR
SRV_GET_WRK、SRV_END_WRK および SRV_DEL_ENC 関数を正常に実行するために、呼び出し元は次の
managertype パラメーターの組み合わせの 1 つで、__server_init() サービスへの呼び出しを正常に発行している必要があります。
- SRV_WORKMGR + SRV_QUEUEMGR SRV_SERVERMGR
- SRV_SERVERMGR
SRV_REFRESH_WRK 関数を正常に実行するために、呼び出し元は
次の
managertype パラメーターの組み合わせのいずれかで、__server_init() サービスへの呼び出しを正常に発行している必要があります。
- SRV_WORK_MGR + SRV_QUEUE_MGR
- SRV_WORK_MGR + SRV_QUEUE_MGR + SRV_SERVER_MGR
戻り値
正常に実行された場合、__server_pwu() は 0 を戻します。
正常に実行されなかった場合、__server_pwu() は -1 を戻して、errno を次のいずれかの
値に設定します。
- エラー・コード
- 説明
- EAGAIN
- 要求されたサービスは、現在時点で実行できませんでした。__errno2() を使用して、その障害についての理由コードを取得します。
- EFAULT
- このサービスの引数に、呼び出し元にアクセス不能なアドレスが入っていました。
- EINVAL
- managertype パラメーターに正しくない値が入っています。
- EMVSERR
- MVS™ の環境エラーまたは内部エラーが発生しました。__errno2() を使用して、その障害についての正確な理由を取得します。
- EMVSWLMERROR
- WLM サービスで障害が発生しました。__errno2() を使用して、その障害についての WLM サービス理由コードを取得してください。