X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fmain.c;h=2b99bbc993e8d9570b4b50744ec139f04926b4eb;hb=6a4e403927ffef4cae8726064dcf53c463eb128c;hp=966f609177ad0b28104de59f827ec73f7101de24;hpb=a9ad0c8fb50ac8cf9e9812dd9c9b4f949bac19a8;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c index 966f60917..2b99bbc99 100644 --- a/src/bin/lttng-sessiond/main.c +++ b/src/bin/lttng-sessiond/main.c @@ -135,16 +135,16 @@ static struct consumer_data ustconsumer32_data = { static const struct option long_options[] = { { "client-sock", 1, 0, 'c' }, { "apps-sock", 1, 0, 'a' }, - { "kconsumerd-cmd-sock", 1, 0, 'C' }, - { "kconsumerd-err-sock", 1, 0, 'E' }, - { "ustconsumerd32-cmd-sock", 1, 0, 'G' }, - { "ustconsumerd32-err-sock", 1, 0, 'H' }, - { "ustconsumerd64-cmd-sock", 1, 0, 'D' }, - { "ustconsumerd64-err-sock", 1, 0, 'F' }, - { "consumerd32-path", 1, 0, 'u' }, - { "consumerd32-libdir", 1, 0, 'U' }, - { "consumerd64-path", 1, 0, 't' }, - { "consumerd64-libdir", 1, 0, 'T' }, + { "kconsumerd-cmd-sock", 1, 0, '\0' }, + { "kconsumerd-err-sock", 1, 0, '\0' }, + { "ustconsumerd32-cmd-sock", 1, 0, '\0' }, + { "ustconsumerd32-err-sock", 1, 0, '\0' }, + { "ustconsumerd64-cmd-sock", 1, 0, '\0' }, + { "ustconsumerd64-err-sock", 1, 0, '\0' }, + { "consumerd32-path", 1, 0, '\0' }, + { "consumerd32-libdir", 1, 0, '\0' }, + { "consumerd64-path", 1, 0, '\0' }, + { "consumerd64-libdir", 1, 0, '\0' }, { "daemonize", 0, 0, 'd' }, { "background", 0, 0, 'b' }, { "sig-parent", 0, 0, 'S' }, @@ -153,14 +153,14 @@ static const struct option long_options[] = { { "version", 0, 0, 'V' }, { "quiet", 0, 0, 'q' }, { "verbose", 0, 0, 'v' }, - { "verbose-consumer", 0, 0, 'Z' }, - { "no-kernel", 0, 0, 'N' }, + { "verbose-consumer", 0, 0, '\0' }, + { "no-kernel", 0, 0, '\0' }, { "pidfile", 1, 0, 'p' }, - { "agent-tcp-port", 1, 0, 'J' }, + { "agent-tcp-port", 1, 0, '\0' }, { "config", 1, 0, 'f' }, { "load", 1, 0, 'l' }, - { "kmod-probes", 1, 0, 'P' }, - { "extra-kmod-probes", 1, 0, 'e' }, + { "kmod-probes", 1, 0, '\0' }, + { "extra-kmod-probes", 1, 0, '\0' }, { NULL, 0, 0, 0 } }; @@ -676,6 +676,9 @@ static void sessiond_cleanup(void) } } + DBG("Cleaning up all agent apps"); + agent_app_ht_clean(); + DBG("Closing all UST sockets"); ust_app_clean_list(); buffer_reg_destroy_registries(); @@ -2960,6 +2963,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx, int sock, case LTTNG_LIST_CHANNELS: case LTTNG_LIST_EVENTS: case LTTNG_LIST_SYSCALLS: + case LTTNG_LIST_TRACKER_PIDS: break; default: /* Setup lttng message with no payload */ @@ -3495,6 +3499,38 @@ skip_domain: ret = LTTNG_OK; break; } + case LTTNG_LIST_TRACKER_PIDS: + { + int32_t *pids = NULL; + ssize_t nr_pids; + + nr_pids = cmd_list_tracker_pids(cmd_ctx->session, + cmd_ctx->lsm->domain.type, &pids); + if (nr_pids < 0) { + /* Return value is a negative lttng_error_code. */ + ret = -nr_pids; + goto error; + } + + /* + * Setup lttng message with payload size set to the event list size in + * bytes and then copy list into the llm payload. + */ + ret = setup_lttng_msg(cmd_ctx, sizeof(int32_t) * nr_pids); + if (ret < 0) { + free(pids); + goto setup_error; + } + + /* Copy event list into message payload */ + memcpy(cmd_ctx->llm->payload, pids, + sizeof(int) * nr_pids); + + free(pids); + + ret = LTTNG_OK; + break; + } case LTTNG_SET_CONSUMER_URI: { size_t nb_uri, len; @@ -5597,13 +5633,17 @@ int main(int argc, char **argv) * cleanup() can get called after that point. */ if (ust_app_ht_alloc()) { + ERR("Failed to allocate UST app hash table"); retval = -1; goto exit_init_data; } - /* Initialize agent domain subsystem. */ - if (agent_setup()) { - /* ENOMEM at this point. */ + /* + * Initialize agent app hash table. We allocate the hash table here + * since cleanup() can get called after this point. + */ + if (agent_app_ht_alloc()) { + ERR("Failed to allocate Agent app hash table"); retval = -1; goto exit_init_data; }