summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2012-06-27 16:41:34 +0200
committerChristian Muck <christian.muck@bmw.de>2012-09-27 09:02:33 +0200
commite79829e9a65b0d1c7b371578278fef3f9e31fb54 (patch)
tree67fa0e84c60b3f4c0194ebcfce6c9f514759a930
parent80462845a79f962493178722ee2fc439a62611e1 (diff)
downloadDLT-daemon-e79829e9a65b0d1c7b371578278fef3f9e31fb54.tar.gz
Fix register app and register context was not stored in buffer when FIFO is full. Other controll messages still not saved in buffer.
-rwxr-xr-xsrc/lib/dlt_user.c43
1 files changed, 41 insertions, 2 deletions
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c
index 958c9eb..e259e46 100755
--- a/src/lib/dlt_user.c
+++ b/src/lib/dlt_user.c
@@ -2404,7 +2404,26 @@ int dlt_user_log_send_register_application(void)
/* log to FIFO */
ret=dlt_user_log_out3(dlt_user.dlt_log_handle, &(userheader), sizeof(DltUserHeader), &(usercontext), sizeof(DltUserControlMsgRegisterApplication),dlt_user.application_description,usercontext.description_length);
- return ((ret==DLT_RETURN_OK)?0:-1);
+
+ /* store message in ringbuffer, if an error has occured */
+ if (ret!=DLT_RETURN_OK)
+ {
+ DLT_SEM_LOCK();
+
+ if (dlt_buffer_push3(&(dlt_user.startup_buffer),
+ (unsigned char *)&(userheader), sizeof(DltUserHeader),
+ (const unsigned char*)&(usercontext), sizeof(DltUserControlMsgRegisterApplication),
+ (const unsigned char*)dlt_user.application_description, usercontext.description_length)==-1)
+ {
+ dlt_log(LOG_ERR,"Storing message to history buffer failed! Message discarded.\n");
+ DLT_SEM_FREE();
+ return -1;
+ }
+
+ DLT_SEM_FREE();
+ }
+
+ return 0;
}
int dlt_user_log_send_unregister_application(void)
@@ -2491,7 +2510,27 @@ int dlt_user_log_send_register_context(DltContextData *log)
/* log to FIFO */
ret=dlt_user_log_out3(dlt_user.dlt_log_handle, &(userheader), sizeof(DltUserHeader), &(usercontext), sizeof(DltUserControlMsgRegisterContext),log->context_description,usercontext.description_length);
- return ((ret==DLT_RETURN_OK)?0:-1);
+
+ /* store message in ringbuffer, if an error has occured */
+ if (ret!=DLT_RETURN_OK)
+ {
+ DLT_SEM_LOCK();
+
+ if (dlt_buffer_push3(&(dlt_user.startup_buffer),
+ (unsigned char *)&(userheader), sizeof(DltUserHeader),
+ (const unsigned char*)&(usercontext), sizeof(DltUserControlMsgRegisterContext),
+ (const unsigned char*)log->context_description, usercontext.description_length)==-1)
+ {
+ dlt_log(LOG_ERR,"Storing message to history buffer failed! Message discarded.\n");
+ DLT_SEM_FREE();
+ return -1;
+ }
+
+ DLT_SEM_FREE();
+ }
+
+ return 0;
+
}
int dlt_user_log_send_unregister_context(DltContextData *log)