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).