* NR_LTTNG_SESSIOND_READY must match the number of calls to
* sessiond_notify_ready().
*/
-#define NR_LTTNG_SESSIOND_READY 3
+#define NR_LTTNG_SESSIOND_READY 4
int lttng_sessiond_ready = NR_LTTNG_SESSIOND_READY;
int sessiond_check_thread_quit_pipe(int fd, uint32_t events)
DBG("[thread] Dispatch UST command started");
- while (!CMM_LOAD_SHARED(dispatch_thread_exit)) {
+ for (;;) {
health_code_update();
/* Atomically prepare the queue futex */
futex_nto1_prepare(&ust_cmd_queue.futex);
+ if (CMM_LOAD_SHARED(dispatch_thread_exit)) {
+ break;
+ }
+
do {
struct ust_app *app = NULL;
ust_cmd = NULL;
} else {
DBG("Could not find any valid consumerd executable");
ret = -EINVAL;
- break;
+ goto error;
}
DBG("Using kernel consumer at: %s", consumer_to_use);
ret = execl(consumer_to_use,
break;
}
default:
- PERROR("unknown consumer type");
+ ERR("unknown consumer type");
exit(EXIT_FAILURE);
}
if (errno != 0) {
kernel_tracer_fd = open(module_proc_lttng, O_RDWR);
if (kernel_tracer_fd < 0) {
DBG("Failed to open %s", module_proc_lttng);
- ret = -1;
goto error_open;
}
return ret;
}
+static int set_clock_plugin_env(void)
+{
+ int ret = 0;
+ const char *original_env_value;
+ char *full_path = NULL;
+ char *new_env_value = NULL;
+
+ original_env_value = getenv("LTTNG_UST_CLOCK_PLUGIN");
+ if (!original_env_value) {
+ goto end;
+ }
+
+ full_path = utils_expand_path(original_env_value);
+ if (!full_path) {
+ ERR("Failed to expand LTTNG_UST_CLOCK_PLUGIN path \"%s\"",
+ original_env_value);
+ ret = -1;
+ goto end;
+ }
+ ret = asprintf(&new_env_value, "LTTNG_UST_CLOCK_PLUGIN=%s",
+ full_path);
+ free(full_path);
+ if (ret < 0) {
+ PERROR("asprintf");
+ goto end;
+ }
+
+ DBG("Updating environment: %s", new_env_value);
+ ret = putenv(new_env_value);
+ if (ret) {
+ free(new_env_value);
+ PERROR("putenv of LTTNG_UST_CLOCK_PLUGIN");
+ goto end;
+ }
+end:
+ return ret;
+}
+
/*
* main
*/
goto exit_options;
}
+ ret = set_clock_plugin_env();
+ if (ret) {
+ retval = -1;
+ goto exit_options;
+ }
+
/* Daemonize */
if (opt_daemon || opt_background) {
int i;