*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <fcntl.h>
#include <getopt.h>
#include <grp.h>
goto end;
}
} else {
- static char *rundir;
-
home_path = utils_get_home_dir();
if (home_path == NULL) {
/* TODO: Add --socket PATH option */
goto end;
}
- /*
- * Create rundir from home path. This will create something like
- * $HOME/.lttng
- */
- ret = asprintf(&rundir, DEFAULT_LTTNG_HOME_RUNDIR, home_path);
- if (ret < 0) {
- ret = -ENOMEM;
- goto end;
- }
-
/* Set health check Unix path */
if (strlen(health_unix_sock_path) != 0) {
goto end;
switch (type) {
case LTTNG_CONSUMER_KERNEL:
snprintf(health_unix_sock_path, sizeof(health_unix_sock_path),
- DEFAULT_HOME_KCONSUMER_HEALTH_UNIX_SOCK, rundir);
+ DEFAULT_HOME_KCONSUMER_HEALTH_UNIX_SOCK, home_path);
break;
case LTTNG_CONSUMER64_UST:
snprintf(health_unix_sock_path, sizeof(health_unix_sock_path),
- DEFAULT_HOME_USTCONSUMER64_HEALTH_UNIX_SOCK, rundir);
+ DEFAULT_HOME_USTCONSUMER64_HEALTH_UNIX_SOCK, home_path);
break;
case LTTNG_CONSUMER32_UST:
snprintf(health_unix_sock_path, sizeof(health_unix_sock_path),
- DEFAULT_HOME_USTCONSUMER32_HEALTH_UNIX_SOCK, rundir);
+ DEFAULT_HOME_USTCONSUMER32_HEALTH_UNIX_SOCK, home_path);
break;
default:
ret = -EINVAL;
goto end;
}
}
-
end:
return ret;
}
goto error;
}
+ /* Perform prior memory accesses before decrementing ready */
+ cmm_smp_mb__before_uatomic_dec();
+ uatomic_dec(<tng_consumer_ready);
+
while (1) {
DBG("Health check ready");
revents = LTTNG_POLL_GETEV(&events, i);
pollfd = LTTNG_POLL_GETFD(&events, i);
+ if (!revents) {
+ /* No activity for this FD (poll implementation). */
+ continue;
+ }
+
/* Thread quit pipe has been closed. Killing thread. */
ret = check_health_quit_pipe(pollfd, revents);
if (ret) {
assert(msg.cmd == HEALTH_CMD_CHECK);
- reply.ret_code = 0;
+ memset(&reply, 0, sizeof(reply));
for (i = 0; i < NR_HEALTH_CONSUMERD_TYPES; i++) {
/*
* health_check_state return 0 if thread is in
}
}
- DBG2("Health check return value %" PRIx64, reply.ret_code);
+ DBG("Health check return value %" PRIx64, reply.ret_code);
ret = send_unix_sock(new_sock, (void *) &reply, sizeof(reply));
if (ret < 0) {