summaryrefslogtreecommitdiff
path: root/src/lib/dlt_user.c
diff options
context:
space:
mode:
authorSascha Philipp <sascha.philipp@continental-corporation.com>2014-09-29 09:34:36 +0200
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2015-03-25 17:12:10 +0100
commit27775afeeb2dc2ec86d41d22898fcdee57621afe (patch)
tree97ddf8e1941616a51f49240827f2c5c520706abe /src/lib/dlt_user.c
parentc421bf74d364c13be93c22d79f1fd97ede9cb24e (diff)
downloadDLT-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.c49
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;
}