diff options
author | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2011-09-29 15:24:54 +0200 |
---|---|---|
committer | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2011-09-29 15:24:54 +0200 |
commit | c37ecb5031eebc36bfba8be0d741ec858e8898f7 (patch) | |
tree | f5ab98bf34fb9e70522386a8625d54425a6fb5d2 /src/shared/dlt_shm.c | |
parent | 8fd55260f1d572939f185e014aef34a53b50de8b (diff) | |
download | DLT-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.c | 27 |
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; |