summaryrefslogtreecommitdiff
path: root/include/dlt/dlt_common.h
diff options
context:
space:
mode:
authorAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2011-11-14 19:28:47 +0100
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2011-11-14 19:28:47 +0100
commitc74050b028d91c9bb8995dafba440babc7b621ff (patch)
tree01933b7aa5ea60c543158035498d3539647acbdf /include/dlt/dlt_common.h
parentd2cd4df1b6d43a409f04c0bc8eb1003bec922912 (diff)
downloadDLT-daemon-c74050b028d91c9bb8995dafba440babc7b621ff.tar.gz
Created abstraction of shm buffer management.
Diffstat (limited to 'include/dlt/dlt_common.h')
-rwxr-xr-xinclude/dlt/dlt_common.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/include/dlt/dlt_common.h b/include/dlt/dlt_common.h
index be315a0..cb317c6 100755
--- a/include/dlt/dlt_common.h
+++ b/include/dlt/dlt_common.h
@@ -417,6 +417,7 @@ typedef struct
*/
typedef struct
{
+
uint32_t service_id; /**< service ID */
char apid[DLT_ID_SIZE]; /**< application id */
char ctid[DLT_ID_SIZE]; /**< context id */
@@ -557,6 +558,26 @@ typedef struct
uint32_t count; /**< nr. of entries */
} DltRingBuffer;
+typedef struct
+{
+ char* shm; /* pointer to beginning of shared memory */
+ int size; /* size of data area in shared memory */
+ char* mem; /* pointer to data area in shared memory */
+
+ uint32_t min_size; /**< Minimum size of buffer */
+ uint32_t max_size; /**< Maximum size of buffer */
+ uint32_t step_size; /**< Step size of buffer */
+} DltBuffer;
+
+#define DLT_BUFFER_HEAD "SHM"
+
+typedef struct
+{
+ char head[4];
+ unsigned char status;
+ int size;
+} DltBufferBlockHead;
+
#ifdef __cplusplus
extern "C"
{
@@ -942,6 +963,29 @@ extern "C"
*/
int dlt_check_storageheader(DltStorageHeader *storageheader);
+
+ int dlt_buffer_init_static_server(DltBuffer *buf, const unsigned char *ptr, uint32_t size);
+ int dlt_buffer_init_static_client(DltBuffer *buf, const unsigned char *ptr, uint32_t size);
+ int dlt_buffer_init_dynamic(DltBuffer *buf, uint32_t min_size, uint32_t max_size,uint32_t step_size);
+ int dlt_buffer_free_static(DltBuffer *buf);
+ int dlt_buffer_free_dynamic(DltBuffer *buf);
+ int dlt_buffer_push(DltBuffer *buf,const unsigned char *data,unsigned int size);
+ int dlt_buffer_push3(DltBuffer *buf,const unsigned char *data1,unsigned int size1,const unsigned char *data2,unsigned int size2,const unsigned char *data3,unsigned int size3);
+ int dlt_buffer_pull(DltBuffer *buf,unsigned char *data, int max_size);
+ int dlt_buffer_copy(DltBuffer *buf,unsigned char *data, int max_size);
+ int dlt_buffer_remove(DltBuffer *buf);
+ void dlt_buffer_info(DltBuffer *buf);
+ void dlt_buffer_status(DltBuffer *buf);
+ int dlt_buffer_get_total_size(DltBuffer *buf);
+ int dlt_buffer_get_used_size(DltBuffer *buf);
+ int dlt_buffer_get_message_count(DltBuffer *buf);
+
+ int dlt_buffer_get(DltBuffer *buf,unsigned char *data, int max_size,int delete);
+ int dlt_buffer_reset(DltBuffer *buf);
+ void dlt_buffer_write_block(DltBuffer *buf,int *write, const unsigned char *data,unsigned int size);
+ void dlt_buffer_read_block(DltBuffer *buf,int *read,unsigned char *data,unsigned int size);
+
+
/**
* Initialize ringbuffer of with a maximum size of size
* @param dltbuf Pointer to ringbuffer structure