由於 xfnts_start 方法使用 scds_pmf_start() 來啟動 PMF 下的服務,因此 xfnts_stop 將使用 scds_pmf_stop() 來停止服務。
xfnts_stop 中的第一個呼叫是呼叫 scds_initialize(),其可執行某些必需的事務性工作函數。scds_initialize() 函數和 scds_initialize(3HA) 線上手冊包含更多資訊。
xfnts_stop 方法呼叫 svc_stop() 方法 (在 xfnts.c 檔案中定義),如下所示︰
scds_syslog(LOG_ERR, "Issuing a stop request.");
err = scds_pmf_stop(scds_handle,
SCDS_PMF_TYPE_SVC, SCDS_PMF_SINGLE_INSTANCE, SIGTERM,
scds_get_rs_stop_timeout(scds_handle));
if (err != SCHA_ERR_NOERR) {
scds_syslog(LOG_ERR,
"Failed to stop HA-XFS.");
return (1);
}
scds_syslog(LOG_INFO,
"Successfully stopped HA-XFS.");
return (SCHA_ERR_NOERR); /* Successfully stopped */
請注意以下關於 svc_stop() 中對 scds_pmf_stop() 函數呼叫的幾點內容︰
SCDS_PMF_TYPE_SVC 引數將要停止的程式識別為資料服務應用程式。此方法也可停止故障監視器或某些其他應用程式類型。
SCDS_PMF_SINGLE_INSTANCE 引數識別訊號。
SIGTERM 引數識別要用來停止資源實例的訊號。如果此訊號無法停止實例,scds_pmf_stop() 將發送 SIGKILL 來停止該實例,如果失敗,它將傳回逾時錯誤。請參閱 scds_pmf_stop(3HA) 線上手冊,以取得詳細資訊。
逾時值為資源之 Stop_timeout 特性的值。
結束之前,xfnts_stop 方法將呼叫 scds_close(),以收回由 scds_initialize() 配置的資源。scds_initialize() 函數 和 scds_close(3HA) 線上手冊包含更多資訊。