X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconditions%2Fsession-rotation.cpp;h=a60e4fcf2f05a607d6b6effb1b411713af2f78e7;hb=28ab034a2c3582d07d3423d2d746731f87d3969f;hp=7f0896f927adba5b38df6f964eb8ab14e348f9e4;hpb=52e345b9ac912d033c2a2c25a170a01cf209839d;p=lttng-tools.git diff --git a/src/common/conditions/session-rotation.cpp b/src/common/conditions/session-rotation.cpp index 7f0896f92..a60e4fcf2 100644 --- a/src/common/conditions/session-rotation.cpp +++ b/src/common/conditions/session-rotation.cpp @@ -8,32 +8,25 @@ #include #include #include + #include #include #include + #include -static -bool lttng_condition_session_rotation_validate( - const struct lttng_condition *condition); -static -int lttng_condition_session_rotation_serialize( - const struct lttng_condition *condition, - struct lttng_payload *payload); -static -bool lttng_condition_session_rotation_is_equal(const struct lttng_condition *_a, - const struct lttng_condition *_b); -static -void lttng_condition_session_rotation_destroy( - struct lttng_condition *condition); - -static -enum lttng_error_code lttng_condition_session_rotation_mi_serialize( - const struct lttng_condition *condition, - struct mi_writer *writer); - -static const -struct lttng_condition rotation_condition_template = { +static bool lttng_condition_session_rotation_validate(const struct lttng_condition *condition); +static int lttng_condition_session_rotation_serialize(const struct lttng_condition *condition, + struct lttng_payload *payload); +static bool lttng_condition_session_rotation_is_equal(const struct lttng_condition *_a, + const struct lttng_condition *_b); +static void lttng_condition_session_rotation_destroy(struct lttng_condition *condition); + +static enum lttng_error_code +lttng_condition_session_rotation_mi_serialize(const struct lttng_condition *condition, + struct mi_writer *writer); + +static const struct lttng_condition rotation_condition_template = { {}, LTTNG_CONDITION_TYPE_UNKNOWN, /* type unset, shall be set on creation. */ lttng_condition_session_rotation_validate, @@ -43,42 +36,33 @@ struct lttng_condition rotation_condition_template = { lttng_condition_session_rotation_mi_serialize, }; -static -int lttng_evaluation_session_rotation_serialize( - const struct lttng_evaluation *evaluation, - struct lttng_payload *payload); -static -void lttng_evaluation_session_rotation_destroy( - struct lttng_evaluation *evaluation); +static int lttng_evaluation_session_rotation_serialize(const struct lttng_evaluation *evaluation, + struct lttng_payload *payload); +static void lttng_evaluation_session_rotation_destroy(struct lttng_evaluation *evaluation); -static const -struct lttng_evaluation rotation_evaluation_template = { +static const struct lttng_evaluation rotation_evaluation_template = { LTTNG_CONDITION_TYPE_UNKNOWN, /* type unset, shall be set on creation. */ lttng_evaluation_session_rotation_serialize, lttng_evaluation_session_rotation_destroy, }; -static -bool is_rotation_condition(const struct lttng_condition *condition) +static bool is_rotation_condition(const struct lttng_condition *condition) { enum lttng_condition_type type = lttng_condition_get_type(condition); return type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING || - type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED; + type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED; } -static -bool is_rotation_evaluation(const struct lttng_evaluation *evaluation) +static bool is_rotation_evaluation(const struct lttng_evaluation *evaluation) { enum lttng_condition_type type = lttng_evaluation_get_type(evaluation); return type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING || - type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED; + type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED; } -static -bool lttng_condition_session_rotation_validate( - const struct lttng_condition *condition) +static bool lttng_condition_session_rotation_validate(const struct lttng_condition *condition) { bool valid = false; struct lttng_condition_session_rotation *rotation; @@ -87,8 +71,7 @@ bool lttng_condition_session_rotation_validate( goto end; } - rotation = lttng::utils::container_of(condition, - <tng_condition_session_rotation::parent); + rotation = lttng::utils::container_of(condition, <tng_condition_session_rotation::parent); if (!rotation->session_name) { ERR("Invalid session rotation condition: a target session name must be set."); goto end; @@ -99,10 +82,8 @@ end: return valid; } -static -int lttng_condition_session_rotation_serialize( - const struct lttng_condition *condition, - struct lttng_payload *payload) +static int lttng_condition_session_rotation_serialize(const struct lttng_condition *condition, + struct lttng_payload *payload) { int ret; size_t session_name_len; @@ -115,8 +96,7 @@ int lttng_condition_session_rotation_serialize( } DBG("Serializing session rotation condition"); - rotation = lttng::utils::container_of(condition, - <tng_condition_session_rotation::parent); + rotation = lttng::utils::container_of(condition, <tng_condition_session_rotation::parent); session_name_len = strlen(rotation->session_name) + 1; if (session_name_len > LTTNG_NAME_MAX) { @@ -125,13 +105,12 @@ int lttng_condition_session_rotation_serialize( } rotation_comm.session_name_len = session_name_len; - ret = lttng_dynamic_buffer_append(&payload->buffer, &rotation_comm, - sizeof(rotation_comm)); + ret = lttng_dynamic_buffer_append(&payload->buffer, &rotation_comm, sizeof(rotation_comm)); if (ret) { goto end; } - ret = lttng_dynamic_buffer_append(&payload->buffer, - rotation->session_name, session_name_len); + ret = lttng_dynamic_buffer_append( + &payload->buffer, rotation->session_name, session_name_len); if (ret) { goto end; } @@ -139,9 +118,8 @@ end: return ret; } -static -bool lttng_condition_session_rotation_is_equal(const struct lttng_condition *_a, - const struct lttng_condition *_b) +static bool lttng_condition_session_rotation_is_equal(const struct lttng_condition *_a, + const struct lttng_condition *_b) { bool is_equal = false; struct lttng_condition_session_rotation *a, *b; @@ -150,14 +128,12 @@ bool lttng_condition_session_rotation_is_equal(const struct lttng_condition *_a, b = lttng::utils::container_of(_b, <tng_condition_session_rotation::parent); /* Both session names must be set or both must be unset. */ - if ((a->session_name && !b->session_name) || - (!a->session_name && b->session_name)) { + if ((a->session_name && !b->session_name) || (!a->session_name && b->session_name)) { WARN("Comparing session rotation conditions with uninitialized session names."); goto end; } - if (a->session_name && b->session_name && - strcmp(a->session_name, b->session_name)) { + if (a->session_name && b->session_name && strcmp(a->session_name, b->session_name)) { goto end; } @@ -166,22 +142,18 @@ end: return is_equal; } -static -void lttng_condition_session_rotation_destroy( - struct lttng_condition *condition) +static void lttng_condition_session_rotation_destroy(struct lttng_condition *condition) { struct lttng_condition_session_rotation *rotation; - rotation = lttng::utils::container_of(condition, - <tng_condition_session_rotation::parent); + rotation = lttng::utils::container_of(condition, <tng_condition_session_rotation::parent); free(rotation->session_name); free(rotation); } -static -struct lttng_condition *lttng_condition_session_rotation_create( - enum lttng_condition_type type) +static struct lttng_condition * +lttng_condition_session_rotation_create(enum lttng_condition_type type) { struct lttng_condition_session_rotation *condition; @@ -190,8 +162,7 @@ struct lttng_condition *lttng_condition_session_rotation_create( return NULL; } - memcpy(&condition->parent, &rotation_condition_template, - sizeof(condition->parent)); + memcpy(&condition->parent, &rotation_condition_template, sizeof(condition->parent)); lttng_condition_init(&condition->parent, type); return &condition->parent; } @@ -199,18 +170,17 @@ struct lttng_condition *lttng_condition_session_rotation_create( struct lttng_condition *lttng_condition_session_rotation_ongoing_create(void) { return lttng_condition_session_rotation_create( - LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING); + LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING); } struct lttng_condition *lttng_condition_session_rotation_completed_create(void) { return lttng_condition_session_rotation_create( - LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED); + LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED); } -static -ssize_t init_condition_from_payload(struct lttng_condition *condition, - struct lttng_payload_view *src_view) +static ssize_t init_condition_from_payload(struct lttng_condition *condition, + struct lttng_payload_view *src_view) { ssize_t ret, condition_size; enum lttng_condition_status status; @@ -218,8 +188,7 @@ ssize_t init_condition_from_payload(struct lttng_condition *condition, struct lttng_buffer_view name_view; const struct lttng_condition_session_rotation_comm *condition_comm; struct lttng_payload_view condition_comm_view = - lttng_payload_view_from_view( - src_view, 0, sizeof(*condition_comm)); + lttng_payload_view_from_view(src_view, 0, sizeof(*condition_comm)); if (!lttng_payload_view_is_valid(&condition_comm_view)) { ERR("Failed to initialize from malformed condition buffer: buffer too short to contain header"); @@ -228,8 +197,8 @@ ssize_t init_condition_from_payload(struct lttng_condition *condition, } condition_comm = (typeof(condition_comm)) src_view->buffer.data; - name_view = lttng_buffer_view_from_view(&src_view->buffer, - sizeof(*condition_comm), condition_comm->session_name_len); + name_view = lttng_buffer_view_from_view( + &src_view->buffer, sizeof(*condition_comm), condition_comm->session_name_len); if (!lttng_buffer_view_is_valid(&name_view)) { ERR("Failed to initialize from malformed condition buffer: buffer too short to contain session name"); @@ -250,8 +219,7 @@ ssize_t init_condition_from_payload(struct lttng_condition *condition, goto end; } - status = lttng_condition_session_rotation_set_session_name(condition, - session_name); + status = lttng_condition_session_rotation_set_session_name(condition, session_name); if (status != LTTNG_CONDITION_STATUS_OK) { ERR("Failed to set buffer consumed session name"); ret = -1; @@ -263,18 +231,16 @@ ssize_t init_condition_from_payload(struct lttng_condition *condition, goto end; } - condition_size = sizeof(*condition_comm) + - (ssize_t) condition_comm->session_name_len; + condition_size = sizeof(*condition_comm) + (ssize_t) condition_comm->session_name_len; ret = condition_size; end: return ret; } -static -ssize_t lttng_condition_session_rotation_create_from_payload( - struct lttng_payload_view *view, - struct lttng_condition **_condition, - enum lttng_condition_type type) +static ssize_t +lttng_condition_session_rotation_create_from_payload(struct lttng_payload_view *view, + struct lttng_condition **_condition, + enum lttng_condition_type type) { ssize_t ret; struct lttng_condition *condition = NULL; @@ -308,28 +274,24 @@ error: return ret; } -ssize_t lttng_condition_session_rotation_ongoing_create_from_payload( - struct lttng_payload_view *view, - struct lttng_condition **condition) +ssize_t +lttng_condition_session_rotation_ongoing_create_from_payload(struct lttng_payload_view *view, + struct lttng_condition **condition) { - return lttng_condition_session_rotation_create_from_payload(view, - condition, - LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING); + return lttng_condition_session_rotation_create_from_payload( + view, condition, LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING); } -ssize_t lttng_condition_session_rotation_completed_create_from_payload( - struct lttng_payload_view *view, - struct lttng_condition **condition) +ssize_t +lttng_condition_session_rotation_completed_create_from_payload(struct lttng_payload_view *view, + struct lttng_condition **condition) { - return lttng_condition_session_rotation_create_from_payload(view, - condition, - LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED); + return lttng_condition_session_rotation_create_from_payload( + view, condition, LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED); } -static -struct lttng_evaluation *lttng_evaluation_session_rotation_create( - enum lttng_condition_type type, uint64_t id, - struct lttng_trace_archive_location *location) +static struct lttng_evaluation *lttng_evaluation_session_rotation_create( + enum lttng_condition_type type, uint64_t id, struct lttng_trace_archive_location *location) { struct lttng_evaluation_session_rotation *evaluation; @@ -338,8 +300,7 @@ struct lttng_evaluation *lttng_evaluation_session_rotation_create( return NULL; } - memcpy(&evaluation->parent, &rotation_evaluation_template, - sizeof(evaluation->parent)); + memcpy(&evaluation->parent, &rotation_evaluation_template, sizeof(evaluation->parent)); lttng_evaluation_init(&evaluation->parent, type); evaluation->id = id; if (location) { @@ -349,18 +310,15 @@ struct lttng_evaluation *lttng_evaluation_session_rotation_create( return &evaluation->parent; } -static -ssize_t create_evaluation_from_payload( - enum lttng_condition_type type, - struct lttng_payload_view *view, - struct lttng_evaluation **_evaluation) +static ssize_t create_evaluation_from_payload(enum lttng_condition_type type, + struct lttng_payload_view *view, + struct lttng_evaluation **_evaluation) { ssize_t ret, size; struct lttng_evaluation *evaluation = NULL; struct lttng_trace_archive_location *location = NULL; const struct lttng_evaluation_session_rotation_comm *comm; - struct lttng_payload_view comm_view = lttng_payload_view_from_view( - view, 0, sizeof(*comm)); + struct lttng_payload_view comm_view = lttng_payload_view_from_view(view, 0, sizeof(*comm)); if (!lttng_payload_view_is_valid(&comm_view)) { goto error; @@ -370,23 +328,20 @@ ssize_t create_evaluation_from_payload( size = sizeof(*comm); if (comm->has_location) { const struct lttng_buffer_view location_view = - lttng_buffer_view_from_view( - &view->buffer, sizeof(*comm), -1); + lttng_buffer_view_from_view(&view->buffer, sizeof(*comm), -1); if (!lttng_buffer_view_is_valid(&location_view)) { goto error; } - ret = lttng_trace_archive_location_create_from_buffer( - &location_view, &location); + ret = lttng_trace_archive_location_create_from_buffer(&location_view, &location); if (ret < 0) { goto error; } size += ret; } - evaluation = lttng_evaluation_session_rotation_create(type, comm->id, - location); + evaluation = lttng_evaluation_session_rotation_create(type, comm->id, location); if (!evaluation) { goto error; } @@ -401,11 +356,10 @@ error: return -1; } -static -ssize_t lttng_evaluation_session_rotation_create_from_payload( - enum lttng_condition_type type, - struct lttng_payload_view *view, - struct lttng_evaluation **_evaluation) +static ssize_t +lttng_evaluation_session_rotation_create_from_payload(enum lttng_condition_type type, + struct lttng_payload_view *view, + struct lttng_evaluation **_evaluation) { ssize_t ret; struct lttng_evaluation *evaluation = NULL; @@ -427,44 +381,38 @@ error: return ret; } -ssize_t lttng_evaluation_session_rotation_ongoing_create_from_payload( - struct lttng_payload_view *view, - struct lttng_evaluation **evaluation) +ssize_t +lttng_evaluation_session_rotation_ongoing_create_from_payload(struct lttng_payload_view *view, + struct lttng_evaluation **evaluation) { return lttng_evaluation_session_rotation_create_from_payload( - LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING, - view, evaluation); + LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING, view, evaluation); } ssize_t lttng_evaluation_session_rotation_completed_create_from_payload( - struct lttng_payload_view *view, - struct lttng_evaluation **evaluation) + struct lttng_payload_view *view, struct lttng_evaluation **evaluation) { return lttng_evaluation_session_rotation_create_from_payload( - LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED, - view, evaluation); + LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED, view, evaluation); } -struct lttng_evaluation *lttng_evaluation_session_rotation_ongoing_create( - uint64_t id) +struct lttng_evaluation *lttng_evaluation_session_rotation_ongoing_create(uint64_t id) { return lttng_evaluation_session_rotation_create( - LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING, id, - NULL); + LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING, id, NULL); } -struct lttng_evaluation *lttng_evaluation_session_rotation_completed_create( - uint64_t id, struct lttng_trace_archive_location *location) +struct lttng_evaluation * +lttng_evaluation_session_rotation_completed_create(uint64_t id, + struct lttng_trace_archive_location *location) { return lttng_evaluation_session_rotation_create( - LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED, id, - location); + LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED, id, location); } enum lttng_condition_status -lttng_condition_session_rotation_get_session_name( - const struct lttng_condition *condition, - const char **session_name) +lttng_condition_session_rotation_get_session_name(const struct lttng_condition *condition, + const char **session_name) { struct lttng_condition_session_rotation *rotation; enum lttng_condition_status status = LTTNG_CONDITION_STATUS_OK; @@ -474,8 +422,7 @@ lttng_condition_session_rotation_get_session_name( goto end; } - rotation = lttng::utils::container_of(condition, - <tng_condition_session_rotation::parent); + rotation = lttng::utils::container_of(condition, <tng_condition_session_rotation::parent); if (!rotation->session_name) { status = LTTNG_CONDITION_STATUS_UNSET; goto end; @@ -486,21 +433,20 @@ end: } enum lttng_condition_status -lttng_condition_session_rotation_set_session_name( - struct lttng_condition *condition, const char *session_name) +lttng_condition_session_rotation_set_session_name(struct lttng_condition *condition, + const char *session_name) { char *session_name_copy; struct lttng_condition_session_rotation *rotation; enum lttng_condition_status status = LTTNG_CONDITION_STATUS_OK; - if (!condition || !is_rotation_condition(condition) || - !session_name || strlen(session_name) == 0) { + if (!condition || !is_rotation_condition(condition) || !session_name || + strlen(session_name) == 0) { status = LTTNG_CONDITION_STATUS_INVALID; goto end; } - rotation = lttng::utils::container_of(condition, - <tng_condition_session_rotation::parent); + rotation = lttng::utils::container_of(condition, <tng_condition_session_rotation::parent); session_name_copy = strdup(session_name); if (!session_name_copy) { status = LTTNG_CONDITION_STATUS_ERROR; @@ -513,48 +459,41 @@ end: return status; } -static -int lttng_evaluation_session_rotation_serialize( - const struct lttng_evaluation *evaluation, - struct lttng_payload *payload) +static int lttng_evaluation_session_rotation_serialize(const struct lttng_evaluation *evaluation, + struct lttng_payload *payload) { int ret; struct lttng_evaluation_session_rotation *rotation; struct lttng_evaluation_session_rotation_comm comm = {}; - rotation = lttng::utils::container_of(evaluation, - <tng_evaluation_session_rotation::parent); + rotation = + lttng::utils::container_of(evaluation, <tng_evaluation_session_rotation::parent); comm.id = rotation->id; comm.has_location = !!rotation->location; - ret = lttng_dynamic_buffer_append( - &payload->buffer, &comm, sizeof(comm)); + ret = lttng_dynamic_buffer_append(&payload->buffer, &comm, sizeof(comm)); if (ret) { goto end; } if (!rotation->location) { goto end; } - ret = lttng_trace_archive_location_serialize(rotation->location, - &payload->buffer); + ret = lttng_trace_archive_location_serialize(rotation->location, &payload->buffer); end: return ret; } -static -void lttng_evaluation_session_rotation_destroy( - struct lttng_evaluation *evaluation) +static void lttng_evaluation_session_rotation_destroy(struct lttng_evaluation *evaluation) { struct lttng_evaluation_session_rotation *rotation; - rotation = lttng::utils::container_of(evaluation, - <tng_evaluation_session_rotation::parent); + rotation = + lttng::utils::container_of(evaluation, <tng_evaluation_session_rotation::parent); lttng_trace_archive_location_put(rotation->location); free(rotation); } enum lttng_evaluation_status -lttng_evaluation_session_rotation_get_id( - const struct lttng_evaluation *evaluation, uint64_t *id) +lttng_evaluation_session_rotation_get_id(const struct lttng_evaluation *evaluation, uint64_t *id) { const struct lttng_evaluation_session_rotation *rotation; enum lttng_evaluation_status status = LTTNG_EVALUATION_STATUS_OK; @@ -564,8 +503,8 @@ lttng_evaluation_session_rotation_get_id( goto end; } - rotation = lttng::utils::container_of(evaluation, - <tng_evaluation_session_rotation::parent); + rotation = + lttng::utils::container_of(evaluation, <tng_evaluation_session_rotation::parent); *id = rotation->id; end: return status; @@ -577,31 +516,29 @@ end: * trace archive location. Hence, users of liblttng-ctl have no visibility of * the reference counting of archive locations. */ -enum lttng_evaluation_status -lttng_evaluation_session_rotation_completed_get_location( - const struct lttng_evaluation *evaluation, - const struct lttng_trace_archive_location **location) +enum lttng_evaluation_status lttng_evaluation_session_rotation_completed_get_location( + const struct lttng_evaluation *evaluation, + const struct lttng_trace_archive_location **location) { const struct lttng_evaluation_session_rotation *rotation; enum lttng_evaluation_status status = LTTNG_EVALUATION_STATUS_OK; if (!evaluation || !location || - evaluation->type != LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED) { + evaluation->type != LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED) { status = LTTNG_EVALUATION_STATUS_INVALID; goto end; } - rotation = lttng::utils::container_of(evaluation, - <tng_evaluation_session_rotation::parent); + rotation = + lttng::utils::container_of(evaluation, <tng_evaluation_session_rotation::parent); *location = rotation->location; end: return status; } -static -enum lttng_error_code lttng_condition_session_rotation_mi_serialize( - const struct lttng_condition *condition, - struct mi_writer *writer) +static enum lttng_error_code +lttng_condition_session_rotation_mi_serialize(const struct lttng_condition *condition, + struct mi_writer *writer) { int ret; enum lttng_error_code ret_code; @@ -615,20 +552,17 @@ enum lttng_error_code lttng_condition_session_rotation_mi_serialize( switch (lttng_condition_get_type(condition)) { case LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED: - type_element_str = - mi_lttng_element_condition_session_rotation_completed; + type_element_str = mi_lttng_element_condition_session_rotation_completed; break; case LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING: - type_element_str = - mi_lttng_element_condition_session_rotation_ongoing; + type_element_str = mi_lttng_element_condition_session_rotation_ongoing; break; default: abort(); break; } - status = lttng_condition_session_rotation_get_session_name( - condition, &session_name); + status = lttng_condition_session_rotation_get_session_name(condition, &session_name); LTTNG_ASSERT(status == LTTNG_CONDITION_STATUS_OK); LTTNG_ASSERT(session_name); @@ -640,7 +574,7 @@ enum lttng_error_code lttng_condition_session_rotation_mi_serialize( /* Session name. */ ret = mi_lttng_writer_write_element_string( - writer, mi_lttng_element_session_name, session_name); + writer, mi_lttng_element_session_name, session_name); if (ret) { goto mi_error; }