[ 前のページ ] [ 次のページ ] [ 目次 ] [ DOC Home ]

17 CPU管理プログラミング・インタフェース

17.1 SYS$CPU_TRANSITION

Alphaシステムで,OpenVMS Galaxy構成内の未割り当てのCPUまたは現在のシステムの構成セットのCPU の現在の処理状態を変更します。このサービスは非同期完了します。 同期完了の場合は,$CPU_TRANSITIONWサービスを使用します。

このサービスは64ビット・アドレスを受け付けます。パラメータとビット定義は, 適切なSTARLETライブラリ内の$CSTDEFで解釈されます。

形式

SYS$CPU_TRANSITION tran_code, cpu_id, nodename, node_id, flags, efn, iosb, astadr_64, astprm_64

引数

tran_code

OpenVMSでの使用方法: longword
タイプ: longword (unsigned)
アクセス: read only
メカニズム: by value

ターゲットCPUで開始される状態変更のタイプを指定する識別子。 tran_code引数は次のいずれかの値を格納したロングワードです。

シンボル名 説明
CST$K_CPU_STOP ターゲットCPUはアクティブ・セットから削除され, コンソール・モードになる。現在のパーティションの構成セットに残される。
CST$K_CPU_ MIGRATE ターゲットCPUはローカル・パーティションの構成セットから削除され,node_id に指定されたパーティションの構成セットに追加するように, コンソールに要求が出される。CPUが現在,アクティブ・ セット内にある場合は,最初にCST$K_CPU_STOP関数によって自動的にコンソール・ モードになる。
CST$K_ CPU_START ターゲットCPUはコンソール・モードを終了し, 現在のパーティションのアクティブ・セットに追加される。CPUはすでに構成セットの一部でなければならない。
CST$K_CPU_FAILOVER CPUはシステム障害時に自動的にマイグレードされるデフォルト・ ターゲット・パーティションに割り当てられる。 この割り当ては変更されるまで有効である。割り当てまたはパーティション名を削除するには, 現在のパーティションIDを指定しなければならない。

cpu_id

OpenVMSでの使用方法: longword
タイプ: longword (unsigned)
アクセス: read only
メカニズム: by value

状態が変更されるCPUの識別子。cpu_id引数は,サポートされる各CPU を表すロングワード値であり,0〜SYI$_MAX_CPUS - 1の範囲です。 Galaxyでは,このCPUはローカル・パーティションの構成セットに存在するか, または他のパーティションに割り当てられていない状態でなければなりません。 シンボル値CST$K_ANY_LOCAL_CPUを使用すれば,特定のプロセッサを指定するのではなく, 適切なタイプの使用可能な次のプロセッサを指定できます。

node_id

OpenVMSでの使用方法: longword
タイプ: longword (unsigned)
アクセス: read only
メカニズム: by value

CST$K_CPU_ASSIGN,CST$K_CPU_FAILOVER,CST$K_CPU_MIGRATE遷移におけるターゲットGalaxy パーティションの識別子。node_id引数は,現在のハードウェア・ プラットフォームのコンソールで提供される,サポートされる範囲内のID の値を含むロングワードです。nodenameパラメータが指定されている場合は, node_idは無視されます。

flags

OpenVMSでの使用方法: longword_ mask
タイプ: longword (unsigned)
アクセス: read only
メカニズム: by value

CPU状態遷移に対して選択されたオプション。flags引数はロングワード・ ビット・ベクタであり,各ビットはオプションに対応します。次に示すビットだけを使用できます。 ロングワードの他のビットは予約されており,0 でなければなりません。

各オプション(ビット)にはシンボル名があります。flags引数は, 次のオプションのシンボル名を使用して,論理OR演算を実行することで作成されます。

シンボル名 説明
CST$V_CPU_DEFAULT_CAPABILITIES 状態遷移が完了したときに,CPU のユーザ機能がシステムのデフォルト値に戻される。このオプションが指定されていない場合は,CPU がローカル・パーティション構成セット内にある限り, 変更されたユーザ機能はSTOPとSTARTの状態遷移間で維持される。
CST$V_CPU_ALLOW_ORPHANS システム内の少なくとも1つのスレッドがアクティブ・ セット内のどのCPUでも実行できない場合でも,状態遷移が許可される。

efn

OpenVMSでの使用方法: ef_ number
タイプ: longword (unsigned)
アクセス: read only
メカニズム: by value

状態遷移が完了したときにセットされるイベント・フラグ。efn引数は, イベント・フラグの番号を指定するロングワードです。しかし,このサービスでは下位バイトしか使用されません。

$CPU_TRANSITIONを起動すると,指定したイベント・フラグがクリアされます。 操作が完了すると,イベント・フラグがセットされます。

