Dado que el método xfnts_start utiliza scds_pmf_start() para iniciar el servicio bajo PMF, xfnts_stop emplea scds_pmf_stop() para detenerlo.
La primera llamada en xfnts_stop es a scds_initialize(), que ejecuta ciertas tareas domésticas necesarias (Función scds_initialize() y la página de comando man de scds_initialize(3HA) ofrecen información más detallada).
El método xfnts_stop invoca el método svc_stop(), definido en xfnts.c como sigue:
scds_syslog(LOG_ERR, "Emitir una solicitud de inicio."); 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, "No se ha podido detener HA-XFS."); return (1); } scds_syslog(LOG_INFO, "HA-XFS detenido satisfactoriamente."); return (SCHA_ERR_NOERR); /* Detenido satisfactoriamente */
Observe lo siguiente sobre la llamada de svc_stop() a la función scds_pmf_stop().
El parámetro SCDS_PMF_TYPE_SVC identifica el programa que se va a detener como aplicación de servicio de datos; este método también puede detener un supervisor de fallos u otro tipo de aplicación.
El parámetro SCDS_PMF_SINGLE_INSTANCE identifica la señal.
El parámetro SIGTERM identifica la señal que se va a usar para detener la instancia del recurso. Si la señal no logra detener la instancia, scds_pmf_stop() envía SIGKILL para detenerla y, si esto también falla, retorna un error de tiempo de espera agotado. Consulte la página de comando man scds_pmf_stop(3HA) para obtener más información.
El valor de tiempo de espera es el que indica la propiedad Stop_timeout del recurso.
Antes de salir, el método xfnts_stop invoca scds_close() para reclamar los recursos asignados por scds_initialize(). Consulte Función scds_initialize() y la página de comando man scds_close(3HA) para obtener más detalles.