Beispiel #1
0
/*
 *  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;
}
Beispiel #2
0
/*
 *  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;
}