Le RGM appelle la méthode Monitor_start sur un noeud pour démarrer le détecteur de pannes après le démarrage d'une ressource sur ce noeud. La méthode xfnts_monitor_start utilise scds_pmf_start() pour démarrer le démon du détecteur sous le gestionnaire de processus.
Le premier appel de xfnts_monitor_start est destiné à scds_initialize(), qui effectue certaines tâches de gestion interne nécessaires. Les pages de manuel Fonction scds_initialize() et scds_initialize(3HA) contiennent plus de détails.
La méthode xfnts_monitor_start appelle la méthode mon_start , qui est définie dans le fichier xfnts.c, de la manière suivante :
scds_syslog_debug(DBG_LEVEL_HIGH, "Calling Monitor_start method for resource <%s>.", scds_get_resource_name(scds_handle)); /* Call scds_pmf_start and pass the name of the probe. */ err = scds_pmf_start(scds_handle, SCDS_PMF_TYPE_MON, SCDS_PMF_SINGLE_INSTANCE, "xfnts_probe", 0); if (err != SCHA_ERR_NOERR) { scds_syslog(LOG_ERR, "Failed to start fault monitor."); return (1); } scds_syslog(LOG_INFO, "Started the fault monitor."); return (SCHA_ERR_NOERR); /* Successfully started Monitor */ }
Notez les points suivants concernant l'appel de svc_mon_start() destiné à la fonction scds_pmf_start() :
L'argument SCDS_PMF_TYPE_MON identifie le programme à démarrer en tant que détecteur de pannes. Cette méthode peut également démarrer un service de données ou certains autres types d'application.
L'argument SCDS_PMF_SINGLE_INSTANCE l'identifie comme une ressource à instance unique.
L'argument xfnts_probe identifie le démon du détecteur à démarrer. Le démon du détecteur est supposé se trouver dans le même répertoire que les autres programmes de rappel.
Le dernier argument, 0, indique le niveau de surveillance des processus enfants. Dans ce cas, cette valeur indique que le gestionnaire de processus surveille uniquement le démon du détecteur.
Avant de quitter, la méthode xfnts_monitor_start appelle scds_close() pour récupérer les ressources affectées par scds_initialize (). Les pages de manuel Fonction scds_initialize() et scds_close(3HA) contiennent plus de détails.