diff options
author | Sascha Philipp <sascha.philipp@continental-corporation.com> | 2014-09-29 09:34:36 +0200 |
---|---|---|
committer | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2015-03-25 17:12:10 +0100 |
commit | 27775afeeb2dc2ec86d41d22898fcdee57621afe (patch) | |
tree | 97ddf8e1941616a51f49240827f2c5c520706abe /src/lib/dlt_user.c | |
parent | c421bf74d364c13be93c22d79f1fd97ede9cb24e (diff) | |
download | DLT-daemon-27775afeeb2dc2ec86d41d22898fcdee57621afe.tar.gz |
Open daemon connection in atexit function
Change-Id: I43f1a3b541720d1ae06912cc5d1026daa077245a
Signed-off-by: Sascha Philipp <sascha.philipp@continental-corporation.com>
Diffstat (limited to 'src/lib/dlt_user.c')
-rw-r--r-- | src/lib/dlt_user.c | 49 |
1 files changed, 38 insertions, 11 deletions
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c index 2d81a98..95bcf8d 100644 --- a/src/lib/dlt_user.c +++ b/src/lib/dlt_user.c @@ -501,21 +501,48 @@ int dlt_user_atexit_blow_out_user_buffer(void){ uint32_t exitTime = dlt_uptime() + DLT_USER_ATEXIT_RESEND_BUFFER_EXIT_TIMEOUT; - while(dlt_uptime() < exitTime ){ + /* Send content of ringbuffer */ + DLT_SEM_LOCK(); + count = dlt_buffer_get_message_count(&(dlt_user.startup_buffer)); + DLT_SEM_FREE(); + + if (count > 0) + { + while(dlt_uptime() < exitTime ) + { + if (dlt_user.dlt_log_handle == -1) + { + /* Reattach to daemon if neccesary */ + dlt_user_log_reattach_to_daemon(); - ret = dlt_user_log_resend_buffer(); + if ((dlt_user.dlt_log_handle != -1) && (dlt_user.overflow_counter)) + { + if (dlt_user_log_send_overflow()==0) + { + snprintf(str,DLT_USER_BUFFER_LENGTH,"%u messages discarded!\n",dlt_user.overflow_counter); + dlt_log(LOG_WARNING, str); + dlt_user.overflow_counter=0; + } + } + } + + if (dlt_user.dlt_log_handle != -1) + { + ret = dlt_user_log_resend_buffer(); - if(ret == 0) - { - return 0; - } + if(ret == 0) + { + return 0; + } + } - usleep(DLT_USER_ATEXIT_RESEND_BUFFER_SLEEP); - } + usleep(DLT_USER_ATEXIT_RESEND_BUFFER_SLEEP); + } - DLT_SEM_LOCK(); - count = dlt_buffer_get_message_count(&(dlt_user.startup_buffer)); - DLT_SEM_FREE(); + DLT_SEM_LOCK(); + count = dlt_buffer_get_message_count(&(dlt_user.startup_buffer)); + DLT_SEM_FREE(); + } return count; } |