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

17 システム・イベント・プログラミング・インタフェース

特定のシステム・イベントが発生したときに,アプリケーションにそのことを通知するように登録することができます。 たとえば,インスタンスがgalaxy に参加したり,CPUが構成セットに参加したときに,そのことを通知できます。 イベントが登録されると,アプリケーションは登録されたイベントの発生時にどのように応答するかを判断できます。


$SET_SYSTEM_EVENT (Alphaのみ)
システム・イベントの設定

OpenVMSシステム・イベントが発生したときに,それを通知するための要求を設定します。

フォーマット

    SYS$SET_SYSTEM_EVENT   event ,astadr ,astprm ,acmode ,flags
                          ,handle

Cプロトタイプ

    int sys$set_system_event   (unsigned int event, void
                              (*astadr)(__unknown_params), int
                              astprm, unsigned int acmode, unsigned
                              int flags, struct _generic_64 *
                              handle);

引数

event
OpenVMS使用法:  event_code
タイプ:        longword (unsigned)
アクセス:      read only
メカニズム:    by value
ASTが配信されるシステム・イベントのタイプを示すイベント・コード。 event引数は,問題のイベントのタイプを示す値です。

各イベント・タイプにはシンボル名が割り当てられています。$SYSEVTDEF マクロは次のシンボル名を定義します。

シンボル名 説明
SYSEVT$C_ADD_MEMBER 1つ以上のOpenVMSインスタンスがOpenVMS Galaxy 共用コミュニティに参加している。
SYSEVT$C_DEL_MEMBER 1つ以上のOpenVMS インスタンスがOpenVMS Galaxy共用コミュニティから離脱した。
SYSEVT$C_ADD_ACTIVE_CPU 1つ以上のプロセッサがこのOpenVMSインスタンス内でアクティブになった。
SYSEVT$C_DEL_ ACTIVE_ CPU 1つ以上のプロセッサがこのOpenVMSインスタンス内で非アクティブになった。
SYSEVT$C_ADD_ CONFIG_CPU 1つ以上のプロセッサがこのOpenVMSインスタンス内でアクティブになった。
SYSEVT$C_ DEL_CONFIG_CPU 1つ以上のプロセッサがこのOpenVMS インスタンス内で非アクティブになった。

astadr
OpenVMS使用法:  ast_procedure
タイプ:        procedure value
アクセス:      call without stack unwinding
メカニズム:    by 32-bit or 64-bit reference
OpenVMSシステム構成が変更された後,制御を受け取る通知ASTルーチン。

astprm
OpenVMS使用法:  user_arg
タイプ:        quadword
アクセス:      read only
メカニズム:    by value
ASTルーチンに渡されるクォドワードASTパラメータ。

acmode
OpenVMS使用法:  access_mode
タイプ:        longword (unsigned)
アクセス:      read only
メカニズム:    by value
システム・イベントASTが実行されたアクセス・モード。 acmode引数はアクセス・モードを格納したロングワードです。

各アクセス・モードにはシンボル名が設定されています。$PSLDEFマクロは,4 つのアクセス・モードに対して次のシンボルを定義します。

シンボル名 説明
PSL$C_KERNEL カーネル
PSL$C_EXEC エグゼクティブ
PSL$C_SUPER スーパーバイザ
PSL$C_USER ユーザ

指定できるアクセス・モードの最大値は,呼び出しプロセスのアクセス・ モードです。

flags
SYSEVTDEFで定義。

SYSEVT$M_REPEAT_NOTIFY このフラグがセットされている場合は, イベント通知が繰り返される。

handle
OpenVMS使用法:  handle
タイプ:        quadword (unsigned)
アクセス:      read/write
メカニズム:    by reference
クォドワード・アライメントされたイベント・ハンドルの仮想アドレス。

説明

Set System Eventサービスは,システム・イベントが発生したときに通知の要求を設定します。 新しいシステム・イベント通知オブジェクトを作成し, イベントを(新しいまたは既存の)オブジェクトに追加し,(新しいまたは既存の) オブジェクトで通知を有効に設定できます。

