arm_bind_thread() - 特定のトランザクションへの現行スレッドのバインド

標準

標準/拡張機能 C/C++ 依存項目
両方  

形式

#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
アプリケーション・バージョン名が長すぎます。

関連情報