From c7c8c6f69ad136336da2833bbb2f513d461d9177 Mon Sep 17 00:00:00 2001 From: Saya Sugiura Date: Wed, 20 Mar 2019 16:41:52 +0900 Subject: lib: Add mq_close/mq_unlink conditions Even if network trace is not used in the application, the library will call mq_close() and mq_unlink() to segmented queue handles and queue names, which triggers unnecessary close(). It is now modified to call mq_close() and mq_unlink() only when network trace is initialized. Signed-off-by: Saya Sugiura --- src/lib/dlt_user.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c index 66ffd0b..cb7f570 100644 --- a/src/lib/dlt_user.c +++ b/src/lib/dlt_user.c @@ -922,11 +922,18 @@ DltReturnValue dlt_free(void) * Ignore errors from these, to not to spam user if dlt_free * is accidentally called multiple times. */ - mq_close(dlt_user.dlt_segmented_queue_write_handle); - mq_close(dlt_user.dlt_segmented_queue_read_handle); - dlt_user.dlt_segmented_queue_write_handle = -1; - dlt_user.dlt_segmented_queue_read_handle = -1; - mq_unlink(queue_name); + if (dlt_user.dlt_segmented_queue_write_handle > 0) + mq_close(dlt_user.dlt_segmented_queue_write_handle); + + if (dlt_user.dlt_segmented_queue_read_handle > 0) + mq_close(dlt_user.dlt_segmented_queue_read_handle); + + if ((dlt_user.dlt_segmented_queue_write_handle > 0) || + (dlt_user.dlt_segmented_queue_read_handle > 0)) + mq_unlink(queue_name); + + dlt_user.dlt_segmented_queue_write_handle = DLT_FD_INIT; + dlt_user.dlt_segmented_queue_read_handle = DLT_FD_INIT; pthread_cond_destroy(&mq_init_condition); pthread_mutex_destroy(&mq_mutex); -- cgit v1.2.1