iosb

OpenVMSでの使用方法: io_status_ area
タイプ: IOSB structure
アクセス: read only
メカニズム: by 32- bit or 64-bit reference

状態遷移操作の最終的な完了状態を返すためのI/O状態領域。 iosb引数は,I/O状態領域の32ビットまたは64ビット仮想アドレスです。I/O 状態領域構造は32バイトの長さであり,その定義は, マクロの場合はSTARLET.MLB内の$IOSBDEFにあり,Cの場合はSYS$STARLET_ C.TLBのファイルIOSBDEF.Hにあります。

$CPU_TRANSITIONを呼び出すと,I/O状態領域がクリアされます。状態遷移操作が完了した後, ブロックは次のように変更されます。

シンボル名 説明
iosb$w_status 最初のワードには戻り条件値が格納され, 操作の最終的な完了状態が示される。
操作中にエラーが発生した場合にだけ, IOSBの2ワード目の最初のビットがセットされる。他のビットは0である。

astadr_64

OpenVMSでの使用方法: ast_ procedure
タイプ: procedure value
アクセス: call without stack unwinding
メカニズム: by 32-bit or 64-bit reference

要求された状態遷移が完了したときに実行されるASTルーチン。astadr_64 引数は,このルーチンの32ビットまたは64ビット仮想アドレスです。 astadr_64引数を指定した場合,ASTルーチンは状態遷移が要求されたアクセス・ モードで実行されます。

astprm_64

OpenVMSでの使用方法: user_arg
タイプ: quadword
アクセス: read only
メカニズム: by value

ASTルーチンに渡されるクォドワードASTパラメータ。

説明

tran_idに指定された状態遷移がターゲットcpu_idに対して要求されます。

アクティブ・セット内に現在含まれているCPUは,次の状態遷移が可能です。

構成セット内のCPUは次のいずれかの状態に遷移できます。

CPUの状態遷移は,OpenVMSスケジューリング・モデルでは2フェーズ操作です。 このサービスは呼び出し側のプロセス・コンテキストで要求を開始し, サービス条件値にセットアップ状態を返します。フェーズ2は非同期的に行われます。 efn引数とiosb引数を使用して,標準の待ちシステム・ サービスで状態遷移の完了を示すことができます。完了の追加通知は, astadr_64に指定したルーチンとastprm_64のユーザ指定パラメータを使用して,OpenVMS AST メカニズムによって行うことができます。

必要な特権

呼び出し側は,SYS$CPU_TRANSITIONを呼び出してCPUの状態を変更するために,CMKRNL 特権が必要です。

関連サービス

$CPU_TRANSITIONW

返される条件値

SS$_NORMAL サービスは正常終了した。
SS$_BADPARAM 引数の値の1 つが不正であるか,または指定されたCPUが構成内に存在しない。
SS$_ACCVIO サービスが1 つ以上の引数で指定された場所にアクセスできない。
SS$_NOCMKRNL 操作を完了するのに必要なCMKRNL 特権が呼び出し側にない。
SS$_ INSFARG 必要な数の引数が指定されていなか,操作が指定されていない。
SS$_TOO_MANY_ ARGS サービスで受け付けられるより多くの引数が指定されている。
SS$_INVCOMPID この構成ではターゲットgNode IDが不正である。
SS$_CPUNOTACT 指定されたCPUが現在のパーティションのアクティブ・ セットの一部でない。
SS$_NOSUCHCPU 指定されたCPUが現在のハードウェア構成に存在しないか, ローカル・パーティションの構成セットに含まれていない。
SS$_CPUSTARTD 指定されたCPUがすでにローカル・アクティブ・セット内に含まれているか, アクティブ・セットに参加しているところである。
SS$_CPUSTOPPING 指定されたCPUがすでにSTOPPED 状態であるか,アクティブ・セットから削除されているところである。

17.2 SYS$CPU_TRANSITIONW

Alphaシステムは,構成セット内の現在のCPUまたはGalaxy構成で割り当てられていないCPU の現在の処理状態を変更します。このサービスは同期的に完了します。 つまり,操作の最終完了状態が認識された後で,呼び出し側に制御が戻されます。

他のすべての点については,$CPU_TRANSITIONWは$CPU_TRANSITIONと同じです。$CPU_TRANSITIONW サービスの他の情報については,本書の$CPU_ TRANSITIONの説明を参照してください。

このサービスは64ビット・アドレスを受け付けます。

形式

SYS$CPU_TRANSITIONW tran_id, cpu_id, nodename, node_id, flags, efn, iosb, astadr_64, astprm_64


[ 前のページ ] [ 次のページ ] [ 目次 ] [ DOC Home ]