summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2011-09-23 13:01:40 +0200
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2011-09-23 13:01:40 +0200
commit50894750e987f38d1769eb1661ec77be3e2a8ba7 (patch)
tree486193324894daf4cb6daadab7f96fe6d915b83c /src/lib
parent101dab1a5261189a13068810ee57fe76b64ad909 (diff)
downloadDLT-daemon-50894750e987f38d1769eb1661ec77be3e2a8ba7.tar.gz
First prototype to switch to shm communication
Diffstat (limited to 'src/lib')
-rwxr-xr-xsrc/lib/CMakeLists.txt2
-rwxr-xr-xsrc/lib/dlt_user.c22
2 files changed, 19 insertions, 5 deletions
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index 8e81cfb..1d33d21 100755
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -35,7 +35,7 @@
# @licence end@
########
-set(dlt_LIB_SRCS dlt_user dlt_client ${CMAKE_SOURCE_DIR}/src/shared/dlt_common.c ${CMAKE_SOURCE_DIR}/src/shared/dlt_user_shared.c )
+set(dlt_LIB_SRCS dlt_user dlt_client ${CMAKE_SOURCE_DIR}/src/shared/dlt_common.c ${CMAKE_SOURCE_DIR}/src/shared/dlt_user_shared.c ${CMAKE_SOURCE_DIR}/src/shared/dlt_shm.c)
add_library(dlt ${dlt_LIB_SRCS})
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c
index 0764efc..110750e 100755
--- a/src/lib/dlt_user.c
+++ b/src/lib/dlt_user.c
@@ -159,9 +159,17 @@ int dlt_init(void)
dlt_user.dlt_is_file = 0;
dlt_user.overflow = 0;
+ /* init shared memory */
+ if (dlt_shm_init_client(&dlt_user.dlt_shm,DLT_SHM_KEY,DLT_SHM_SIZE) < 0)
+ {
+ sprintf(str,"Loging disabled, Shared memory %d cannot be created!\n",DLT_SHM_KEY);
+ dlt_log(LOG_WARNING, str);
+ return 0;
+ }
+
/* create and open DLT user FIFO */
sprintf(filename,"%s/dlt%d",DLT_USER_DIR,getpid());
-
+
/* Try to delete existing pipe, ignore result of unlink */
unlink(filename);
@@ -352,6 +360,9 @@ int dlt_free(void)
unlink(filename);
}
+ /* free shared memory */
+ dlt_shm_free_client(&dlt_user.dlt_shm);
+
if (dlt_user.dlt_log_handle!=-1)
{
/* close log file/output fifo to daemon */
@@ -2151,12 +2162,15 @@ int dlt_user_log_send_log(DltContextData *log, int mtype)
}
}
+ dlt_shm_push(&dlt_user.dlt_shm,msg.headerbuffer+sizeof(DltStorageHeader), msg.headersize-sizeof(DltStorageHeader),
+ log->buffer, log->size,0,0);
+
/* log to FIFO */
ret = dlt_user_log_out3(dlt_user.dlt_log_handle,
&(userheader), sizeof(DltUserHeader),
- msg.headerbuffer+sizeof(DltStorageHeader), msg.headersize-sizeof(DltStorageHeader),
- log->buffer, log->size);
-
+ 0, 0,
+ 0, 0);
+
/* store message in ringbuffer, if an error has occured */
if (ret!=DLT_RETURN_OK)
{