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

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

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

15.1 SYS$SET_SYSTEM_EVENT

Set System Event (システム・イベントの設定)

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 システム動的メモリが不十分なので, サービスを完了できない。

15.2 SYS$CLEAR_SYSTEM_EVENT

Clear System Event (システム・イベントのクリア)

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

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

形式:

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での使用方法: 識別子
タイプ: 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 ]