xfnts_monitor_start メソッドは scds_pmf_start() を使用して PMF の制御下でモニターデーモンを起動するので、xfnts_monitor_stop は scds_pmf_stop() を使用してモニターデーモンを停止します。
xfnts_monitor_stop は、 scds_initialize() を最初に呼び出します。これによって、いくつかのハウスキーピング関数が実行されます。詳細については、scds_initialize() 関数と scds_initialize(3HA)のマニュアルページを参照してください。
次に示すように、xfnts_monitor_stop() メソッドは xfnts.c で定義されている mon_stop メソッドを呼び出します。
scds_syslog_debug(DBG_LEVEL_HIGH, "Calling scds_pmf_stop method"); err = scds_pmf_stop(scds_handle, SCDS_PMF_TYPE_MON, SCDS_PMF_SINGLE_INSTANCE, SIGKILL, scds_get_rs_monitor_stop_timeout(scds_handle)); if (err != SCHA_ERR_NOERR) { scds_syslog(LOG_ERR, "Failed to stop fault monitor."); return (1); } scds_syslog(LOG_INFO, "Stopped the fault monitor."); return (SCHA_ERR_NOERR); /* モニターを正常に停止。*/ }
svc_mon_stop() から scds_pmf_stop() 関数を呼び出すときは、次のことに注意してください。
SCDS_PMF_TYPE_MON パラメータには、障害モニターとして停止するプログラムを指定します。このメソッドは他のタイプのアプリケーション (データサービスなど) も停止できます。
SCDS_PMF_SINGLE_INSTANCE パラメータには、これが単一インスタンスのリソースであることを指定します。
SIGKILL パラメータには、リソースインスタンスを停止するのに使用するシグナルを指定します。このシグナルでインスタンスを停止できなかった場合、scds_pmf_stop() はタイムアウトエラーで戻ります。詳細については、scds_pmf_stop(3HA) のマニュアルページを参照してください。
タイムアウト値は、リソースの Monitor_stop_timeout プロパティの値を示します。
xfnts_monitor_stop メソッドは終了する前に scds_close() を呼び出して、scds_initialize() が割り当てたリソースを再利用します。詳細については、scds_initialize() 関数と scds_close(3HA) のマニュアルページを参照してください。