summaryrefslogtreecommitdiff
path: root/src/shared/dlt_shm.c
diff options
context:
space:
mode:
authorAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2011-09-29 15:24:54 +0200
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2011-09-29 15:24:54 +0200
commitc37ecb5031eebc36bfba8be0d741ec858e8898f7 (patch)
treef5ab98bf34fb9e70522386a8625d54425a6fb5d2 /src/shared/dlt_shm.c
parent8fd55260f1d572939f185e014aef34a53b50de8b (diff)
downloadDLT-daemon-c37ecb5031eebc36bfba8be0d741ec858e8898f7.tar.gz
Fixed filetransfer to use shm status for flow control.
Added new function to dlt user library.
Diffstat (limited to 'src/shared/dlt_shm.c')
-rw-r--r--src/shared/dlt_shm.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/shared/dlt_shm.c b/src/shared/dlt_shm.c
index e3ec7c6..11993d7 100644
--- a/src/shared/dlt_shm.c
+++ b/src/shared/dlt_shm.c
@@ -229,6 +229,33 @@ void dlt_shm_status(DltShm *buf)
}
+int dlt_shm_get_total_size(DltShm *buf)
+{
+ return buf->size;
+}
+
+int dlt_shm_get_used_size(DltShm *buf)
+{
+ int write, read, count;
+
+ write = ((int*)(buf->shm))[0];
+ read = ((int*)(buf->shm))[1];
+ count = ((int*)(buf->shm))[2];
+
+ if(count == 0)
+ return 0;
+
+ if(write>read)
+ return (write - read);
+
+ return (buf->size - read + write);
+}
+
+int dlt_shm_get_message_count(DltShm *buf)
+{
+ return ((int*)(buf->shm))[2];
+}
+
int dlt_shm_push(DltShm *buf,const unsigned char *data1,unsigned int size1,const unsigned char *data2,unsigned int size2,const unsigned char *data3,unsigned int size3)
{
int write, read, count;