La méthode de démarrage_détecteur_xfnts utilisant scds_pmf_start() pour démarrer le démon du détecteur sous le gestionnaire de processus, arrêt_détecteur_xfnts utilise scds_pmf_stop() pour l'arrêter.
le premier appel d'arrêt_détecteur_xfnts est destiné à scds_initialize() effectuant les fonctions de gestion interne nécessaires (pour plus de détails, consultez la rubrique Fonction scds_initialize() et la page scds_initialize(3HA) du manuel.)
La méthode d'arrêt_détecteur_xfnts() appelle la méthode mon_stop, définie dans xfnts.c, de la manière suivante :
scds_syslog_debug(DBG_LEVEL_HIGH, "Calling scds_pmf_stop method"); err = scds_pmf_stop(scds_handle, SCDS_PMF_TYPE_MON, SCDS_PMF_SINGLE_INSTANCE, SIGKILL, scds_get_rs_monitor_stop_timeout(scds_handle)); if (err != SCHA_ERR_NOERR) { scds_syslog(LOG_ERR, "Failed to stop fault monitor."); return (1); } scds_syslog(LOG_INFO, "Stopped the fault monitor."); return (SCHA_ERR_NOERR); /* Successfully stopped monitor */ }
Remarquez les points suivants concernant l'appel de svc_mon_stop() destiné à la fonction scds_pmf_stop() :
Le paramètre SCDS_PMF_TYPE_MON identifie le programme à arrêter comme un détecteur de pannes (cette méthode peut également arrêter un service de données ou un autre type d'application).
Le paramètre SCDS_PMF_SINGLE_INSTANCE l'identifie comme une ressource à instance unique.
Le paramètre SIGKILL identifie le signal à utiliser pour arrêter l'instance de la ressource. Si ce signal ne peut pas arrêter l'instance, scds_pmf_stop() renvoie une erreur de dépassement du délai imparti. Reportez-vous à la page scds_pmf_stop(3HA) du manuel pour plus de détails.
La valeur du délai imparti correspond à la propriété Délai_arrêt_détecteur de la ressource.
avant sa fermeture, la méthode d'arrêt_détecteur_xfnts appelle scds_close() pour récupérer les ressources allouées par scds_initialize(). Reportez-vous à la rubrique Fonction scds_initialize() et à la page scds_close(3HA) du manuel pour plus de détails.