X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=liblttng-ust-ctl%2Fustctl.c;h=656aeac51e44720f12f2406de382758e9bb8afb0;hb=345672b3fe38367d674f9d85b0bb4327f5a5c586;hp=6a902ef8f9885bd27d9f30b0b2b9c82907c55ea7;hpb=20d630cf340f4a14f4d3340f50143ef551643a83;p=lttng-ust.git diff --git a/liblttng-ust-ctl/ustctl.c b/liblttng-ust-ctl/ustctl.c index 6a902ef8..656aeac5 100644 --- a/liblttng-ust-ctl/ustctl.c +++ b/liblttng-ust-ctl/ustctl.c @@ -40,14 +40,29 @@ void init_object(struct lttng_ust_object_data *data) data->memory_map_size = 0; } +int ustctl_release_handle(int sock, int handle) +{ + struct ustcomm_ust_msg lum; + struct ustcomm_ust_reply lur; + int ret; + + if (sock >= 0) { + memset(&lum, 0, sizeof(lum)); + lum.handle = handle; + lum.cmd = LTTNG_UST_RELEASE; + ret = ustcomm_send_app_cmd(sock, &lum, &lur); + if (ret < 0) { + return ret; + } + } + return 0; +} /* * If sock is negative, it means we don't have to notify the other side * (e.g. application has already vanished). */ int ustctl_release_object(int sock, struct lttng_ust_object_data *data) { - struct ustcomm_ust_msg lum; - struct ustcomm_ust_reply lur; int ret; if (data->shm_fd >= 0) { @@ -62,16 +77,7 @@ int ustctl_release_object(int sock, struct lttng_ust_object_data *data) return ret; } } - if (sock >= 0) { - memset(&lum, 0, sizeof(lum)); - lum.handle = data->handle; - lum.cmd = LTTNG_UST_RELEASE; - ret = ustcomm_send_app_cmd(sock, &lum, &lur); - if (ret < 0) { - return ret; - } - } - return 0; + return ustctl_release_handle(sock, data->handle); } /* @@ -408,7 +414,7 @@ int ustctl_tracepoint_list(int sock) } int ustctl_tracepoint_list_get(int sock, int tp_list_handle, - struct ustctl_tracepoint_iter *iter) + struct lttng_ust_tracepoint_iter *iter) { struct ustcomm_ust_msg lum; struct ustcomm_ust_reply lur; @@ -420,8 +426,11 @@ int ustctl_tracepoint_list_get(int sock, int tp_list_handle, ret = ustcomm_send_app_cmd(sock, &lum, &lur); if (ret) return ret; - DBG("received tracepoint list entry %s", lur.u.tracepoint_list_entry); - memcpy(iter->name, lur.u.tracepoint_list_entry, LTTNG_UST_SYM_NAME_LEN); + DBG("received tracepoint list entry name %s loglevel %s loglevel_value %lld", + lur.u.tracepoint.name, + lur.u.tracepoint.loglevel, + (unsigned long long) lur.u.tracepoint.loglevel_value); + memcpy(iter, &lur.u.tracepoint, sizeof(*iter)); return 0; } @@ -463,6 +472,22 @@ int ustctl_calibrate(int sock, struct lttng_ust_calibrate *calibrate) return -ENOSYS; } +int ustctl_sock_flush_buffer(int sock, struct lttng_ust_object_data *object) +{ + struct ustcomm_ust_msg lum; + struct ustcomm_ust_reply lur; + int ret; + + memset(&lum, 0, sizeof(lum)); + lum.handle = object->handle; + lum.cmd = LTTNG_UST_FLUSH_BUFFER; + ret = ustcomm_send_app_cmd(sock, &lum, &lur); + if (ret) + return ret; + DBG("flushed buffer handle %u", object->handle); + return 0; +} + /* Buffer operations */ /* Map channel shm into process memory */