在节点上启动资源后,RGM 将在该节点上调用 Monitor_start 方法以启动故障监视器。xfnts_monitor_start 方法将使用 scds_pmf_start() 来启动 PMF 下的监视器守护进程。
xfnts_monitor_start 将首先调用执行一些必要的内务处理函数的 scds_initialize()。scds_initialize() 函数和 scds_initialize(3HA) 手册页包含更多信息。
xfnts_monitor_start 方法用于调用在 xfnts.c 文件中定义的 mon_start 方法,如下所示:
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 */ }
关于在 svc_mon_start() 中对 scds_pmf_start() 函数的调用,请注意以下几点:
SCDS_PMF_TYPE_MON 参数标识程序作为故障监视器启动。此方法还可以启动数据服务或某个其他类型的应用程序。
SCDS_PMF_SINGLE_INSTANCE 参数将此标识为单实例资源。
xfnts_probe 参数用于标识要启动的监视器守护进程。假定监视器守护进程与其他回调程序位于同一目录下。
最后一个参数 0 用于指定子监视级别。在这种情况下,此值将指定 PMF 仅监视监视器守护进程。
退出前,xfnts_monitor_start 方法将调用 scds_close() 以收回由 scds_initialize() 分配的资源。scds_initialize() 函数和 scds_close(3HA) 手册页包含更多信息。