diff options
author | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2012-11-27 09:19:40 +0100 |
---|---|---|
committer | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2012-12-04 14:16:44 +0100 |
commit | 1d97f52cbc598e2604eb079f776309d005846c69 (patch) | |
tree | 2444836757a729bce9826350f79d94ba4930807e | |
parent | 67ab16ef0503bb0629a729b77999dd851bdbcd47 (diff) | |
download | DLT-daemon-1d97f52cbc598e2604eb079f776309d005846c69.tar.gz |
Reduce used stack size needed by making resend buffer static.
Signed-off-by: Alexander Wenzel <Alexander.AW.Wenzel@bmw.de>
-rw-r--r-- | include/dlt/dlt_user.h | 5 | ||||
-rw-r--r-- | src/lib/dlt_user.c | 9 |
2 files changed, 9 insertions, 5 deletions
diff --git a/include/dlt/dlt_user.h b/include/dlt/dlt_user.h index cfbd2d8..0523da2 100644 --- a/include/dlt/dlt_user.h +++ b/include/dlt/dlt_user.h @@ -148,6 +148,8 @@ typedef enum #define DLT_USER_BUF_MAX_SIZE 2048 /**< maximum size of each user buffer, also used for injection buffer */ +#define DLT_USER_RESENDBUF_MAX_SIZE (DLT_USER_BUF_MAX_SIZE + 100) /**< Size of resend buffer; Max DLT message size is 2K plus some extra header space */ + /* Use a semaphore or mutex from your OS to prevent concurrent access to the DLT buffer. */ #define DLT_SEM_LOCK() { sem_wait(&dlt_mutex); } #define DLT_SEM_FREE() { sem_post(&dlt_mutex); } @@ -231,6 +233,9 @@ typedef struct //DltRingBuffer rbuf; DltBuffer startup_buffer; /**< Ring-buffer for buffering messages during startup and missing connection */ + // Buffer used for resending, locked by DLT semaphore + uint8_t resend_buffer[DLT_USER_RESENDBUF_MAX_SIZE]; + #ifdef DLT_SHM_ENABLE DltShm dlt_shm; #endif diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c index 6fdbba8..87a7ffd 100644 --- a/src/lib/dlt_user.c +++ b/src/lib/dlt_user.c @@ -3532,7 +3532,6 @@ int dlt_user_log_check_user_message(void) int dlt_user_log_resend_buffer(void) { int num,count; - uint8_t buf[DLT_USER_RCVBUF_MAX_SIZE]; int size; DltReturnValue ret; @@ -3545,18 +3544,18 @@ int dlt_user_log_resend_buffer(void) { DLT_SEM_LOCK(); - size = dlt_buffer_copy(&(dlt_user.startup_buffer),buf,sizeof(buf)); + size = dlt_buffer_copy(&(dlt_user.startup_buffer),dlt_user.resend_buffer,sizeof(dlt_user.resend_buffer)); if (size>0) { #ifdef DLT_SHM_ENABLE - dlt_shm_push(&dlt_user.dlt_shm,buf+sizeof(DltUserHeader),size-sizeof(DltUserHeader),0,0,0,0); + dlt_shm_push(&dlt_user.dlt_shm,dlt_user.resend_buffer+sizeof(DltUserHeader),size-sizeof(DltUserHeader),0,0,0,0); /* log to FIFO */ - ret = dlt_user_log_out3(dlt_user.dlt_log_handle, buf,sizeof(DltUserHeader),0,0,0,0); + ret = dlt_user_log_out3(dlt_user.dlt_log_handle, dlt_user.resend_buffer,sizeof(DltUserHeader),0,0,0,0); #else /* log to FIFO */ - ret = dlt_user_log_out3(dlt_user.dlt_log_handle, buf,size,0,0,0,0); + ret = dlt_user_log_out3(dlt_user.dlt_log_handle, dlt_user.resend_buffer,size,0,0,0,0); #endif /* in case of error, keep message in ringbuffer */ |