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-04 13:03:53 +0200
commit725dc2e72b68f81ec23252b4d7a7483822f487b2 (patch)
tree6a6314b06c985cb8638bb7897bc07fe0d7395db4
parenta614806e7e5a6f7fbdf67b3624e0aec1877445b9 (diff)
downloadDLT-daemon-725dc2e72b68f81ec23252b4d7a7483822f487b2.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.
Signed-off-by: Christian Muck <christian.muck@bmw.de>
-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)