指定されたhandleが0の場合は,新しいシステム通知要求オブジェクトが作成され, 新しいオブジェクトのハンドルが返されます。

指定されたeventが0以外の値の場合は,イベントがイベント・セットに追加され, 通知オブジェクトで通知が起動されます。

このサービスは,入力パラメータに有効な要求が指定されているかどうか確認し, 通知オブジェクトを有効にします。通知はASTの配布によって実現されます。AST が配布された後,flagがセットされていない場合は, 別の通知(ASTの配布)が発生する前に,オブジェクトで通知を再び有効にしなければなりません。

次の場合はエラーが返されます。

必要なアクセス権または特権

なし。

必要なクォータ

ASTLM

関連サービス

$CLEAR_SYSTEM_EVENT

戻り値

SS$_NORMAL サービスは正常終了した。
SS$_ACCVIO サービスは,1 つ以上の引数によって指定された場所にアクセスできない。
SS$_BADPARAM 1 つ以上の引数の値が不正である。
SS$_ EXASTLM プロセスが未処理のASTのクォータを超えた。
SS$_INSFMEM システム動的メモリが不十分なので, サービスを完了できない。


$CLEAR_SYSTEM_EVENT (Alphaのみ)
システム・イベントのクリア

SYS$SET_SYSTEM_EVENTを呼び出すことで設定された1つ以上の通知要求を削除します。

Clear Eventでは,ハンドルとイベントを指定できません。これらのパラメータのいずれかとして0 を渡さなければなりません。ハンドルを指定してクリアするか, またはユーザのすべてのイベントをクリアすることを要求できます。

フォーマット

    SYS$CLEAR_SYSTEM_EVENT   [handle] ,[acmode] ,event

Cプロトタイプ

    int sys$clear_system_event   (struct _generic_64 * handle,
                                unsigned int acmode, unsigned int
                                event);

引数

handle
OpenVMS使用法:  identifier
タイプ:        quadword (unsigned)
アクセス:      read only
メカニズム:    by reference
クリアするAST要求を指定します。handle引数は要求を一意に識別し,$SET_SYSTEM_EVENT サービスが呼び出されたときに制御を返します。 アドレスとして0を指定すれば,handle引数は省略できます。

acmode
OpenVMS使用法:  access_mode
タイプ:        longword (unsigned)
アクセス:      read only
メカニズム:    by value
クリアするシステム・イベントのアクセス・モード。acmode 引数はアクセス・ モードを格納したロングワードです。アクセス・モードの値の最大値は, 呼び出しプロセスのアクセス・モードです。

event
OpenVMS使用法:  event_code
タイプ:        longword (unsigned)
アクセス:      read only
メカニズム:    by value
event引数は,クリアするシステム・イベントのタイプを示す値です。SYSEVT$C_ALL_EVENTS を指定すれば,すべてのイベント・タイプをクリアできます。

説明

Clear System Eventサービスは,$SET_SYSTEM_EVENTサービスを呼び出すことで設定された通知オブジェクトまたは1 つ以上のイベント・タイプを削除します。

特定の通知要求をクリアするときは, handle を指定します。アクセス・ モードが acmode に等しいか,またはそれ以上のすべての通知オブジェクトをクリアするときは, ワイルドカードを指定できます。

handle 引数を指定した場合は,呼び出し側のアクセス・モードはクリアされるオブジェクトのアクセス・ モードに等しいか,それより低くなければなりません。

SYSEVT$C_ALL_EVENTSを指定した場合や,オブジェクトに対して有効に設定されているイベント・ セットが空になった場合は,通知オブジェクトが削除されます。

必要なアクセス権または特権

なし。

必要なクォータ

なし。

関連サービス

$SET_SYSTEM_EVENT

戻り値

SS$_NORMAL サービスは正常終了した。
SS$_ACCVIO サービスはハンドルによって指定された場所にアクセスできない。
SS$_BADPARAM 1つ以上の引数の値が不正である。 たとえば,ハンドルが不正である。
SS$_NOSUCHOBJ 指定された説明と一致する要求を見つけることができなかった。


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