Because the xfnts_monitor_start method uses scds_pmf_start() to start the monitor daemon under PMF, xfnts_monitor_stop uses scds_pmf_stop()to stop the monitor daemon.
The first call in xfnts_monitor_stop is to scds_initialize(), which performs some necessary house-keeping functions (the scds_initialize() Function and the scds_initialize(3HA) man page contain more detail.
The xfnts_monitor_stop() method calls the mon_stop method, which is defined in xfnts.c as follows.
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); /* Successfully stopped monitor */ }
Note the following about the call in svc_mon_stop() to the scds_pmf_stop() function.
SCDS_PMF_TYPE_MON parameter identifies the program to stop as a fault monitor—this method can also stop a data service or some other type of application.
The SCDS_PMF_SINGLE_INSTANCE parameter identifies this as a single-instance resource.
The SIGKILL parameter identifies the signal to use to stop the resource instance. If this signal fails to stop the instance, scds_pmf_stop() returns with a timeout error. See the scds_pmf_stop(3HA)) man page for details.
The timeout value is that of the Monitor_stop_timeout property of the resource.
Before it exits, the xfnts_monitor_stop method calls scds_close() to reclaim resources allocated by scds_initialize(). See scds_initialize() Function and the scds_close(3HA) man page for details.