Because the xfnts_start method uses scds_pmf_start to start the service under PMF, xfnts_stop uses scds_pmf_stop to stop the service.
The first call in xfnts_stop is to scds_initialize, which performs some necessary house-keeping functions (see "The scds_initialize Call" and the scds_initialize(3HA) man page for details.
The xfnts_stop method calls the svc_stop method, which is defined in xfnts.c as follows.
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 */
Note the following about the call in svc_stop to the scds_pmf_stop function.
SCDS_PMF_TYPE_SVC parameter identifies the program to stop as a data service application--this method can also stop a fault monitor or some other type of application.
The SCDS_PMF_SINGLE_INSTANCE parameter identifies the signal.
The SIGTERM parameter identifies the signal to use to stop the resource instance. If this signal fails to stop the instance, scds_pmf_stop sends SIGKILL to stop the instance, and if that fails, returns with a timeout error. See the scds_pmf_stop(3HA) man page for details.
The timeout value is that of the Stop_timeout property of the resource.
Before it exits, the xfnts_stop method calls scds_close to reclaim resources allocated by scds_initialize. See "The scds_initialize Call" and the scds_close(3HA) man page for details.