Da die xfnts_start-Methode scds_pmf_start() verwendet, um den Dienst unter PMF zu starten, verwendet die xfnts_stop-Methode scds_pmf_stop() zum Stoppen des Dienstes.
Der erste Aufruf in xfnts_stop erfolgt an scds_initialize(), um einige erforderliche Systemverwaltungs-Funktionen auszuführen (weitere Einzelheiten finden Sie unter scds_initialize()-Funktion und in der Online-Dokumentation unter scds_initialize(3HA)).
Die xfnts_stop-Methode ruft die in xfnts.c definierte svc_stop()-Methode folgendermaßen auf.
scds_syslog(LOG_ERR, "Stop-Anforderung wird ausgegeben.");
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,
"HA-XFS konnte nicht gestoppt werden.");
return (1);
}
scds_syslog(LOG_INFO,
"HA-XFS erfolgreich gestoppt.");
return (SCHA_ERR_NOERR); /* Erfolgreich gestoppt */
Bezüglich des Aufrufs in svc_stop() an die scds_pmf_stop()-Funktion ist Folgendes zu beachten.
Der Parameter SCDS_PMF_TYPE_SVC identifiziert das zu stoppende Programm als Datendienstanwendung — mit dieser Methode kann auch ein Fehler-Monitor oder ein anderer Anwendungstyp gestoppt werden.
Der Parameter SCDS_PMF_SINGLE_INSTANCE identifiziert das Signal.
Der SIGTERM-Parameter identifiziert das Signal, mit dem die Ressourceninstanz gestoppt werden soll. Wenn dieses Signal die Instanz nicht stoppen kann, sendet scds_pmf_stop() das SIGKILL-Signal, um die Instanz zu stoppen. Wenn dieses Signal ebenfalls fehlschlägt, wird ein Zeitüberschreitungsfehler zurückgegeben. Weitere Einzelheiten finden Sie in der Online-Dokumentation unter scds_pmf_stop(3HA).
Der Zeitüberschreitungswert ist der Wert der Stop_timeout-Eigenschaft der Ressource.
Vor der Beendigung ruft die xfnts_stop-Methode scds_close() auf, um die von scds_initialize() zugewiesenen Ressourcen zurückzufordern. Weitere Einzelheiten finden Sie unter scds_initialize()-Funktion und in der Online-Dokumentation unter scds_close(3HA).