int ust_consumerd64_fd = -1;
int ust_consumerd32_fd = -1;
-static const char *consumerd32_path =
- __stringify(CONFIG_CONSUMERD32_PATH);
-static const char *consumerd64_path =
- __stringify(CONFIG_CONSUMERD64_PATH);
+static const char *consumerd32_bin =
+ __stringify(CONFIG_CONSUMERD32_BIN);
+static const char *consumerd64_bin =
+ __stringify(CONFIG_CONSUMERD64_BIN);
static const char *consumerd32_libdir =
__stringify(CONFIG_CONSUMERD32_LIBDIR);
static const char *consumerd64_libdir =
static
void setup_consumerd_path(void)
{
- const char *path, *libdir;
+ const char *bin, *libdir;
/*
* Allow INSTALL_BIN_PATH to be used as a target path for the
* has not been defined.
*/
#if (CAA_BITS_PER_LONG == 32)
- if (!consumerd32_path[0]) {
- consumerd32_path = INSTALL_BIN_PATH "/" CONSUMERD_FILE;
+ if (!consumerd32_bin[0]) {
+ consumerd32_bin = INSTALL_BIN_PATH "/" CONSUMERD_FILE;
}
if (!consumerd32_libdir[0]) {
consumerd32_libdir = INSTALL_LIB_PATH;
}
#elif (CAA_BITS_PER_LONG == 64)
- if (!consumerd64_path[0]) {
- consumerd64_path = INSTALL_BIN_PATH "/" CONSUMERD_FILE;
+ if (!consumerd64_bin[0]) {
+ consumerd64_bin = INSTALL_BIN_PATH "/" CONSUMERD_FILE;
}
if (!consumerd64_libdir[0]) {
consumerd64_libdir = INSTALL_LIB_PATH;
/*
* runtime env. var. overrides the build default.
*/
- path = getenv("LTTNG_CONSUMERD32_PATH");
- if (path) {
- consumerd32_path = path;
+ bin = getenv("LTTNG_CONSUMERD32_BIN");
+ if (bin) {
+ consumerd32_bin = bin;
}
- path = getenv("LTTNG_CONSUMERD64_PATH");
- if (path) {
- consumerd64_path = path;
+ bin = getenv("LTTNG_CONSUMERD64_BIN");
+ if (bin) {
+ consumerd64_bin = bin;
}
libdir = getenv("LTTNG_TOOLS_CONSUMERD32_LIBDIR");
if (libdir) {
}
switch (consumer_data->type) {
case LTTNG_CONSUMER_KERNEL:
- execl(INSTALL_BIN_PATH "/lttng-consumerd",
+ execl(INSTALL_BIN_PATH "/" CONSUMERD_FILE,
"lttng-consumerd", verbosity, "-k",
"--consumerd-cmd-sock", consumer_data->cmd_unix_sock_path,
"--consumerd-err-sock", consumer_data->err_unix_sock_path,
break;
case LTTNG_CONSUMER64_UST:
{
- char *tmpnew;
+ char *tmpnew = NULL;
if (consumerd64_libdir[0] != '\0') {
char *tmp;
goto error;
}
}
- ret = execl(consumerd64_path, verbosity, "-u",
+ ret = execl(consumerd64_bin, verbosity, "-u",
"--consumerd-cmd-sock", consumer_data->cmd_unix_sock_path,
"--consumerd-err-sock", consumer_data->err_unix_sock_path,
NULL);
goto error;
}
}
- ret = execl(consumerd32_path, verbosity, "-u",
+ ret = execl(consumerd32_bin, verbosity, "-u",
"--consumerd-cmd-sock", consumer_data->cmd_unix_sock_path,
"--consumerd-err-sock", consumer_data->err_unix_sock_path,
NULL);
case LTTNG_UST_FUNCTION:
tmp[i].type = LTTNG_EVENT_FUNCTION;
break;
+ case LTTNG_UST_TRACEPOINT_LOGLEVEL:
+ /* TODO */
+ ret = -LTTCOMM_NOT_IMPLEMENTED;
+ goto error;
+ break;
}
i++;
}
goto error;
}
+ /* Already disabled */
+ if (!uchan->enabled) {
+ DBG2("UST channel %s already disabled", channel_name);
+ break;
+ }
+
ret = ust_app_disable_channel_glb(usess, uchan);
if (ret < 0) {
ret = LTTCOMM_UST_DISABLE_FAIL;
goto error;
}
- rcu_read_lock();
- hashtable_add_unique(usess->domain_global.channels, &uchan->node);
- rcu_read_unlock();
- DBG2("UST channel %s added to global domain HT", attr->name);
-
/* Add channel to all registered applications */
ret = ust_app_create_channel_glb(usess, uchan);
if (ret != 0) {
ret = LTTCOMM_UST_CHAN_FAIL;
goto error;
}
+
+ rcu_read_lock();
+ hashtable_add_unique(usess->domain_global.channels, &uchan->node);
+ rcu_read_unlock();
+
+ DBG2("UST channel %s added to global domain HT", attr->name);
} else {
/* If already enabled, everything is OK */
if (uchan->enabled) {
- ret = LTTCOMM_OK;
- goto error;
+ break;
}
ret = ust_app_enable_channel_glb(usess, uchan);
if (ret < 0) {
- ret = LTTCOMM_UST_ENABLE_FAIL;
- goto error;
+ if (ret != -EEXIST) {
+ ret = LTTCOMM_UST_CHAN_ENABLE_FAIL;
+ goto error;
+ } else {
+ ret = LTTCOMM_OK;
+ }
}
}
break;
case LTTNG_DOMAIN_UST:
{
- /*
- struct ltt_ust_session *usess;
+ struct ltt_ust_session *usess = session->ust_session;
- cds_list_for_each_entry(usess, &session->ust_session_list.head, list) {
- ret = context_ust_add(usess, ctx,
- event_name, channel_name, domain);
- if (ret != LTTCOMM_OK) {
- goto error;
- }
+ ret = context_ust_add(usess, domain, ctx, event_name, channel_name);
+ if (ret != LTTCOMM_OK) {
+ goto error;
}
break;
- */
}
+ case LTTNG_DOMAIN_UST_EXEC_NAME:
+ case LTTNG_DOMAIN_UST_PID:
+ case LTTNG_DOMAIN_UST_PID_FOLLOW_CHILDREN:
default:
- /* TODO: UST other domains */
ret = LTTCOMM_NOT_IMPLEMENTED;
goto error;
}
if (ret != LTTCOMM_OK) {
goto error;
}
- }
- /* Get the newly created kernel channel pointer */
- kchan = trace_kernel_get_channel_by_name(channel_name,
- session->kernel_session);
- if (kchan == NULL) {
- /* This sould not happen... */
- ret = LTTCOMM_FATAL;
- goto error;
+ /* Get the newly created kernel channel pointer */
+ kchan = trace_kernel_get_channel_by_name(channel_name,
+ session->kernel_session);
+ if (kchan == NULL) {
+ /* This sould not happen... */
+ ret = LTTCOMM_FATAL;
+ goto error;
+ }
+
}
switch (event_type) {
ret = LTTCOMM_KERN_ENABLE_FAIL;
goto error;
}
+
+ /* Manage return value */
if (ret != LTTCOMM_OK) {
goto error;
}
/* Start the UST consumer daemons */
/* 64-bit */
pthread_mutex_lock(&ustconsumer64_data.pid_mutex);
- if (consumerd64_path[0] != '\0' &&
+ if (consumerd64_bin[0] != '\0' &&
ustconsumer64_data.pid == 0 &&
cmd_ctx->lsm->cmd_type != LTTNG_REGISTER_CONSUMER) {
pthread_mutex_unlock(&ustconsumer64_data.pid_mutex);
pthread_mutex_unlock(&ustconsumer64_data.pid_mutex);
}
/* 32-bit */
- if (consumerd32_path[0] != '\0' &&
+ if (consumerd32_bin[0] != '\0' &&
ustconsumer32_data.pid == 0 &&
cmd_ctx->lsm->cmd_type != LTTNG_REGISTER_CONSUMER) {
pthread_mutex_unlock(&ustconsumer32_data.pid_mutex);
opt_verbose_consumer += 1;
break;
case 'u':
- consumerd32_path= optarg;
+ consumerd32_bin= optarg;
break;
case 'U':
consumerd32_libdir = optarg;
break;
case 't':
- consumerd64_path = optarg;
+ consumerd64_bin = optarg;
break;
case 'T':
consumerd64_libdir = optarg;