X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Flttng-ctl.c;h=37b2531028c83930537f796bdaca041b83df3bd4;hp=8ca8e46effc4e16c4dca3c54fb3697172f47b966;hb=ef0e06bcabd5f5fcf609b60d6558c2bdded5e496;hpb=bff988fac4f8d1ffab3f85f0eec9546c76e57706 diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c index 8ca8e46ef..37b253102 100644 --- a/src/lib/lttng-ctl/lttng-ctl.c +++ b/src/lib/lttng-ctl/lttng-ctl.c @@ -1,5 +1,5 @@ /* - * liblttngctl.c + * lttng-ctl.c * * Linux Trace Toolkit Control Library * @@ -1913,100 +1913,6 @@ error: return ret; } -int lttng_event_get_filter_expression(struct lttng_event *event, - const char **filter_expression) -{ - int ret = 0; - struct lttcomm_event_extended_header *ext_header; - - if (!event || !filter_expression) { - ret = -LTTNG_ERR_INVALID; - goto end; - } - - ext_header = event->extended.ptr; - - if (!ext_header) { - /* - * This can happen since the lttng_event structure is - * used for other tasks where this pointer is never set. - */ - *filter_expression = NULL; - goto end; - } - - if (ext_header->filter_len) { - *filter_expression = ((const char *) (ext_header)) + - sizeof(*ext_header); - } else { - *filter_expression = NULL; - } - -end: - return ret; -} - -int lttng_event_get_exclusion_name_count(struct lttng_event *event) -{ - int ret; - struct lttcomm_event_extended_header *ext_header; - - if (!event) { - ret = -LTTNG_ERR_INVALID; - goto end; - } - - ext_header = event->extended.ptr; - if (!ext_header) { - /* - * This can happen since the lttng_event structure is - * used for other tasks where this pointer is never set. - */ - ret = 0; - goto end; - } - - if (ext_header->nb_exclusions > INT_MAX) { - ret = -LTTNG_ERR_OVERFLOW; - goto end; - } - ret = (int) ext_header->nb_exclusions; -end: - return ret; -} - -int lttng_event_get_exclusion_name(struct lttng_event *event, - size_t index, const char **exclusion_name) -{ - int ret = 0; - struct lttcomm_event_extended_header *ext_header; - void *at; - - if (!event || !exclusion_name) { - ret = -LTTNG_ERR_INVALID; - goto end; - } - - ext_header = event->extended.ptr; - if (!ext_header) { - ret = -LTTNG_ERR_INVALID; - goto end; - } - - if (index >= ext_header->nb_exclusions) { - ret = -LTTNG_ERR_INVALID; - goto end; - } - - at = (void *) ext_header + sizeof(*ext_header); - at += ext_header->filter_len; - at += index * LTTNG_SYMBOL_NAME_LEN; - *exclusion_name = at; - -end: - return ret; -} - /* * Sets the tracing_group variable with name. * This function allocates memory pointed to by tracing_group. @@ -2666,9 +2572,9 @@ int lttng_register_trigger(struct lttng_trigger *trigger) { int ret; struct lttcomm_session_msg lsm; - char *trigger_buf = NULL; - ssize_t trigger_size; + struct lttng_dynamic_buffer buffer; + lttng_dynamic_buffer_init(&buffer); if (!trigger) { ret = -LTTNG_ERR_INVALID; goto end; @@ -2679,30 +2585,19 @@ int lttng_register_trigger(struct lttng_trigger *trigger) goto end; } - trigger_size = lttng_trigger_serialize(trigger, NULL); - if (trigger_size < 0) { + ret = lttng_trigger_serialize(trigger, &buffer); + if (ret < 0) { ret = -LTTNG_ERR_UNK; goto end; } - trigger_buf = zmalloc(trigger_size); - if (!trigger_buf) { - ret = -LTTNG_ERR_NOMEM; - goto end; - } - memset(&lsm, 0, sizeof(lsm)); lsm.cmd_type = LTTNG_REGISTER_TRIGGER; - if (lttng_trigger_serialize(trigger, trigger_buf) < 0) { - ret = -LTTNG_ERR_UNK; - goto end; - } - - lsm.u.trigger.length = (uint32_t) trigger_size; - ret = lttng_ctl_ask_sessiond_varlen_no_cmd_header(&lsm, trigger_buf, - trigger_size, NULL); + lsm.u.trigger.length = (uint32_t) buffer.size; + ret = lttng_ctl_ask_sessiond_varlen_no_cmd_header(&lsm, buffer.data, + buffer.size, NULL); end: - free(trigger_buf); + lttng_dynamic_buffer_reset(&buffer); return ret; } @@ -2710,43 +2605,32 @@ int lttng_unregister_trigger(struct lttng_trigger *trigger) { int ret; struct lttcomm_session_msg lsm; - char *trigger_buf = NULL; - ssize_t trigger_size; + struct lttng_dynamic_buffer buffer; + lttng_dynamic_buffer_init(&buffer); if (!trigger) { ret = -LTTNG_ERR_INVALID; goto end; } if (!lttng_trigger_validate(trigger)) { - ret = -LTTNG_ERR_INVALID; + ret = -LTTNG_ERR_INVALID_TRIGGER; goto end; } - trigger_size = lttng_trigger_serialize(trigger, NULL); - if (trigger_size < 0) { + ret = lttng_trigger_serialize(trigger, &buffer); + if (ret < 0) { ret = -LTTNG_ERR_UNK; goto end; } - trigger_buf = zmalloc(trigger_size); - if (!trigger_buf) { - ret = -LTTNG_ERR_NOMEM; - goto end; - } - memset(&lsm, 0, sizeof(lsm)); lsm.cmd_type = LTTNG_UNREGISTER_TRIGGER; - if (lttng_trigger_serialize(trigger, trigger_buf) < 0) { - ret = -LTTNG_ERR_UNK; - goto end; - } - - lsm.u.trigger.length = (uint32_t) trigger_size; - ret = lttng_ctl_ask_sessiond_varlen_no_cmd_header(&lsm, trigger_buf, - trigger_size, NULL); + lsm.u.trigger.length = (uint32_t) buffer.size; + ret = lttng_ctl_ask_sessiond_varlen_no_cmd_header(&lsm, buffer.data, + buffer.size, NULL); end: - free(trigger_buf); + lttng_dynamic_buffer_reset(&buffer); return ret; }