X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fsession-consumed-size.c;h=e60437d13d3177294d714965dace7212c62b498d;hp=cc5b790e23a4c18d5b6e419020ae1a79ed9e4786;hb=821d5e9214017220a76344df586a0985631c69ae;hpb=319370bdd77c9e2cee13a1c84fa5200e51cee0fe diff --git a/src/common/session-consumed-size.c b/src/common/session-consumed-size.c index cc5b790e2..e60437d13 100644 --- a/src/common/session-consumed-size.c +++ b/src/common/session-consumed-size.c @@ -73,40 +73,45 @@ end: } static -ssize_t lttng_condition_session_consumed_size_serialize( - const struct lttng_condition *condition, char *buf) +int lttng_condition_session_consumed_size_serialize( + const struct lttng_condition *condition, + struct lttng_dynamic_buffer *buf) { - struct lttng_condition_session_consumed_size *consumed; - ssize_t ret, size; + int ret; size_t session_name_len; + struct lttng_condition_session_consumed_size *consumed; + struct lttng_condition_session_consumed_size_comm consumed_comm; if (!condition || !IS_CONSUMED_SIZE_CONDITION(condition)) { ret = -1; goto end; } - DBG("Serializing session consumed condition"); - consumed = container_of(condition, struct lttng_condition_session_consumed_size, + DBG("Serializing session consumed size condition"); + consumed = container_of(condition, + struct lttng_condition_session_consumed_size, parent); - size = sizeof(struct lttng_condition_session_consumed_size_comm); + session_name_len = strlen(consumed->session_name) + 1; if (session_name_len > LTTNG_NAME_MAX) { ret = -1; goto end; } - size += session_name_len; - if (buf) { - struct lttng_condition_session_consumed_size_comm consumed_comm = { - .consumed_threshold_bytes = consumed->consumed_threshold_bytes.value, - .session_name_len = session_name_len, - }; - memcpy(buf, &consumed_comm, sizeof(consumed_comm)); - buf += sizeof(consumed_comm); - memcpy(buf, consumed->session_name, session_name_len); - buf += session_name_len; + consumed_comm.consumed_threshold_bytes = + consumed->consumed_threshold_bytes.value; + consumed_comm.session_name_len = (uint32_t) session_name_len; + + ret = lttng_dynamic_buffer_append(buf, &consumed_comm, + sizeof(consumed_comm)); + if (ret) { + goto end; + } + ret = lttng_dynamic_buffer_append(buf, consumed->session_name, + session_name_len); + if (ret) { + goto end; } - ret = size; end: return ret; } @@ -131,8 +136,9 @@ bool lttng_condition_session_consumed_size_is_equal(const struct lttng_condition } } - if ((a->session_name && !b->session_name) || - (!a->session_name && b->session_name)) { + assert(a->session_name); + assert(b->session_name); + if (strcmp(a->session_name, b->session_name)) { goto end; } @@ -253,7 +259,6 @@ error: static struct lttng_evaluation *create_evaluation_from_buffer( - enum lttng_condition_type type, const struct lttng_buffer_view *view) { const struct lttng_evaluation_session_consumed_size_comm *comm = @@ -264,7 +269,7 @@ struct lttng_evaluation *create_evaluation_from_buffer( goto end; } - evaluation = lttng_evaluation_session_consumed_size_create(type, + evaluation = lttng_evaluation_session_consumed_size_create( comm->session_consumed); end: return evaluation; @@ -283,8 +288,7 @@ ssize_t lttng_evaluation_session_consumed_size_create_from_buffer( goto error; } - evaluation = create_evaluation_from_buffer( - LTTNG_CONDITION_TYPE_SESSION_CONSUMED_SIZE, view); + evaluation = create_evaluation_from_buffer(view); if (!evaluation) { ret = -1; goto error; @@ -397,24 +401,17 @@ end: } static -ssize_t lttng_evaluation_session_consumed_size_serialize( - struct lttng_evaluation *evaluation, char *buf) +int lttng_evaluation_session_consumed_size_serialize( + struct lttng_evaluation *evaluation, + struct lttng_dynamic_buffer *buf) { - ssize_t ret; struct lttng_evaluation_session_consumed_size *consumed; + struct lttng_evaluation_session_consumed_size_comm comm; consumed = container_of(evaluation, struct lttng_evaluation_session_consumed_size, parent); - if (buf) { - struct lttng_evaluation_session_consumed_size_comm comm = { - .session_consumed = consumed->session_consumed, - }; - - memcpy(buf, &comm, sizeof(comm)); - } - - ret = sizeof(struct lttng_evaluation_session_consumed_size_comm); - return ret; + comm.session_consumed = consumed->session_consumed; + return lttng_dynamic_buffer_append(buf, &comm, sizeof(comm)); } static @@ -430,7 +427,7 @@ void lttng_evaluation_session_consumed_size_destroy( LTTNG_HIDDEN struct lttng_evaluation *lttng_evaluation_session_consumed_size_create( - enum lttng_condition_type type, uint64_t consumed) + uint64_t consumed) { struct lttng_evaluation_session_consumed_size *consumed_eval; @@ -439,7 +436,7 @@ struct lttng_evaluation *lttng_evaluation_session_consumed_size_create( goto end; } - consumed_eval->parent.type = type; + consumed_eval->parent.type = LTTNG_CONDITION_TYPE_SESSION_CONSUMED_SIZE; consumed_eval->session_consumed = consumed; consumed_eval->parent.serialize = lttng_evaluation_session_consumed_size_serialize; consumed_eval->parent.destroy = lttng_evaluation_session_consumed_size_destroy;