ukey_enable サブルーチン
目的
プロセスでユーザー・キーを使用可能にします。
ライブラリー
標準 C ライブラリー (libc.a)
構文
int ukey_enable (void)
説明
- 64 ビット・カーネルを使用して実行する。 ユーザー・キーは 32 ビット・カーネルではサポートされません。
- ストレージ・キーおよびユーザー・キーをサポートするハードウェアでの実行は、明示的に使用不可にされていません。 デフォルトでは、ユーザー・キーは、プラットフォームでサポートされている場合は有効になっています。 sysconf (_SC_AIX_UKEYS)サブルーチンは、利用可能なユーザー・キーの数を返す。
- マルチスレッドの場合、プロセスは 1: 1 モードなどのシステム・スコープで実行する必要があります。
- Load Levelerでディスパッチされたジョブでは、プロセスをチェックポイントできません。
ユーザー・キーが有効なプロセスのすべてのスレッドは、デフォルトのユーザー・キーであるUKEY_PUBLICに割り当てられたメモリ・ページへの読み取りと書き込みの両方のアクセスのみを許可するアクティブなユーザー・キー・セットで初期設定されます。 個々のスレッドは、ユーザー・キー API を呼び出してユーザー・キー・セットを構成し、アクティブにすることにより、アクティブ・ユーザー・キー・セットを変更することができます。
ユーザーキー入力可能プロセスのシグナルコンテキスト:
ユーザー・キー使用可能プロセスのデフォルトのシグナル・コンテキストは、今後受信されるすべてのシグナルに対して変更されます。 ucontext_t構造体は、中断されたスレッドのアクティブなユーザー・キー・セットを含むように拡張される。 これは、シグナル・ハンドラーに提供されます。
以下のフィールドが設定されます。
ucontext_t.__extctx.__flags |= __EXTCTX_UKEYS
ucontext_t.__extctx.__ukeys[2] = active user-key-set ユーザー・キー拡張コンテキストは VMX コンテキストから独立しており、ユーザー・キー対応のすべてのプロセス用に作成されます。
さらに、ストレージキーの例外が発生した場合、拡張コンテキストでそれを示すために例外タイプフィールドが設定される:
ucontext_t.uc_mcontext.jmp_context.excp_type = EXCEPT_SKEY. 拡張コンテキスト情報の詳細レイアウトは、sys/context.h ヘッダ ー・ファイルを参照してください。
戻り値
成功すると、ukey_enableサブルーチンは利用可能なユーザーキーの数を返す。 そうでない場合は-1を返し、エラーを示すグローバル変数errnoをセットする。
エラー・コード
| 項目 | 説明 |
|---|---|
| ENOSYS | ユーザー・キーはサポートされていません。 |
関連情報
ukey_setjmpサブルーチン。
ukeyset_initサブルーチン。
ukeyset_add_key, ukeyset_remove_key, ukeyset_add_set, ukeyset_remove_setサブルーチン。
ukeyset_activateサブルーチン。
ukeyset_ismemberサブルーチン。
pthread_attr_getukeyset_np または pthread_attr_setukeyset_npサブルーチン。
AIX®ベクトル・プログラミング一般的なプログラミングの概念:プログラムの記述とデバッグ.