summaryrefslogtreecommitdiff
path: root/src/shared/dlt_shm.c
diff options
context:
space:
mode:
authorAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2011-11-22 10:57:33 +0100
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2011-11-22 10:57:33 +0100
commitc8cd582507923a1f7ddcc05af47ea30a452e8c34 (patch)
tree0769d18dd9935f4228a32a6744707bc64d2331ad /src/shared/dlt_shm.c
parentc870bcb94957fcbab7f56b6cd3ff5a0fc659f24c (diff)
downloadDLT-daemon-c8cd582507923a1f7ddcc05af47ea30a452e8c34.tar.gz
dlt-system filetransfer now recovers when file is deleted during filetransfer.
Added check of file size when starting and deleting files during filetransfer. Added check of shm buffer availability when push to shm.
Diffstat (limited to 'src/shared/dlt_shm.c')
-rw-r--r--src/shared/dlt_shm.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/shared/dlt_shm.c b/src/shared/dlt_shm.c
index 5f54f88..f330864 100644
--- a/src/shared/dlt_shm.c
+++ b/src/shared/dlt_shm.c
@@ -211,6 +211,10 @@ int dlt_shm_get_used_size(DltShm *buf)
{
int ret;
+ /* check if buffer available */
+ if(!buf->buffer.mem)
+ return -1;
+
DLT_SHM_SEM_GET(buf->semid);
ret = dlt_buffer_get_used_size(&(buf->buffer));
DLT_SHM_SEM_FREE(buf->semid);
@@ -227,6 +231,10 @@ int dlt_shm_push(DltShm *buf,const unsigned char *data1,unsigned int size1,const
{
int ret;
+ /* check if buffer available */
+ if(!buf->buffer.mem)
+ return -1;
+
DLT_SHM_SEM_GET(buf->semid);
ret = dlt_buffer_push3(&(buf->buffer),data1,size1,data2,size2,data3,size3);
DLT_SHM_SEM_FREE(buf->semid);
@@ -238,6 +246,10 @@ int dlt_shm_pull(DltShm *buf,unsigned char *data, int max_size)
{
int ret;
+ /* check if buffer available */
+ if(!buf->buffer.mem)
+ return -1;
+
DLT_SHM_SEM_GET(buf->semid);
ret = dlt_buffer_pull(&(buf->buffer),data,max_size);
DLT_SHM_SEM_FREE(buf->semid);
@@ -249,6 +261,10 @@ int dlt_shm_copy(DltShm *buf,unsigned char *data, int max_size)
{
int ret;
+ /* check if buffer available */
+ if(!buf->buffer.mem)
+ return -1;
+
DLT_SHM_SEM_GET(buf->semid);
ret = dlt_buffer_copy(&(buf->buffer),data,max_size);
DLT_SHM_SEM_FREE(buf->semid);
@@ -260,6 +276,10 @@ int dlt_shm_remove(DltShm *buf)
{
int ret;
+ /* check if buffer available */
+ if(!buf->buffer.mem)
+ return -1;
+
DLT_SHM_SEM_GET(buf->semid);
ret = dlt_buffer_remove(&(buf->buffer));
DLT_SHM_SEM_FREE(buf->semid);