/* * launch_sessiond * * Check if the session daemon is available using * the liblttngctl API for the check. If not, try to * spawn a daemon. */ static int launch_sessiond(void) { int ret; char *pathname = NULL; ret = lttng_session_daemon_alive(); if (ret) { /* Sessiond is alive, not an error */ ret = 0; goto end; } /* Try command line option path */ pathname = opt_sessiond_path; /* Try LTTNG_SESSIOND_PATH env variable */ if (pathname == NULL) { pathname = getenv(DEFAULT_SESSIOND_PATH_ENV); } /* Try with configured path */ if (pathname == NULL) { if (CONFIG_SESSIOND_BIN[0] != '\0') { pathname = CONFIG_SESSIOND_BIN; } } /* Try the default path */ if (pathname == NULL) { pathname = INSTALL_BIN_PATH "/lttng-sessiond"; } DBG("Session daemon binary path: %s", pathname); /* Check existence and permissions */ ret = access(pathname, F_OK | X_OK); if (ret < 0) { ERR("No such file or access denied: %s", pathname); goto end; } ret = spawn_sessiond(pathname); end: if (ret) { ERR("Problem occurred while launching session daemon (%s)", pathname); } return ret; }
/* * check_sessiond * * Check if the session daemon is available using * the liblttngctl API for the check. If not, try to * spawn a daemon. */ static int check_sessiond(void) { int ret; char *pathname = NULL; ret = lttng_session_daemon_alive(); if (ret == 0) { /* not alive */ /* Try command line option path */ pathname = opt_sessiond_path; /* Try LTTNG_SESSIOND_PATH env variable */ if (pathname == NULL) { pathname = getenv(DEFAULT_SESSIOND_PATH_ENV); } /* Try with configured path */ if (pathname == NULL) { if (CONFIG_SESSIOND_BIN[0] != '\0') { pathname = CONFIG_SESSIOND_BIN; } } /* Let's rock and roll while trying the default path */ if (pathname == NULL) { pathname = INSTALL_BIN_PATH "/lttng-sessiond"; } DBG("Session daemon at: %s", pathname); /* Check existence and permissions */ ret = access(pathname, F_OK | X_OK); if (ret < 0) { ERR("No such file or access denied: %s", pathname); goto end; } ret = spawn_sessiond(pathname); if (ret < 0) { ERR("Problem occurred when starting %s", pathname); } } end: return ret; }