形式
#include <sys/_Elmarm4.h>
arm_error_t arm_bind_thread(
/* [in] */ arm_start_handle_t start_handle,
/* [in] */ arm_int32_t flags,
/* [in] */ arm_buffer4_t *buffer4,
);
機能説明
arm_bind_thread() は、現行スレッドは特定のトランザクションのための処理を実
行しているのであって、他のトランザクションの処理ではないことを示すために使用し
ます。
これにより、eWLM は、各クラスの作業を行っているスレッドのリソース使用状況と
遅延情報を収集することができ、さらに、そのようなクラスに割り当てられたゴール
をスレッドが満たせるようにするために、スレッドに与えられたリソースを調整するこ
とができます。
同じトランザクションに同時にいくつのスレッドでもバインドできます。
ただし、単一スレッドを同時に複数のトランザクションにバインドすることはで
きません。
既にトランザクションにバインドされているスレッドが arm_bind_thread() を
呼び出すと、その呼び出しは実行されず、エラーを示すために負の値を戻します。
arm_bind_thread() を呼び出すスレッドは、そのトランザクションのための処理が
完了したとき、arm_unbind_thread() を呼び出さなければなりません。
(arm_unbind_thread() が呼び出されないと、arm_stop_transaction() が、そのト
ランザクションにバインドされたままになっているすべてのスレッドをアンバインドし
ます。
これは、リカバリーの目的で存在しています。
アプリケーションは、通常処理の一部として arm_unbind_thread() を使用すること
が期待されています。)
- start_handle
- このトランザクションに対する arm_start_transaction() から戻された
ハンドル。
- flags
- 今後の使用のため予約されています。引数は 0 に設定する必要があります。
- buffer4
- 追加データが入っている 1 つ以上のサブバッファーを識別するバッファーへのポインター。
現在は、この関数にサブバッファーは定義されていないので、NULL ポインターを渡
してください。
バッファーが渡されても、eWLM はそれを無視します。
戻り値
正常に実行されると、arm_bind_thread は ARM_RC_SUCCESS を戻します。
失敗した場合、エラーを示す errno と戻りコードが設定されます。考えられるすべての戻りコードのリストについては、
戻りコードを参照してください。
- エラー・コード
- 説明
- EFAULT
- このサービスのパラメーターに、呼び出し元がアクセスできないアドレスが
入っていました。
- EINVAL
- このサービスのパラメーターに、無効な値が入っていました。
- EMVSARMERROR
- ARM エラーが発生しました。
具体的なエラーの戻りコードを参照してください。
- EPERM
- 呼び出し元に適切な特権がありません。戻りコードは ARM_RC_AUTH_ERROR に設定されます。
- EMVSSAF2ERR
- セキュリティー・プロダクトでエラーが発生しました。
戻りコード
以下のリストには、ARM 関数呼び出しにおいて考えられるすべての戻りコードが記載されています。
- 戻りコード
- 説明
- ARM_RC_APP_INPUT
- ユーザーが指定したアプリケーション ID は無効です。
- ARM_RC_APPL_INST_MAX
- プロセスあたりのアプリケーション・インスタンスの最大数を超えています。
- ARM_RC_APPL_INST_NAME
- アプリケーション・インスタンス名が長すぎます。
- ARM_RC_APPL_MAX
- 登録済みアプリケーションの最大数を超えています。
- ARM_RC_APPL_NAME
- アプリケーション名が欠落しているか、長すぎます。
- ARM_RC_AUTH_ERROR
- ユーザーは、ARM 呼び出しを実行することを許可されていません。
- ARM_RC_BLOCKED_MAX
- トランザクションあたりのブロックされたスレッドの最大数を超えています。
- ARM_RC_CORR_BAD_SIZE
- 相関関係子のサイズが無効です。
- ARM_RC_CORR_EFAULT
- 相関関係子のリターン・アドレスが無効です。
- ARM_RC_ENOMEM
- プロセスまたはシステムのメモリーが不足しています。
- ARM_RC_FLAGS_EINVAL
- フラグ値が無効です。
- ARM_RC_GRP_MAX
- 登録済みアプリケーション・グループの最大数を超えています。
- ARM_RC_GRP_NAME
- アプリケーション・グループ名が長すぎます。
- ARM_RC_HANDLE_EFAULT
- ハンドルのリターン・アドレスが無効です。
- ARM_RC_MAXMEM
- ARM サービスの最大メモリー制限を超えています。
- ARM_RC_PARENT_CORR_INVAL
- 親相関関係子が無効です。
- ARM_RC_PARENT_CORR_SZ
- 親相関関係子が小さすぎます。
- ARM_RC_PARENT_CORR_VERSION
- 親相関関係子のバージョンが正しくありません。
- ARM_RC_PROC_VAL_MSMTCH
- プロパティー値がプロパティー名に一致しません。
- ARM_RC_PROP_NAME
- トランザクション・プロパティー名が長すぎます。
- ARM_RC_PROP_NAME_MAX
- ARM 呼び出しに渡されるプロパティー名が多すぎます。
- ARM_RC_PROP_NAME_SUBBUF_MAX
- ARM 呼び出しに渡されるプロパティー名サブバッファーが多すぎます。
- ARM_RC_PROP_VAL
- トランザクション・プロパティー値が長すぎます。
- ARM_RC_PROP_VAL_MAX
- ARM 呼び出しに渡されるプロパティー値が多すぎます。
- ARM_RC_PROP_VAL_SUBBUF_MAX
- ARM 呼び出しに渡されるプロパティー値サブバッファーが多すぎます。
- ARM_RC_TIME_SUBBUF_MAX
- ARM 呼び出しに渡される到着時刻サブバッファーが多すぎます。
- ARM_RC_TRAN_INPUT
- ユーザーが指定したトランザクション・タイプ ID が無効です。
- ARM_RC_TRAN_MAX
- トランザクションの最大数を超えています。
- ARM_RC_TRAN_STATUS_EINVAL
- トランザクションの状況が無効です。
- ARM_RC_TRAN_TYPE_INST_MAX
- プロセスあたりの登録済みトランザクション・タイプ・インスタンスの最大数を超えています。
- ARM_RC_TRAN_TYPE_MAX
- 登録済みトランザクション・タイプの最大数を超えています。
- ARM_RC_TRAN_TYPE_NAME
- トランザクション・タイプ名が欠落しているか、長すぎます。
- ARM_RC_UNKN_APPL_INST
- アプリケーション・インスタンスが見つかりません。
- ARM_RC_UNKN_BLOCKED
- 指定されたトランザクションに対してブロックされたスレッドが無効です。
- ARM_RC_UNKN_PARENT
- 親トランザクションが有効なトランザクションではありません。
- ARM_RC_UNKN_PROC
- 呼び出しプロセスでアプリケーション・インスタンスが登録されませんでした。
- ARM_RC_UNKN_TRAN
- 呼び出しプロセスに対してトランザクションが見つかりませんでした。
- ARM_RC_UNKN_TRANCLASS_INST
- トランザクション・クラス・インスタンスが見つかりません。
- ARM_RC_URI_NAME
- URI 値が長すぎます。
- ARM_RC_URI_SUBBUF_MAX
- ARM 呼び出しに渡される URI 値サブバッファーが多すぎます。
- ARM_RC_VERSION_NAME
- アプリケーション・バージョン名が長すぎます。