summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaya Sugiura <ssugiura@jp.adit-jv.com>2019-03-20 16:41:52 +0900
committerSaya Sugiura <ssugiura@jp.adit-jv.com>2019-03-27 10:44:24 +0900
commitc7c8c6f69ad136336da2833bbb2f513d461d9177 (patch)
treeb4daa26ac3580941408c0c8a59746eb9053dcf2a
parent417b4156e2f95d726d148d17351c8c90e595613d (diff)
downloadDLT-daemon-c7c8c6f69ad136336da2833bbb2f513d461d9177.tar.gz
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 <ssugiura@jp.adit-jv.com>
-rw-r--r--src/lib/dlt_user.c17
1 files 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);