X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Fdestruction-handle.c;h=26ae7d3065f863840143020cffe61e7e982e101e;hp=55e1604363bfd87648b91f7937fdcb58771d0c84;hb=657d1bf105996bf8f6e13af697fb1112afa61b28;hpb=cb98e7dd0dccc3b79b4f54d64be67f6d548f8933 diff --git a/src/lib/lttng-ctl/destruction-handle.c b/src/lib/lttng-ctl/destruction-handle.c index 55e160436..26ae7d306 100644 --- a/src/lib/lttng-ctl/destruction-handle.c +++ b/src/lib/lttng-ctl/destruction-handle.c @@ -1,18 +1,8 @@ /* - * Copyright (C) 2019 - Jérémie Galarneau + * Copyright (C) 2019 Jérémie Galarneau * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License, version 2.1 only, - * as published by the Free Software Foundation. + * SPDX-License-Identifier: LGPL-2.1-only * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include @@ -66,10 +56,10 @@ void lttng_destruction_handle_destroy(struct lttng_destruction_handle *handle) if (ret) { PERROR("Failed to close lttng-sessiond command socket"); } - } - lttng_poll_clean(&handle->communication.events); + } + lttng_poll_clean(&handle->communication.events); lttng_dynamic_buffer_reset(&handle->communication.buffer); - lttng_trace_archive_location_destroy(handle->location); + lttng_trace_archive_location_put(handle->location); free(handle); } @@ -92,9 +82,9 @@ struct lttng_destruction_handle *lttng_destruction_handle_create( ret = lttng_poll_add(&handle->communication.events, sessiond_socket, LPOLLIN | LPOLLHUP | LPOLLRDHUP | LPOLLERR); - if (ret) { + if (ret) { goto error; - } + } handle->communication.bytes_left_to_receive = sizeof(struct lttcomm_lttng_msg); @@ -111,7 +101,7 @@ int handle_state_transition(struct lttng_destruction_handle *handle) { int ret = 0; - assert(handle->communication.bytes_left_to_receive == 0); + LTTNG_ASSERT(handle->communication.bytes_left_to_receive == 0); switch (handle->communication.state) { case COMMUNICATION_STATE_RECEIVE_LTTNG_MSG: @@ -139,7 +129,7 @@ int handle_state_transition(struct lttng_destruction_handle *handle) msg->data_size); ret = lttng_dynamic_buffer_set_size( &handle->communication.buffer, 0); - assert(!ret); + LTTNG_ASSERT(!ret); break; } case COMMUNICATION_STATE_RECEIVE_COMMAND_HEADER: @@ -183,6 +173,7 @@ int handle_state_transition(struct lttng_destruction_handle *handle) ret = -1; break; } else { + /* Ownership is transferred to the destruction handle. */ handle->location = location; handle->communication.state = COMMUNICATION_STATE_END; } @@ -237,43 +228,42 @@ enum lttng_destruction_handle_status lttng_destruction_handle_wait_for_completion( struct lttng_destruction_handle *handle, int timeout_ms) { - int ret; enum lttng_destruction_handle_status status; unsigned long time_left_ms = 0; const bool has_timeout = timeout_ms > 0; - struct timespec initial_time; + struct timespec initial_time; if (!handle) { status = LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID; goto end; } - if (handle->communication.state == COMMUNICATION_STATE_ERROR) { + if (handle->communication.state == COMMUNICATION_STATE_ERROR) { status = LTTNG_DESTRUCTION_HANDLE_STATUS_ERROR; goto end; } else if (handle->communication.state == COMMUNICATION_STATE_END) { status = LTTNG_DESTRUCTION_HANDLE_STATUS_COMPLETED; goto end; } - if (has_timeout) { - ret = lttng_clock_gettime(CLOCK_MONOTONIC, &initial_time); + if (has_timeout) { + int ret = lttng_clock_gettime(CLOCK_MONOTONIC, &initial_time); if (ret) { status = LTTNG_DESTRUCTION_HANDLE_STATUS_ERROR; goto end; } time_left_ms = (unsigned long) timeout_ms; - } + } - while (handle->communication.state != COMMUNICATION_STATE_END && + while (handle->communication.state != COMMUNICATION_STATE_END && (time_left_ms || !has_timeout)) { int ret; uint32_t revents; - struct timespec current_time, diff; + struct timespec current_time, diff; unsigned long diff_ms; - ret = lttng_poll_wait(&handle->communication.events, + ret = lttng_poll_wait(&handle->communication.events, has_timeout ? time_left_ms : -1); - if (ret == 0) { + if (ret == 0) { /* timeout */ break; } else if (ret < 0) { @@ -398,13 +388,13 @@ enum lttng_error_code lttng_destroy_session_ext(const char *session_name, int ret; ssize_t comm_ret; enum lttng_error_code ret_code = LTTNG_OK; - struct lttcomm_session_msg lsm = { + struct lttcomm_session_msg lsm = { .cmd_type = LTTNG_DESTROY_SESSION, }; int sessiond_socket = -1; struct lttng_destruction_handle *handle = NULL; - if (!session_name || !_handle) { + if (!session_name) { ret_code = LTTNG_ERR_INVALID; goto error; }