Como el método xfnts_start utiliza scds_pmf_start() para iniciar el servicio bajo el control de PMF, xfnts_stop utiliza scds_pmf_stop() para detener el servicio.
La primera llamada de xfnts_stop va dirigida a scds_initialize (), que realiza algunas funciones de mantenimiento necesarias. Para obtener más información, consulte Función scds_initialize() y la página de comando man scds_initialize(3HA).
El método xfnts_stop llama al método svc_stop(), que se define en el archivo xfnts.c, de la siguiente forma:
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 */
Tenga en cuenta los siguientes puntos acerca de la llamada de svc_stop() a la función scds_pmf_stop():
El argumento SCDS_PMF_TYPE_SVC identifica el programa que debe detenerse como aplicación del servicio de datos. Este método también puede detener un supervisor de fallos o cualquier otro tipo de aplicación.
El argumento SCDS_PMF_SINGLE_INSTANCE identifica la señal.
El argumento SIGTERM identifica la señal que se utilizará 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 llama a scds_close() para reclamar los recursos asignados por scds_initialize (). Para obtener más información, consulte Función scds_initialize() y la página de comando man scds_close(3HA).