X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fust-app.c;h=8dd7a9d1c8d43a64e03f891871ce7ae98b773140;hp=e0562ed4e5448d2e184b288481fad0e80bb77b0b;hb=178191b3899f114001f000c2e7f46909969f9c6f;hpb=5b98a7741b64765b34396a151b976f8f58ee3a5e diff --git a/src/bin/lttng-sessiond/ust-app.c b/src/bin/lttng-sessiond/ust-app.c index e0562ed4e..8dd7a9d1c 100644 --- a/src/bin/lttng-sessiond/ust-app.c +++ b/src/bin/lttng-sessiond/ust-app.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -56,19 +57,7 @@ void delete_ust_app_ctx(int sock, struct ust_app_ctx *ua_ctx) static void delete_ust_app_event(int sock, struct ust_app_event *ua_event) { - int ret; - struct lttng_ht_iter iter; - struct ust_app_ctx *ua_ctx; - - /* Destroy each context of event */ - cds_lfht_for_each_entry(ua_event->ctx->ht, &iter.iter, ua_ctx, - node.node) { - ret = lttng_ht_del(ua_event->ctx, &iter); - assert(!ret); - delete_ust_app_ctx(sock, ua_ctx); - } free(ua_event->filter); - lttng_ht_destroy(ua_event->ctx); if (ua_event->obj != NULL) { ustctl_release_object(sock, ua_event->obj); @@ -325,7 +314,6 @@ struct ust_app_event *alloc_ust_app_event(char *name, ua_event->enabled = 1; strncpy(ua_event->name, name, sizeof(ua_event->name)); ua_event->name[sizeof(ua_event->name) - 1] = '\0'; - ua_event->ctx = lttng_ht_new(0, LTTNG_HT_TYPE_ULONG); lttng_ht_node_init_str(&ua_event->node, ua_event->name); /* Copy attributes */ @@ -413,32 +401,6 @@ error: return ret; } -/* - * Create the event context on the tracer. - */ -static -int create_ust_event_context(struct ust_app_event *ua_event, - struct ust_app_ctx *ua_ctx, struct ust_app *app) -{ - int ret; - - health_code_update(&health_thread_cmd); - - ret = ustctl_add_context(app->sock, &ua_ctx->ctx, - ua_event->obj, &ua_ctx->obj); - if (ret < 0) { - goto error; - } - - ua_ctx->handle = ua_ctx->obj->handle; - - DBG2("UST app context created successfully for event %s", ua_event->name); - -error: - health_code_update(&health_thread_cmd); - return ret; -} - /* * Set the filter on the tracer. */ @@ -711,10 +673,6 @@ int create_ust_event(struct ust_app *app, struct ust_app_session *ua_sess, ret = ustctl_create_event(app->sock, &ua_event->attr, ua_chan->obj, &ua_event->obj); if (ret < 0) { - if (ret == -EEXIST || ret == -EPERM) { - ret = 0; - goto error; - } ERR("Error ustctl create event %s for app pid: %d with ret %d", ua_event->attr.name, app->pid, ret); goto error; @@ -737,10 +695,10 @@ int create_ust_event(struct ust_app *app, struct ust_app_session *ua_sess, * just created it. */ switch (ret) { - case -EPERM: + case -LTTNG_UST_ERR_PERM: /* Code flow problem */ assert(0); - case -EEXIST: + case -LTTNG_UST_ERR_EXIST: /* It's OK for our use case. */ ret = 0; break; @@ -762,10 +720,6 @@ error: static void shadow_copy_event(struct ust_app_event *ua_event, struct ltt_ust_event *uevent) { - struct lttng_ht_iter iter; - struct ltt_ust_context *uctx; - struct ust_app_ctx *ua_ctx; - strncpy(ua_event->name, uevent->attr.name, sizeof(ua_event->name)); ua_event->name[sizeof(ua_event->name) - 1] = '\0'; @@ -784,17 +738,6 @@ static void shadow_copy_event(struct ust_app_event *ua_event, memcpy(ua_event->filter, uevent->filter, sizeof(*ua_event->filter) + uevent->filter->len); } - cds_lfht_for_each_entry(uevent->ctx->ht, &iter.iter, uctx, node.node) { - ua_ctx = alloc_ust_app_ctx(&uctx->ctx); - if (ua_ctx == NULL) { - /* malloc() failed. We should simply stop */ - return; - } - - lttng_ht_node_init_ulong(&ua_ctx->node, - (unsigned long) ua_ctx->ctx.ctx); - lttng_ht_add_unique_ulong(ua_event->ctx, &ua_ctx->node); - } } /* @@ -1037,47 +980,6 @@ error: return ret; } -/* - * Create an UST context and enable it for the event on the tracer. - */ -static -int create_ust_app_event_context(struct ust_app_session *ua_sess, - struct ust_app_event *ua_event, struct lttng_ust_context *uctx, - struct ust_app *app) -{ - int ret = 0; - struct lttng_ht_iter iter; - struct lttng_ht_node_ulong *node; - struct ust_app_ctx *ua_ctx; - - DBG2("UST app adding context to event %s", ua_event->name); - - lttng_ht_lookup(ua_event->ctx, (void *)((unsigned long)uctx->ctx), &iter); - node = lttng_ht_iter_get_node_ulong(&iter); - if (node != NULL) { - ret = -EEXIST; - goto error; - } - - ua_ctx = alloc_ust_app_ctx(uctx); - if (ua_ctx == NULL) { - /* malloc failed */ - ret = -1; - goto error; - } - - lttng_ht_node_init_ulong(&ua_ctx->node, (unsigned long) ua_ctx->ctx.ctx); - lttng_ht_add_unique_ulong(ua_event->ctx, &ua_ctx->node); - - ret = create_ust_event_context(ua_event, ua_ctx, app); - if (ret < 0) { - goto error; - } - -error: - return ret; -} - /* * Set UST filter for the event on the tracer. */ @@ -1226,7 +1128,7 @@ static struct ust_app_channel *create_ust_app_channel( ret = create_ust_channel(app, ua_sess, ua_chan); if (ret < 0) { /* Not found previously means that it does not exist on the tracer */ - assert(ret != -EEXIST); + assert(ret != -LTTNG_UST_ERR_EXIST); goto error; } @@ -1277,7 +1179,7 @@ int create_ust_app_event(struct ust_app_session *ua_sess, ret = create_ust_event(app, ua_sess, ua_chan, ua_event); if (ret < 0) { /* Not found previously means that it does not exist on the tracer */ - assert(ret != -EEXIST); + assert(ret != -LTTNG_UST_ERR_EXIST); goto error; } @@ -1580,7 +1482,7 @@ int ust_app_list_events(struct lttng_event **events) } while ((ret = ustctl_tracepoint_list_get(app->sock, handle, - &uiter)) != -ENOENT) { + &uiter)) != -LTTNG_UST_ERR_NOENT) { health_code_update(&health_thread_cmd); if (count >= nbmem) { /* In case the realloc fails, we free the memory */ @@ -1658,7 +1560,7 @@ int ust_app_list_event_fields(struct lttng_event_field **fields) } while ((ret = ustctl_tracepoint_field_list_get(app->sock, handle, - &uiter)) != -ENOENT) { + &uiter)) != -LTTNG_UST_ERR_NOENT) { health_code_update(&health_thread_cmd); if (count >= nbmem) { /* In case the realloc fails, we free the memory */ @@ -1983,6 +1885,7 @@ int ust_app_disable_all_event_glb(struct ltt_ust_session *usess, int ust_app_create_channel_glb(struct ltt_ust_session *usess, struct ltt_ust_channel *uchan) { + int ret = 0; struct lttng_ht_iter iter; struct ust_app *app; struct ust_app_session *ua_sess; @@ -2014,9 +1917,11 @@ int ust_app_create_channel_glb(struct ltt_ust_session *usess, ua_sess = create_ust_app_session(usess, app); if (ua_sess == NULL) { /* The malloc() failed. */ + ret = -1; goto error; } else if (ua_sess == (void *) -1UL) { /* The application's socket is not valid. Contiuing */ + ret = -1; continue; } @@ -2024,16 +1929,15 @@ int ust_app_create_channel_glb(struct ltt_ust_session *usess, ua_chan = create_ust_app_channel(ua_sess, uchan, app); if (ua_chan == NULL) { /* Major problem here and it's maybe the tracer or malloc() */ + ret = -1; goto error; } } rcu_read_unlock(); - return 0; - error: - return -1; + return ret; } /* @@ -2144,7 +2048,7 @@ int ust_app_create_event_glb(struct ltt_ust_session *usess, ret = create_ust_app_event(ua_sess, ua_chan, uevent, app); if (ret < 0) { - if (ret != -EEXIST) { + if (ret != -LTTNG_UST_ERR_EXIST) { /* Possible value at this point: -ENOMEM. If so, we stop! */ break; } @@ -2600,15 +2504,6 @@ void ust_app_global_update(struct ltt_ust_session *usess, int sock) continue; } - /* Add context on events. */ - cds_lfht_for_each_entry(ua_event->ctx->ht, &iter_ctx.iter, - ua_ctx, node.node) { - ret = create_ust_event_context(ua_event, ua_ctx, app); - if (ret < 0) { - /* FIXME: Should we quit here or continue... */ - continue; - } - } ret = set_ust_event_filter(ua_event, app); if (ret < 0) { /* FIXME: Should we quit here or continue... */ @@ -2678,63 +2573,6 @@ int ust_app_add_ctx_channel_glb(struct ltt_ust_session *usess, return ret; } -/* - * Add context to a specific event in a channel for global UST domain. - */ -int ust_app_add_ctx_event_glb(struct ltt_ust_session *usess, - struct ltt_ust_channel *uchan, struct ltt_ust_event *uevent, - struct ltt_ust_context *uctx) -{ - int ret = 0; - struct lttng_ht_node_str *ua_chan_node, *ua_event_node; - struct lttng_ht_iter iter, uiter; - struct ust_app_session *ua_sess; - struct ust_app_event *ua_event; - struct ust_app_channel *ua_chan = NULL; - struct ust_app *app; - - rcu_read_lock(); - - cds_lfht_for_each_entry(ust_app_ht->ht, &iter.iter, app, pid_n.node) { - if (!app->compatible) { - /* - * TODO: In time, we should notice the caller of this error by - * telling him that this is a version error. - */ - continue; - } - ua_sess = lookup_session_by_app(usess, app); - if (ua_sess == NULL) { - continue; - } - - /* Lookup channel in the ust app session */ - lttng_ht_lookup(ua_sess->channels, (void *)uchan->name, &uiter); - ua_chan_node = lttng_ht_iter_get_node_str(&uiter); - if (ua_chan_node == NULL) { - continue; - } - ua_chan = caa_container_of(ua_chan_node, struct ust_app_channel, - node); - - lttng_ht_lookup(ua_chan->events, (void *)uevent->attr.name, &uiter); - ua_event_node = lttng_ht_iter_get_node_str(&uiter); - if (ua_event_node == NULL) { - continue; - } - ua_event = caa_container_of(ua_event_node, struct ust_app_event, - node); - - ret = create_ust_app_event_context(ua_sess, ua_event, &uctx->ctx, app); - if (ret < 0) { - continue; - } - } - - rcu_read_unlock(); - return ret; -} - /* * Add context to a specific event in a channel for global UST domain. */