From fe775798ca3cfe8f0f8355b9bc7b1d325a876035 Mon Sep 17 00:00:00 2001 From: Sascha Philipp Date: Thu, 24 Apr 2014 10:14:23 +0200 Subject: Reworked internal output Change-Id: I371c1b234929fda46608f563f08cae141b97d0a9 Signed-off-by: Ralf Anton Beier Signed-off-by: Sascha Philipp --- src/daemon/dlt-daemon.c | 333 ++++++++++++++++++++++++++++++----------- src/daemon/dlt_daemon_client.c | 6 +- src/daemon/dlt_daemon_common.c | 24 +-- src/daemon/dlt_daemon_socket.c | 12 +- src/lib/dlt_user.c | 57 ++++--- src/shared/dlt_common.c | 215 ++++++++++---------------- src/shared/dlt_shm.c | 28 ++-- 7 files changed, 385 insertions(+), 290 deletions(-) diff --git a/src/daemon/dlt-daemon.c b/src/daemon/dlt-daemon.c index 621fcc9..fea6a4f 100644 --- a/src/daemon/dlt-daemon.c +++ b/src/daemon/dlt-daemon.c @@ -69,6 +69,9 @@ /** Global text output buffer, mainly used for creation of error/warning strings */ static char str[DLT_DAEMON_TEXTBUFSIZE]; +static int dlt_daemon_log_internal(DltDaemon *daemon, DltDaemonLocal *daemon_local, char *str, int verbose); + + /** * Print usage information of tool. */ @@ -482,6 +485,8 @@ int main(int argc, char* argv[]) else dlt_daemon_change_state(&daemon,DLT_DAEMON_STATE_BUFFER); + dlt_daemon_log_internal(&daemon, &daemon_local, "Daemon launched. Starting to output traces...", daemon_local.flags.vflag); + while (1) { @@ -493,7 +498,7 @@ int main(int argc, char* argv[]) /* retry if SIGINT was received, else error out */ if ( error != EINTR ) { snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"select() failed: %s\n", strerror(error) ); - dlt_log(LOG_CRIT, str); + dlt_log(LOG_ERR, str); return -1; } } /* if */ @@ -508,7 +513,7 @@ int main(int argc, char* argv[]) /* event from TCP server socket, new connection */ if (dlt_daemon_process_client_connect(&daemon, &daemon_local, daemon_local.flags.vflag)==-1) { - dlt_log(LOG_CRIT,"Connect to dlt client failed!\n"); + dlt_log(LOG_ERR,"Connect to dlt client failed!\n"); return -1; } } @@ -517,7 +522,7 @@ int main(int argc, char* argv[]) /* event from the FIFO happened */ if (dlt_daemon_process_user_messages(&daemon, &daemon_local, daemon_local.flags.vflag)==-1) { - dlt_log(LOG_CRIT,"Processing of messages from user connection failed!\n"); + dlt_log(LOG_WARNING,"Processing of messages from user connection failed!\n"); return -1; } } @@ -526,7 +531,7 @@ int main(int argc, char* argv[]) /* event from serial connection to client received */ if (dlt_daemon_process_client_messages_serial(&daemon, &daemon_local, daemon_local.flags.vflag)==-1) { - dlt_log(LOG_CRIT,"Processing of messages from serial connection failed!\n"); + dlt_log(LOG_WARNING,"Processing of messages from serial connection failed!\n"); return -1; } } @@ -546,7 +551,7 @@ int main(int argc, char* argv[]) if(sd_notify(0, "WATCHDOG=1") < 0) { - dlt_log(LOG_CRIT, "Could not reset systemd watchdog\n"); + dlt_log(LOG_WARNING, "Could not reset systemd watchdog\n"); } } #endif @@ -601,7 +606,7 @@ int main(int argc, char* argv[]) daemon_local.receiverSock.fd = i; if (dlt_daemon_process_client_messages(&daemon, &daemon_local, daemon_local.flags.vflag)==-1) { - dlt_log(LOG_CRIT,"Processing of messages from client connection failed!\n"); + dlt_log(LOG_WARNING,"Processing of messages from client connection failed!\n"); return -1; } } /* else */ @@ -609,6 +614,8 @@ int main(int argc, char* argv[]) } /* for */ } /* while */ + dlt_daemon_log_internal(&daemon, &daemon_local, "Exiting Daemon...", daemon_local.flags.vflag); + dlt_daemon_local_cleanup(&daemon, &daemon_local, daemon_local.flags.vflag); dlt_log(LOG_NOTICE, "Leaving DLT daemon\n"); @@ -633,7 +640,7 @@ int dlt_daemon_local_init_p1(DltDaemon *daemon, DltDaemonLocal *daemon_local, in ret = sd_booted(); if(ret == 0){ - dlt_log(LOG_CRIT, "system not booted with systemd!\n"); + dlt_log(LOG_CRIT, "System not booted with systemd!\n"); // return -1; } else if(ret < 0) @@ -643,7 +650,7 @@ int dlt_daemon_local_init_p1(DltDaemon *daemon, DltDaemonLocal *daemon_local, in } else { - dlt_log(LOG_INFO, "system booted with systemd\n"); + dlt_log(LOG_INFO, "System booted with systemd\n"); } #endif @@ -651,8 +658,8 @@ int dlt_daemon_local_init_p1(DltDaemon *daemon, DltDaemonLocal *daemon_local, in ret=mkdir(DLT_USER_DIR, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH | S_ISVTX ); if (ret==-1 && errno != EEXIST) { - snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"FIFO user dir %s cannot be created!\n", DLT_USER_DIR); - dlt_log(LOG_ERR, str); + snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"FIFO user dir %s cannot be created (%s)!\n", DLT_USER_DIR, strerror(errno)); + dlt_log(LOG_WARNING, str); return -1; } @@ -660,8 +667,8 @@ int dlt_daemon_local_init_p1(DltDaemon *daemon, DltDaemonLocal *daemon_local, in ret=chmod(DLT_USER_DIR, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH | S_ISGID | S_ISVTX ); if (ret==-1) { - snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"FIFO user dir %s cannot be chmoded!\n", DLT_USER_DIR); - dlt_log(LOG_ERR, str); + snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"FIFO user dir %s cannot be chmoded (%s)!\n", DLT_USER_DIR, strerror(errno)); + dlt_log(LOG_WARNING, str); return -1; } @@ -784,7 +791,7 @@ int dlt_daemon_local_init_p2(DltDaemon *daemon, DltDaemonLocal *daemon_local, in daemon->ECUVersionString = malloc(DLT_DAEMON_TEXTBUFSIZE); if(daemon->ECUVersionString==0) { - dlt_log(LOG_ERR,"Could not allocate memory for version string\n"); + dlt_log(LOG_WARNING,"Could not allocate memory for version string\n"); return -1; } dlt_get_version(daemon->ECUVersionString,DLT_DAEMON_TEXTBUFSIZE); @@ -814,16 +821,16 @@ int dlt_daemon_local_connection_init(DltDaemon *daemon, DltDaemonLocal *daemon_l ret=mkfifo(DLT_USER_FIFO, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP ); if (ret==-1) { - snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"FIFO user %s cannot be created!\n",DLT_USER_FIFO); - dlt_log(LOG_ERR, str); + snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"FIFO user %s cannot be created (%s)!\n",DLT_USER_FIFO, strerror(errno)); + dlt_log(LOG_WARNING, str); return -1; } /* if */ daemon_local->fp = open(DLT_USER_FIFO, O_RDWR); if (daemon_local->fp==-1) { - snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"FIFO user %s cannot be opened!\n",DLT_USER_FIFO); - dlt_log(LOG_ERR, str); + snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"FIFO user %s cannot be opened (%s)!\n",DLT_USER_FIFO, strerror(errno)); + dlt_log(LOG_WARNING, str); return -1; } /* if */ @@ -887,7 +894,7 @@ int dlt_daemon_local_connection_init(DltDaemon *daemon, DltDaemonLocal *daemon_l if (daemon_local->flags.vflag) { - dlt_log(LOG_INFO, "Serial init done\n"); + dlt_log(LOG_DEBUG, "Serial init done\n"); } } else @@ -926,7 +933,7 @@ int dlt_daemon_local_ecu_version_init(DltDaemon *daemon, DltDaemonLocal *daemon_ struct stat s_buf; if(fstat(fd, &s_buf) < 0) { - dlt_log(LOG_ERR, "Failed to stat ECU Software version file.\n"); + dlt_log(LOG_WARNING, "Failed to stat ECU Software version file.\n"); fclose(f); return -1; } @@ -936,7 +943,7 @@ int dlt_daemon_local_ecu_version_init(DltDaemon *daemon, DltDaemonLocal *daemon_ off_t size = s_buf.st_size; if(size >= DLT_DAEMON_TEXTBUFSIZE) { - dlt_log(LOG_ERR, "Too large file for ECU version.\n"); + dlt_log(LOG_WARNING, "Too large file for ECU version.\n"); fclose(f); return -1; } @@ -945,7 +952,7 @@ int dlt_daemon_local_ecu_version_init(DltDaemon *daemon, DltDaemonLocal *daemon_ version = malloc(size + 1); if(version==0) { - dlt_log(LOG_ERR, "Cannot allocate memory for ECU version.\n"); + dlt_log(LOG_WARNING, "Cannot allocate memory for ECU version.\n"); fclose(f); return -1; } @@ -955,14 +962,14 @@ int dlt_daemon_local_ecu_version_init(DltDaemon *daemon, DltDaemonLocal *daemon_ offset += fread(version + offset, 1, size, f); if(ferror(f)) { - dlt_log(LOG_ERR, "Failed to read ECU Software version file.\n"); + dlt_log(LOG_WARNING, "Failed to read ECU Software version file.\n"); free(version); fclose(f); return -1; } if(offset > size) { - dlt_log(LOG_ERR, "Too long file for ECU Software version info.\n"); + dlt_log(LOG_WARNING, "Too long file for ECU Software version info.\n"); free(version); fclose(f); return -1; @@ -1092,9 +1099,9 @@ void dlt_daemon_daemonize(int verbose) if (-1 < i) { if(dup(i) < 0) - dlt_log(LOG_ERR, "Failed to direct stdout to /dev/null.\n");/* stdout */ + dlt_log(LOG_WARNING, "Failed to direct stdout to /dev/null.\n");/* stdout */ if(dup(i) < 0) - dlt_log(LOG_ERR, "Failed to direct stderr to /dev/null.\n"); /* stderr */ + dlt_log(LOG_WARNING, "Failed to direct stderr to /dev/null.\n"); /* stderr */ } /* Set umask */ @@ -1102,19 +1109,19 @@ void dlt_daemon_daemonize(int verbose) /* Change to known directory */ if(chdir(DLT_USER_DIR) < 0) - dlt_log(LOG_ERR, "Failed to chdir to DLT_USER_DIR.\n");; + dlt_log(LOG_WARNING, "Failed to chdir to DLT_USER_DIR.\n");; /* Ensure single copy of daemon; run only one instance at a time */ lfp=open(DLT_DAEMON_LOCK_FILE,O_RDWR|O_CREAT,DLT_DAEMON_LOCK_FILE_PERM); if (lfp<0) { - dlt_log(LOG_CRIT, "can't open lock file, exiting DLT daemon\n"); + dlt_log(LOG_CRIT, "Can't open lock file, exiting DLT daemon\n"); exit(-1); /* can not open */ } if (lockf(lfp,F_TLOCK,0)<0) { - dlt_log(LOG_CRIT, "can't lock lock file, exiting DLT daemon\n"); + dlt_log(LOG_CRIT, "Can't lock lock file, exiting DLT daemon\n"); exit(-1); /* can not lock */ } /* only first instance continues */ @@ -1122,7 +1129,7 @@ void dlt_daemon_daemonize(int verbose) snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"%d\n",getpid()); pid_len = strlen(str); if(write(lfp,str,pid_len) != pid_len) /* record pid to lockfile */ - dlt_log(LOG_ERR, "Could not write pid to file in dlt_daemon_daemonize.\n"); + dlt_log(LOG_WARNING, "Could not write pid to file in dlt_daemon_daemonize.\n"); /* Catch signals */ signal(SIGCHLD,SIG_IGN); /* ignore child */ @@ -1132,6 +1139,115 @@ void dlt_daemon_daemonize(int verbose) } /* dlt_daemon_daemonize() */ +/* This function logs str to the configured output sink (socket, serial, offline trace). + To avoid recursion this function must be called only from DLT highlevel functions. + E. g. calling it to output a failure when the open of the offline trace file fails + would cause an endless loop because dlt_daemon_log_internal() would itself again try + to open the offline trace file. + This is a dlt-daemon only function. The libdlt has no equivalent function available. */ +int dlt_daemon_log_internal(DltDaemon *daemon, DltDaemonLocal *daemon_local, char *str, int verbose) +{ + static uint8_t uiMsgCount = 0; + DltStandardHeaderExtra *pStandardExtra; + uint32_t uiType; + uint16_t uiSize; + uint32_t uiExtraSize; + int sent; + int j; + int third_value; + int ret; + + PRINT_FUNCTION_VERBOSE(verbose); + + // Set storageheader + daemon_local->msg.storageheader = (DltStorageHeader *)(daemon_local->msg.headerbuffer); + dlt_set_storageheader(daemon_local->msg.storageheader, daemon->ecuid); + + // Set standardheader + daemon_local->msg.standardheader = (DltStandardHeader *)(daemon_local->msg.headerbuffer + sizeof(DltStorageHeader)); + daemon_local->msg.standardheader->htyp = DLT_HTYP_UEH | DLT_HTYP_WEID | DLT_HTYP_WSID | DLT_HTYP_WTMS | DLT_HTYP_PROTOCOL_VERSION1; + daemon_local->msg.standardheader->mcnt = uiMsgCount++; + + uiExtraSize = DLT_STANDARD_HEADER_EXTRA_SIZE(daemon_local->msg.standardheader->htyp)+(DLT_IS_HTYP_UEH(daemon_local->msg.standardheader->htyp) ? sizeof(DltExtendedHeader) : 0); + daemon_local->msg.headersize = sizeof(DltStorageHeader) + sizeof(DltStandardHeader) + uiExtraSize; + + // Set extraheader + pStandardExtra = (DltStandardHeaderExtra *)(daemon_local->msg.headerbuffer + sizeof(DltStorageHeader) + sizeof(DltStandardHeader)); + dlt_set_id(pStandardExtra->ecu, daemon->ecuid); + pStandardExtra->tmsp = DLT_HTOBE_32(dlt_uptime()); + pStandardExtra->seid = DLT_HTOBE_32(getpid()); + + // Set extendedheader + daemon_local->msg.extendedheader = (DltExtendedHeader *)(daemon_local->msg.headerbuffer + sizeof(DltStorageHeader) + sizeof(DltStandardHeader) + DLT_STANDARD_HEADER_EXTRA_SIZE(daemon_local->msg.standardheader->htyp)); + daemon_local->msg.extendedheader->msin = DLT_MSIN_VERB | (DLT_TYPE_LOG << DLT_MSIN_MSTP_SHIFT) | ((DLT_LOG_INFO << DLT_MSIN_MTIN_SHIFT) & DLT_MSIN_MTIN); + daemon_local->msg.extendedheader->noar = 1; + dlt_set_id(daemon_local->msg.extendedheader->apid, "DLTD"); + dlt_set_id(daemon_local->msg.extendedheader->ctid, "INTM"); + + // Set payload data... + uiType = DLT_TYPE_INFO_STRG; + uiSize = strlen(str) + 1; + daemon_local->msg.datasize = sizeof(uint32_t) + sizeof(uint16_t) + uiSize; + + // Ensure that the buffer size is large enough... + if (daemon_local->msg.databuffer && (daemon_local->msg.databuffersize < daemon_local->msg.datasize)) + { + free(daemon_local->msg.databuffer); + daemon_local->msg.databuffer=0; + } + if (daemon_local->msg.databuffer == 0) + { + daemon_local->msg.databuffer = (uint8_t *) malloc(daemon_local->msg.datasize); + daemon_local->msg.databuffersize = daemon_local->msg.datasize; + } + if (daemon_local->msg.databuffer==0) + { + dlt_log(LOG_WARNING,"Can't allocate buffer for get log info message\n"); + return -1; + } + + daemon_local->msg.datasize = 0; + memcpy((uint8_t *)(daemon_local->msg.databuffer + daemon_local->msg.datasize), (uint8_t *)(&uiType), sizeof(uint32_t)); + daemon_local->msg.datasize += sizeof(uint32_t); + memcpy((uint8_t *)(daemon_local->msg.databuffer + daemon_local->msg.datasize), (uint8_t *)(&uiSize), sizeof(uint16_t)); + daemon_local->msg.datasize += sizeof(uint16_t); + memcpy((uint8_t *)(daemon_local->msg.databuffer + daemon_local->msg.datasize), str, uiSize); + daemon_local->msg.datasize += uiSize; + + // Calc lengths + daemon_local->msg.standardheader->len = DLT_HTOBE_16(daemon_local->msg.headersize - sizeof(DltStorageHeader) + daemon_local->msg.datasize); + + // Sending data... + { + /* check if overflow occurred */ + if(daemon->overflow_counter) + { + if(dlt_daemon_send_message_overflow(daemon,daemon_local,verbose)==0) + { + sprintf(str,"%u messages discarded!\n",daemon->overflow_counter); + dlt_log(LOG_WARNING, str); + daemon->overflow_counter=0; + } + } + + /* look if TCP connection to client is available */ + if((daemon->mode == DLT_USER_MODE_EXTERNAL) || (daemon->mode == DLT_USER_MODE_BOTH)) + { + + if((ret = dlt_daemon_client_send(DLT_DAEMON_SEND_TO_ALL,daemon,daemon_local,daemon_local->msg.headerbuffer+sizeof(DltStorageHeader),daemon_local->msg.headersize-sizeof(DltStorageHeader), + daemon_local->msg.databuffer,daemon_local->msg.datasize,verbose))) + { + if(ret == DLT_DAEMON_ERROR_BUFFER_FULL) + { + daemon->overflow_counter++; + } + } + } + } + + return 0; +} + int dlt_daemon_process_client_connect(DltDaemon *daemon, DltDaemonLocal *daemon_local, int verbose) { socklen_t cli_size; @@ -1165,7 +1281,7 @@ int dlt_daemon_process_client_connect(DltDaemon *daemon, DltDaemonLocal *daemon_ timeout_send.tv_sec = daemon_local->timeoutOnSend; timeout_send.tv_usec = 0; if (setsockopt (in_sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout_send, sizeof(timeout_send)) < 0) - dlt_log(LOG_ERR, "setsockopt failed\n"); + dlt_log(LOG_WARNING, "setsockopt failed\n"); /* Set to non blocking mode */ //flags = fcntl(in_sock, F_GETFL, 0); @@ -1206,12 +1322,12 @@ int dlt_daemon_process_client_connect(DltDaemon *daemon, DltDaemonLocal *daemon_ { if (daemon_local->flags.vflag) { - dlt_log(LOG_INFO, "Send ring-buffer to client\n"); + dlt_log(LOG_DEBUG, "Send ring-buffer to client\n"); } dlt_daemon_change_state(daemon, DLT_DAEMON_STATE_SEND_BUFFER); if (dlt_daemon_send_ringbuffer_to_client(daemon, daemon_local, verbose)==-1) { - dlt_log(LOG_ERR,"Can't send contents of ringbuffer to clients\n"); + dlt_log(LOG_WARNING,"Can't send contents of ringbuffer to clients\n"); return -1; } @@ -1263,7 +1379,7 @@ int dlt_daemon_process_client_messages(DltDaemon *daemon, DltDaemonLocal *daemon if (dlt_receiver_remove(&(daemon_local->receiverSock),bytes_to_be_removed)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for sockets\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for sockets\n"); return -1; } @@ -1272,7 +1388,7 @@ int dlt_daemon_process_client_messages(DltDaemon *daemon, DltDaemonLocal *daemon if (dlt_receiver_move_to_begin(&(daemon_local->receiverSock))==-1) { - dlt_log(LOG_ERR,"Can't move bytes to beginning of receiver buffer for sockets\n"); + dlt_log(LOG_WARNING,"Can't move bytes to beginning of receiver buffer for sockets\n"); return -1; } @@ -1293,7 +1409,7 @@ int dlt_daemon_process_client_messages_serial(DltDaemon *daemon, DltDaemonLocal if (dlt_receiver_receive_fd(&(daemon_local->receiverSerial))<=0) { - dlt_log(LOG_ERR, "dlt_receiver_receive_fd() for messages from serial interface failed!\n"); + dlt_log(LOG_WARNING, "dlt_receiver_receive_fd() for messages from serial interface failed!\n"); return -1; } @@ -1305,7 +1421,7 @@ int dlt_daemon_process_client_messages_serial(DltDaemon *daemon, DltDaemonLocal { if (dlt_daemon_client_process_control(daemon_local->receiverSerial.fd, daemon,daemon_local, &(daemon_local->msg), daemon_local->flags.vflag)==-1) { - dlt_log(LOG_ERR,"Can't process control messages\n"); + dlt_log(LOG_WARNING,"Can't process control messages\n"); return -1; } } @@ -1322,7 +1438,7 @@ int dlt_daemon_process_client_messages_serial(DltDaemon *daemon, DltDaemonLocal if (dlt_receiver_remove(&(daemon_local->receiverSerial),bytes_to_be_removed)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for serial connection\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for serial connection\n"); return -1; } @@ -1331,7 +1447,7 @@ int dlt_daemon_process_client_messages_serial(DltDaemon *daemon, DltDaemonLocal if (dlt_receiver_move_to_begin(&(daemon_local->receiverSerial))==-1) { - dlt_log(LOG_ERR,"Can't move bytes to beginning of receiver buffer for serial connection\n"); + dlt_log(LOG_WARNING,"Can't move bytes to beginning of receiver buffer for serial connection\n"); return -1; } @@ -1355,7 +1471,7 @@ int dlt_daemon_process_user_messages(DltDaemon *daemon, DltDaemonLocal *daemon_l /* read data from FIFO */ if (dlt_receiver_receive_fd(&(daemon_local->receiver))<0) { - dlt_log(LOG_ERR, "dlt_receiver_receive_fd() for user messages failed!\n"); + dlt_log(LOG_WARNING, "dlt_receiver_receive_fd() for user messages failed!\n"); return -1; } @@ -1483,12 +1599,13 @@ int dlt_daemon_process_user_messages(DltDaemon *daemon, DltDaemonLocal *daemon_l } default: { - dlt_log(LOG_ERR,"(Internal) Invalid user message type received!\n"); + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "Invalid user message type received: %d!\n", userheader->message); + dlt_log(LOG_ERR,str); /* remove user header */ if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader))==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user messages\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user messages\n"); return -1; } @@ -1505,7 +1622,7 @@ int dlt_daemon_process_user_messages(DltDaemon *daemon, DltDaemonLocal *daemon_l /* keep not read data in buffer */ if (dlt_receiver_move_to_begin(&(daemon_local->receiver))==-1) { - dlt_log(LOG_ERR,"Can't move bytes to beginning of receiver buffer for user messages\n"); + dlt_log(LOG_WARNING,"Can't move bytes to beginning of receiver buffer for user messages\n"); return -1; } @@ -1521,7 +1638,7 @@ int dlt_daemon_process_user_message_overflow(DltDaemon *daemon, DltDaemonLocal * if ((daemon==0) || (daemon_local==0)) { - dlt_log(LOG_ERR, "Invalid function parameters used for function dlt_daemon_process_user_message_overflow()\n"); + dlt_log(LOG_WARNING, "Invalid function parameters used for function dlt_daemon_process_user_message_overflow()\n"); return -1; } @@ -1546,7 +1663,7 @@ int dlt_daemon_process_user_message_overflow(DltDaemon *daemon, DltDaemonLocal * /* keep not read data in buffer */ if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgBufferOverflow))==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message overflow\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message overflow\n"); return -1; } @@ -1615,14 +1732,20 @@ int dlt_daemon_process_user_message_register_application(DltDaemon *daemon, DltD /* keep not read data in buffer */ if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgRegisterApplication)+len)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message register application\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message register application\n"); return -1; } if (application==0) { - dlt_log(LOG_CRIT,"Can't add application"); + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "Can't add ApplicationID '%.4s' for PID %d\n", usercontext->apid, usercontext->pid); + dlt_log(LOG_WARNING,str); return -1; + } else + { + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "ApplicationID '%.4s' registered for PID %d, Description=%s\n", application->apid, application->pid, application->application_description); + dlt_daemon_log_internal(daemon, daemon_local, str, daemon_local->flags.vflag); + dlt_log(LOG_DEBUG,str); } return 0; @@ -1670,12 +1793,13 @@ int dlt_daemon_process_user_message_register_context(DltDaemon *daemon, DltDaemo if (application==0) { + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "ApplicationID '%.4s' not found while registering ContextID '%.4s' in dlt_daemon_process_user_message_register_context()\n", usercontext->apid, usercontext->ctid); + dlt_log(LOG_WARNING, str); if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgRegisterContext)+len)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message register context\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message register context\n"); return -1; } - dlt_log(LOG_ERR, "Application not found in dlt_daemon_process_user_message_register_context()\n"); return 0; } @@ -1692,7 +1816,7 @@ int dlt_daemon_process_user_message_register_context(DltDaemon *daemon, DltDaemo { if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgRegisterContext)+len)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message register context\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message register context\n"); } return -1; } @@ -1712,7 +1836,7 @@ int dlt_daemon_process_user_message_register_context(DltDaemon *daemon, DltDaemo { if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgRegisterContext)+len)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message register context\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message register context\n"); } return -1; } @@ -1724,11 +1848,17 @@ int dlt_daemon_process_user_message_register_context(DltDaemon *daemon, DltDaemo { if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgRegisterContext)+len)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message register context\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message register context\n"); } - dlt_log(LOG_CRIT,"Can't add context"); + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "Can't add ContextID '%.4s' for ApplicationID '%.4s'\n", usercontext->ctid, usercontext->apid); + dlt_log(LOG_WARNING,str); return -1; + } else + { + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "ContextID '%.4s' registered for ApplicationID '%.4s', Description=%s\n", context->ctid, context->apid, context->context_description); + dlt_daemon_log_internal(daemon, daemon_local, str, daemon_local->flags.vflag); + dlt_log(LOG_DEBUG,str); } /* Create automatic get log info response for registered context */ if (daemon_local->flags.rflag) @@ -1738,10 +1868,10 @@ int dlt_daemon_process_user_message_register_context(DltDaemon *daemon, DltDaemo { if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgRegisterContext)+len)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message register context\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message register context\n"); return -1; } - dlt_log(LOG_ERR,"Can't initialize message"); + dlt_log(LOG_WARNING,"Can't initialize message"); return -1; } @@ -1759,10 +1889,10 @@ int dlt_daemon_process_user_message_register_context(DltDaemon *daemon, DltDaemo { if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgRegisterContext)+len)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message register context\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message register context\n"); return -1; } - dlt_log(LOG_ERR,"Can't allocate buffer for get log info message\n"); + dlt_log(LOG_WARNING,"Can't allocate buffer for get log info message\n"); return -1; } @@ -1786,10 +1916,11 @@ int dlt_daemon_process_user_message_register_context(DltDaemon *daemon, DltDaemo { if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgRegisterContext)+len)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message register context\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message register context\n"); return -1; } - dlt_log(LOG_ERR,"Can't send current log level as response to user message register context\n"); + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "Can't send current log level as response to user message register context for (%.4s;%.4s)\n", context->apid, context->ctid); + dlt_log(LOG_WARNING,str); return -1; } } @@ -1797,7 +1928,7 @@ int dlt_daemon_process_user_message_register_context(DltDaemon *daemon, DltDaemo /* keep not read data in buffer */ if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgRegisterContext)+len)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message register context\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message register context\n"); return -1; } @@ -1851,10 +1982,11 @@ int dlt_daemon_process_user_message_unregister_application(DltDaemon *daemon, Dl { if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgUnregisterApplication))==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message unregister application\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message unregister application\n"); return -1; } - dlt_log(LOG_ERR,"Can't delete context for user message unregister application\n"); + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "Can't delete ContextID '%.4s' in ApplicationID '%.4s' for user message unregister application\n", context->ctid, context->apid); + dlt_log(LOG_WARNING,str); return -1; } } @@ -1865,11 +1997,17 @@ int dlt_daemon_process_user_message_unregister_application(DltDaemon *daemon, Dl { if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgUnregisterApplication))==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message unregister application\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message unregister application\n"); return -1; } - dlt_log(LOG_ERR,"Can't delete application for user message unregister application\n"); + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "Can't delete ApplicationID '%.4s' for user message unregister application\n", application->apid); + dlt_log(LOG_WARNING,str); return -1; + } else + { + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "Unregistered ApplicationID '%.4s'\n", usercontext->apid); + dlt_daemon_log_internal(daemon, daemon_local, str, daemon_local->flags.vflag); + dlt_log(LOG_DEBUG,str); } } } @@ -1877,7 +2015,7 @@ int dlt_daemon_process_user_message_unregister_application(DltDaemon *daemon, Dl /* keep not read data in buffer */ if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgUnregisterApplication))==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message unregister application\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message unregister application\n"); return -1; } @@ -1913,11 +2051,17 @@ int dlt_daemon_process_user_message_unregister_context(DltDaemon *daemon, DltDae { if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgUnregisterContext))==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message unregister context\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message unregister context\n"); return -1; } - dlt_log(LOG_ERR,"Can't delete context for user message unregister context\n"); + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "Can't delete ContextID '%.4s' for ApplicationID '%.4s' for user message unregister context\n", usercontext->ctid, usercontext->apid); + dlt_log(LOG_WARNING,str); return -1; + } else + { + snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "Unregistered ContextID '%.4s' for ApplicationID '%.4s'\n", usercontext->ctid, usercontext->apid); + dlt_daemon_log_internal(daemon, daemon_local, str, daemon_local->flags.vflag); + dlt_log(LOG_DEBUG,str); } } @@ -1930,7 +2074,7 @@ int dlt_daemon_process_user_message_unregister_context(DltDaemon *daemon, DltDae /* keep not read data in buffer */ if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgUnregisterContext))==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message unregister context\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message unregister context\n"); return -1; } @@ -1957,7 +2101,14 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, DltDaemonLocal *daemo { if(ret!=DLT_MESSAGE_ERROR_SIZE) { - dlt_log(LOG_ERR,"Can't read messages from receiver\n"); + /* This is a normal usecase: The daemon reads the data in 10kb chunks. + Thus the last trace in this chunk is probably not complete and will be completed + with the next chunk read. This happens always when the FIFO is filled with more than 10kb before + the daemon is able to read from the FIFO. + Thus the loglevel of this message is set to DEBUG. + A cleaner solution would be to check more in detail whether the message is not complete (normal usecase) + or the headers are corrupted (error case). */ + dlt_log(LOG_DEBUG,"Can't read messages from receiver\n"); } return DLT_DAEMON_ERROR_UNKNOWN; } @@ -1970,7 +2121,7 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, DltDaemonLocal *daemo //msg.headerextra.seid = 0; if (dlt_message_set_extraparameters(&(daemon_local->msg),0)==-1) { - dlt_log(LOG_ERR,"Can't set message extra parameters in process user message log\n"); + dlt_log(LOG_WARNING,"Can't set message extra parameters in process user message log\n"); return DLT_DAEMON_ERROR_UNKNOWN; } @@ -1983,7 +2134,7 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, DltDaemonLocal *daemo { if (dlt_set_storageheader(daemon_local->msg.storageheader,daemon_local->msg.headerextra.ecu)==-1) { - dlt_log(LOG_ERR,"Can't set storage header in process user message log\n"); + dlt_log(LOG_WARNING,"Can't set storage header in process user message log\n"); return DLT_DAEMON_ERROR_UNKNOWN; } } @@ -1991,7 +2142,7 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, DltDaemonLocal *daemo { if (dlt_set_storageheader(daemon_local->msg.storageheader,daemon->ecuid)==-1) { - dlt_log(LOG_ERR,"Can't set storage header in process user message log\n"); + dlt_log(LOG_WARNING,"Can't set storage header in process user message log\n"); return DLT_DAEMON_ERROR_UNKNOWN; } } @@ -2002,21 +2153,21 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, DltDaemonLocal *daemo { if (dlt_message_print_hex(&(daemon_local->msg),text,DLT_DAEMON_TEXTSIZE,verbose)==-1) { - dlt_log(LOG_ERR,"dlt_message_print_hex() failed!\n"); + dlt_log(LOG_WARNING,"dlt_message_print_hex() failed!\n"); } } /* if */ else if (daemon_local->flags.aflag) { if (dlt_message_print_ascii(&(daemon_local->msg),text,DLT_DAEMON_TEXTSIZE,verbose)==-1) { - dlt_log(LOG_ERR,"dlt_message_print_ascii() failed!\n"); + dlt_log(LOG_WARNING,"dlt_message_print_ascii() failed!\n"); } } /* if */ else if (daemon_local->flags.sflag) { if (dlt_message_print_header(&(daemon_local->msg),text,DLT_DAEMON_TEXTSIZE,verbose)==-1) { - dlt_log(LOG_ERR,"dlt_message_print_header() failed!\n"); + dlt_log(LOG_WARNING,"dlt_message_print_header() failed!\n"); } /* print message header only */ } /* if */ @@ -2028,7 +2179,7 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, DltDaemonLocal *daemo if(dlt_daemon_send_message_overflow(daemon,daemon_local,verbose)==0) { snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"%u messages discarded!\n",daemon->overflow_counter); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); daemon->overflow_counter=0; } } @@ -2053,7 +2204,7 @@ int dlt_daemon_process_user_message_log(DltDaemon *daemon, DltDaemonLocal *daemo if (dlt_receiver_remove(&(daemon_local->receiver),bytes_to_be_removed)==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver\n"); return DLT_DAEMON_ERROR_UNKNOWN; } @@ -2090,7 +2241,7 @@ int dlt_daemon_process_user_message_log_shm(DltDaemon *daemon, DltDaemonLocal *d break; if (dlt_message_read(&(daemon_local->msg),rcv_buffer,size,0,verbose)!=0) { break; - dlt_log(LOG_ERR,"Can't read messages from shm\n"); + dlt_log(LOG_WARNING,"Can't read messages from shm\n"); return -1; } bytes_to_be_removed = daemon_local->msg.headersize+daemon_local->msg.datasize-sizeof(DltStorageHeader)+sizeof(DltUserHeader); @@ -2107,7 +2258,7 @@ int dlt_daemon_process_user_message_log_shm(DltDaemon *daemon, DltDaemonLocal *d //msg.headerextra.seid = 0; if (dlt_message_set_extraparameters(&(daemon_local->msg),0)==-1) { - dlt_log(LOG_ERR,"Can't set message extra parameters in process user message log\n"); + dlt_log(LOG_WARNING,"Can't set message extra parameters in process user message log\n"); dlt_shm_remove(&(daemon_local->dlt_shm)); return -1; } @@ -2121,7 +2272,7 @@ int dlt_daemon_process_user_message_log_shm(DltDaemon *daemon, DltDaemonLocal *d { if (dlt_set_storageheader(daemon_local->msg.storageheader,daemon_local->msg.headerextra.ecu)==-1) { - dlt_log(LOG_ERR,"Can't set storage header in process user message log\n"); + dlt_log(LOG_WARNING,"Can't set storage header in process user message log\n"); dlt_shm_remove(&(daemon_local->dlt_shm)); return -1; } @@ -2130,7 +2281,7 @@ int dlt_daemon_process_user_message_log_shm(DltDaemon *daemon, DltDaemonLocal *d { if (dlt_set_storageheader(daemon_local->msg.storageheader,daemon->ecuid)==-1) { - dlt_log(LOG_ERR,"Can't set storage header in process user message log\n"); + dlt_log(LOG_WARNING,"Can't set storage header in process user message log\n"); dlt_shm_remove(&(daemon_local->dlt_shm)); return -1; } @@ -2141,21 +2292,21 @@ int dlt_daemon_process_user_message_log_shm(DltDaemon *daemon, DltDaemonLocal *d { if (dlt_message_print_hex(&(daemon_local->msg),text,DLT_DAEMON_TEXTSIZE,verbose)==-1) { - dlt_log(LOG_ERR,"dlt_message_print_hex() failed!\n"); + dlt_log(LOG_WARNING,"dlt_message_print_hex() failed!\n"); } } /* if */ else if (daemon_local->flags.aflag) { if (dlt_message_print_ascii(&(daemon_local->msg),text,DLT_DAEMON_TEXTSIZE,verbose)==-1) { - dlt_log(LOG_ERR,"dlt_message_print_ascii() failed!\n"); + dlt_log(LOG_WARNING,"dlt_message_print_ascii() failed!\n"); } } /* if */ else if (daemon_local->flags.sflag) { if (dlt_message_print_header(&(daemon_local->msg),text,DLT_DAEMON_TEXTSIZE,verbose)==-1) { - dlt_log(LOG_ERR,"dlt_message_print_header() failed!\n"); + dlt_log(LOG_WARNING,"dlt_message_print_header() failed!\n"); } /* print message header only */ } /* if */ @@ -2240,7 +2391,7 @@ int dlt_daemon_process_user_message_log_shm(DltDaemon *daemon, DltDaemonLocal *d /* keep not read data in buffer */ if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader))==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message overflow\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message overflow\n"); return -1; } @@ -2310,7 +2461,7 @@ int dlt_daemon_process_user_message_set_app_ll_ts(DltDaemon *daemon, DltDaemonLo /* keep not read data in buffer */ if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgAppLogLevelTraceStatus))==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver\n"); return -1; } @@ -2346,7 +2497,7 @@ int dlt_daemon_process_user_message_log_mode(DltDaemon *daemon, DltDaemonLocal * /* keep not read data in buffer */ if (dlt_receiver_remove(&(daemon_local->receiver),sizeof(DltUserHeader)+sizeof(DltUserControlMsgLogMode))==-1) { - dlt_log(LOG_ERR,"Can't remove bytes from receiver for user message log mode\n"); + dlt_log(LOG_WARNING,"Can't remove bytes from receiver for user message log mode\n"); return -1; } @@ -2435,7 +2586,7 @@ int create_timer_fd(DltDaemonLocal *daemon_local, int period_sec, int starts_in, if( fd == NULL ) { snprintf(str, sizeof(str), "<%s> fd is NULL pointer\n", timer_name ); - dlt_log(DLT_LOG_ERROR, str); + dlt_log(LOG_WARNING, str); return -1; } @@ -2445,7 +2596,7 @@ int create_timer_fd(DltDaemonLocal *daemon_local, int period_sec, int starts_in, if( local_fd < 0) { snprintf(str, sizeof(str), "<%s> timerfd_create failed: %s\n", timer_name, strerror(errno)); - dlt_log(DLT_LOG_ERROR, str); + dlt_log(LOG_WARNING, str); } l_timer_spec.it_interval.tv_sec = period_sec; @@ -2456,7 +2607,7 @@ int create_timer_fd(DltDaemonLocal *daemon_local, int period_sec, int starts_in, if( timerfd_settime( local_fd, 0, &l_timer_spec, NULL) < 0) { snprintf(str, sizeof(str), "<%s> timerfd_settime failed: %s\n", timer_name, strerror(errno)); - dlt_log(DLT_LOG_ERROR, str); + dlt_log(LOG_WARNING, str); local_fd = -1; } #endif @@ -2464,7 +2615,7 @@ int create_timer_fd(DltDaemonLocal *daemon_local, int period_sec, int starts_in, else { // timer not activated via the service file snprintf(str, sizeof(str), "<%s> not set: period=0\n", timer_name); - dlt_log(DLT_LOG_INFO, str); + dlt_log(LOG_INFO, str); local_fd = -1; } @@ -2472,7 +2623,7 @@ int create_timer_fd(DltDaemonLocal *daemon_local, int period_sec, int starts_in, if(local_fd>0) { snprintf(str, sizeof(str), "<%s> initialized with %ds timer\n", timer_name, period_sec); - dlt_log(DLT_LOG_INFO, str); + dlt_log(LOG_INFO, str); FD_SET(local_fd, &(daemon_local->master)); //FD_SET(local_fd, &(daemon_local->timer_fds)); diff --git a/src/daemon/dlt_daemon_client.c b/src/daemon/dlt_daemon_client.c index 041a105..c5293de 100644 --- a/src/daemon/dlt_daemon_client.c +++ b/src/daemon/dlt_daemon_client.c @@ -262,7 +262,7 @@ int dlt_daemon_client_send_control_message( int sock, DltDaemon *daemon, DltDaem len=msg->headersize - sizeof(DltStorageHeader) + msg->datasize; if (len>UINT16_MAX) { - dlt_log(LOG_CRIT,"Huge control message discarded!\n"); + dlt_log(LOG_WARNING,"Huge control message discarded!\n"); return DLT_DAEMON_ERROR_UNKNOWN; } @@ -720,7 +720,7 @@ void dlt_daemon_control_get_log_info(int sock, DltDaemon *daemon, DltDaemonLocal if (verbose) { snprintf(str,DLT_DAEMON_TEXTBUFSIZE,"Allocate %d bytes for response msg databuffer\n", resp.datasize); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); } /* Allocate buffer for response message */ @@ -1598,7 +1598,7 @@ void dlt_daemon_control_message_time(int sock, DltDaemon *daemon, DltDaemonLocal len=msg.headersize - sizeof(DltStorageHeader) + msg.datasize; if (len>UINT16_MAX) { - dlt_log(LOG_CRIT,"Huge control message discarded!\n"); + dlt_log(LOG_WARNING,"Huge control message discarded!\n"); /* free message */ dlt_message_free(&msg,0); diff --git a/src/daemon/dlt_daemon_common.c b/src/daemon/dlt_daemon_common.c index a2392fc..464bd28 100644 --- a/src/daemon/dlt_daemon_common.c +++ b/src/daemon/dlt_daemon_common.c @@ -355,10 +355,10 @@ DltDaemonApplication* dlt_daemon_application_add(DltDaemon *daemon,char *apid,pi new_application = 1; - } else { + } else if (pid != application->pid) { - snprintf(str,DLT_DAEMON_COMMON_TEXTBUFSIZE, "Duplicate registration of AppId: %s\n",apid); - dlt_log(LOG_ERR, str); + snprintf(str,DLT_DAEMON_COMMON_TEXTBUFSIZE, "Duplicate registration of ApplicationID: '%.4s'; registering from PID %d, existing from PID %d\n",apid, pid, application->pid); + dlt_log(LOG_WARNING, str); } @@ -386,7 +386,7 @@ DltDaemonApplication* dlt_daemon_application_add(DltDaemon *daemon,char *apid,pi if ( close(application->user_handle) < 0 ) { snprintf(str,DLT_DAEMON_COMMON_TEXTBUFSIZE, "close() failed to %s, errno=%d (%s)!\n",filename,errno,strerror(errno)); /* errno 2: ENOENT - No such file or directory */ - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); } application->user_handle = DLT_FD_INIT; @@ -403,7 +403,7 @@ DltDaemonApplication* dlt_daemon_application_add(DltDaemon *daemon,char *apid,pi if ( dlt_user_handle < 0 ) { snprintf(str,DLT_DAEMON_COMMON_TEXTBUFSIZE, "open() failed to %s, errno=%d (%s)!\n",filename,errno,strerror(errno)); /* errno 2: ENOENT - No such file or directory */ - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); } /* if */ /* check if file file descriptor was already used, and make it invalid if it is reused */ @@ -531,7 +531,7 @@ int dlt_daemon_applications_load(DltDaemon *daemon,const char *filename, int ver { snprintf(str,DLT_DAEMON_COMMON_TEXTBUFSIZE, "dlt_daemon_applications_load fgets(buf,sizeof(buf),fd) returned NULL. %s\n", strerror(errno)); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); fclose(fd); return -1; } @@ -542,7 +542,7 @@ int dlt_daemon_applications_load(DltDaemon *daemon,const char *filename, int ver } else { snprintf(str,DLT_DAEMON_COMMON_TEXTBUFSIZE, "dlt_daemon_applications_load fgets(buf,sizeof(buf),fd) returned NULL. Unknown error.\n"); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); fclose(fd); return -1; } @@ -562,7 +562,7 @@ int dlt_daemon_applications_load(DltDaemon *daemon,const char *filename, int ver /* pid is unknown at loading time */ if (dlt_daemon_application_add(daemon,apid,0,pb,verbose)==0) { - dlt_log(LOG_ERR, "dlt_daemon_applications_load dlt_daemon_application_add failed\n"); + dlt_log(LOG_WARNING, "dlt_daemon_applications_load dlt_daemon_application_add failed\n"); fclose(fd); return -1; } @@ -903,7 +903,7 @@ int dlt_daemon_contexts_load(DltDaemon *daemon,const char *filename, int verbose { snprintf(str,DLT_DAEMON_COMMON_TEXTBUFSIZE, "dlt_daemon_contexts_load fgets(buf,sizeof(buf),fd) returned NULL. %s\n", strerror(errno)); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); fclose(fd); return -1; } @@ -914,7 +914,7 @@ int dlt_daemon_contexts_load(DltDaemon *daemon,const char *filename, int verbose } else { snprintf(str,DLT_DAEMON_COMMON_TEXTBUFSIZE, "dlt_daemon_contexts_load fgets(buf,sizeof(buf),fd) returned NULL. Unknown error.\n"); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); fclose(fd); return -1; } @@ -947,7 +947,7 @@ int dlt_daemon_contexts_load(DltDaemon *daemon,const char *filename, int verbose /* log_level_pos, and user_handle are unknown at loading time */ if (dlt_daemon_context_add(daemon,apid,ctid,(int8_t)ll,(int8_t)ts,0,0,pb,verbose)==0) { - dlt_log(LOG_ERR, "dlt_daemon_contexts_load dlt_daemon_context_add failed\n"); + dlt_log(LOG_WARNING, "dlt_daemon_contexts_load dlt_daemon_context_add failed\n"); fclose(fd); return -1; } @@ -1090,7 +1090,7 @@ int dlt_daemon_configuration_load(DltDaemon *daemon,const char *filename, int ve else { snprintf(str,DLT_DAEMON_COMMON_TEXTBUFSIZE,"Unknown option: %s=%s\n",token,value); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); } } } diff --git a/src/daemon/dlt_daemon_socket.c b/src/daemon/dlt_daemon_socket.c index 88c360a..146d952 100644 --- a/src/daemon/dlt_daemon_socket.c +++ b/src/daemon/dlt_daemon_socket.c @@ -71,13 +71,13 @@ int dlt_daemon_socket_open(int *sock) sprintf(portnumbuffer, "%d", DLT_DAEMON_TCP_PORT); if ((rv = getaddrinfo(NULL, portnumbuffer, &hints, &servinfo)) != 0) { snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "getaddrinfo: %s\n", gai_strerror(rv)); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } for(p = servinfo; p != NULL; p = p->ai_next) { if ((*sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == -1) { - dlt_log(LOG_ERR, "socket() error\n"); + dlt_log(LOG_WARNING, "socket() error\n"); continue; } @@ -88,13 +88,13 @@ int dlt_daemon_socket_open(int *sock) if (setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1) { snprintf(str, DLT_DAEMON_TEXTBUFSIZE, "dlt_daemon_socket_open: Setsockopt error in dlt_daemon_local_connection_init: %s\n", strerror(errno)); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); continue; } if (bind(*sock, p->ai_addr, p->ai_addrlen) == -1) { close(*sock); - dlt_log(LOG_ERR, "bind() error\n"); + dlt_log(LOG_WARNING, "bind() error\n"); continue; } @@ -102,7 +102,7 @@ int dlt_daemon_socket_open(int *sock) } if (p == NULL) { - dlt_log(LOG_ERR, "failed to bind socket\n"); + dlt_log(LOG_WARNING, "failed to bind socket\n"); return -1; } @@ -117,7 +117,7 @@ int dlt_daemon_socket_open(int *sock) if (listen(*sock, 3) < 0) { - dlt_log(LOG_ERR, "dlt_daemon_socket_open: listen() failed!\n"); + dlt_log(LOG_WARNING, "dlt_daemon_socket_open: listen() failed!\n"); return -1; } diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c index fad3fa0..d3fc066 100644 --- a/src/lib/dlt_user.c +++ b/src/lib/dlt_user.c @@ -198,7 +198,7 @@ int dlt_init(void) if (ret==-1) { snprintf(str,DLT_USER_BUFFER_LENGTH,"FIFO user %s cannot be chmoded!\n", DLT_USER_DIR); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } @@ -215,8 +215,11 @@ int dlt_init(void) dlt_user.dlt_log_handle = open(DLT_USER_FIFO, O_WRONLY | O_NONBLOCK | O_CLOEXEC ); if (dlt_user.dlt_log_handle==-1) { - snprintf(str,DLT_USER_BUFFER_LENGTH,"Loging disabled, FIFO %s cannot be opened with open()!\n",DLT_USER_FIFO); - dlt_log(LOG_WARNING, str); + /* This is a normal usecase. It is OK that the daemon (and thus the FIFO /tmp/dlt) + starts later and some DLT users have already been started before. + Thus it is OK if the FIFO can't be opened. */ + snprintf(str,DLT_USER_BUFFER_LENGTH,"FIFO %s cannot be opened. Retrying later...\n",DLT_USER_FIFO); + dlt_log(LOG_INFO, str); //return 0; } else @@ -225,8 +228,11 @@ int dlt_init(void) /* init shared memory */ if (dlt_shm_init_client(&(dlt_user.dlt_shm),DLT_SHM_KEY) < 0) { - snprintf(str,DLT_USER_BUFFER_LENGTH,"Loging disabled, Shared memory %d cannot be created!\n",DLT_SHM_KEY); - dlt_log(LOG_WARNING, str); + /* This is a normal usecase. It is OK that the daemon (and thus the FIFO /tmp/dlt) + starts later and some DLT users have already been started before. + Thus it is OK if the FIFO can't be opened. */ + snprintf(str,DLT_USER_BUFFER_LENGTH,"Shared memory %d cannot be created. Retrying later...\n",DLT_SHM_KEY); + dlt_log(LOG_INFO, str); //return 0; } #endif @@ -477,7 +483,7 @@ void dlt_user_atexit_handler(void) if(count != 0){ char tmp[256]; snprintf(tmp,256,"Lost log messages in user buffer when exiting: %i\n",count); - dlt_log(LOG_ERR, tmp); + dlt_log(LOG_WARNING, tmp); } /* Unregister app (this also unregisters all contexts in daemon) */ @@ -714,7 +720,8 @@ int dlt_register_context(DltContext *handle, const char *contextid, const char * if (dlt_user.appID[0]=='\0') { - dlt_log(LOG_ERR, "no application registered!\n"); + snprintf(str, DLT_USER_BUFFER_LENGTH, "No application registered while trying to register ContextID %4s!\n", contextid); + dlt_log(LOG_WARNING, str); DLT_SEM_FREE(); return -1; @@ -748,7 +755,8 @@ int dlt_register_context_ll_ts(DltContext *handle, const char *contextid, const if (dlt_user.appID[0]=='\0') { - dlt_log(LOG_ERR, "no application registered!\n"); + snprintf(str, DLT_USER_BUFFER_LENGTH, "No application registered while trying to register ContextID %4s!\n", contextid); + dlt_log(LOG_WARNING, str); DLT_SEM_FREE(); return -1; @@ -1160,8 +1168,9 @@ int dlt_forward_msg(void *msgdata,size_t size) if (dlt_user_log_send_overflow()==0) { snprintf(str,DLT_USER_BUFFER_LENGTH,"Buffer full! %u messages discarded!\n",dlt_user.overflow_counter); - dlt_log(LOG_ERR, str); - dlt_user.overflow_counter=0; } + dlt_log(LOG_WARNING, str); + dlt_user.overflow_counter=0; + } } /* log to FIFO */ @@ -1180,7 +1189,7 @@ int dlt_forward_msg(void *msgdata,size_t size) { if(dlt_user.overflow_counter==0) { - dlt_log(LOG_ERR,"Buffer full! First message discarded!\n"); + dlt_log(LOG_WARNING,"Buffer full! First message discarded!\n"); } ret = DLT_RETURN_BUFFER_FULL; } @@ -2496,7 +2505,7 @@ void dlt_user_trace_network_segmented_thread(void *unused) char str[255]; snprintf(str,254,"NWTSegmented: Error while reading queue: %s \n",strerror(errno)); - dlt_log(LOG_CRIT, str); + dlt_log(LOG_WARNING, str); continue; } @@ -2523,7 +2532,7 @@ void dlt_user_trace_network_segmented_thread(void *unused) DltReturnValue err = dlt_user_trace_network_segmented_end(data->id, data->handle, data->nw_trace_type); if(err == DLT_RETURN_BUFFER_FULL || err == DLT_RETURN_ERROR) { - dlt_log(LOG_ERR,"NWTSegmented: Could not send end segment.\n"); + dlt_log(LOG_WARNING,"NWTSegmented: Could not send end segment.\n"); } /* Free resources */ @@ -2634,14 +2643,14 @@ int dlt_user_trace_network_segmented(DltContext *handle, DltNetworkTraceType nw_ { if(errno == EAGAIN) { - dlt_log(LOG_ERR, "NWTSegmented: Queue full. Message discarded.\n"); + dlt_log(LOG_WARNING, "NWTSegmented: Queue full. Message discarded.\n"); } free(thread_data->header); free(thread_data->payload); free(thread_data); char str[256]; snprintf(str,255,"NWTSegmented: Could not write into queue: %s \n",strerror(errno)); - dlt_log(LOG_CRIT, str); + dlt_log(LOG_WARNING, str); return -1; } @@ -3150,7 +3159,7 @@ int dlt_user_queue_resend(void) if(!dlt_user_queue_resend_error_counter) { // log error only when problem occurred first time - dlt_log(LOG_ERR, "NWTSegmented: Could not open queue.\n"); + dlt_log(LOG_WARNING, "NWTSegmented: Could not open queue.\n"); } dlt_user_queue_resend_error_counter = 1; free(resend_data); @@ -3164,7 +3173,7 @@ int dlt_user_queue_resend(void) // log error only when problem occurred first time char str[255]; snprintf(str,254,"Could not request resending.: %s \n",strerror(errno)); - dlt_log(LOG_CRIT, str); + dlt_log(LOG_NOTICE, str); } dlt_user_queue_resend_error_counter = 1; free(resend_data); @@ -3330,7 +3339,7 @@ DltReturnValue dlt_user_log_send_log(DltContextData *log, int mtype) len=msg.headersize - sizeof(DltStorageHeader) +log->size; if (len>UINT16_MAX) { - dlt_log(LOG_CRIT,"Huge message discarded!\n"); + dlt_log(LOG_WARNING,"Huge message discarded!\n"); return DLT_RETURN_ERROR; } @@ -3365,7 +3374,7 @@ DltReturnValue dlt_user_log_send_log(DltContextData *log, int mtype) if (dlt_user_log_send_overflow()==0) { snprintf(str,DLT_USER_BUFFER_LENGTH,"%u messages discarded!\n",dlt_user.overflow_counter); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); dlt_user.overflow_counter=0; } } @@ -3420,7 +3429,7 @@ DltReturnValue dlt_user_log_send_log(DltContextData *log, int mtype) if(dlt_user.overflow_counter==0) { - dlt_log(LOG_ERR,"Buffer full! Messages will be discarded.\n"); + dlt_log(LOG_WARNING,"Buffer full! Messages will be discarded.\n"); } ret = DLT_RETURN_BUFFER_FULL; } @@ -3534,7 +3543,7 @@ int dlt_user_log_send_register_application(void) (const unsigned char*)&(usercontext), sizeof(DltUserControlMsgRegisterApplication), (const unsigned char*)dlt_user.application_description, usercontext.description_length)==-1) { - dlt_log(LOG_ERR,"Storing message to history buffer failed! Message discarded.\n"); + dlt_log(LOG_WARNING,"Storing message to history buffer failed! Message discarded.\n"); DLT_SEM_FREE(); return -1; } @@ -3645,7 +3654,7 @@ int dlt_user_log_send_register_context(DltContextData *log) (const unsigned char*)&(usercontext), sizeof(DltUserControlMsgRegisterContext), (const unsigned char*)log->context_description, usercontext.description_length)==-1) { - dlt_log(LOG_ERR,"Storing message to history buffer failed! Message discarded.\n"); + dlt_log(LOG_WARNING,"Storing message to history buffer failed! Message discarded.\n"); DLT_SEM_FREE(); return -1; } @@ -4055,7 +4064,7 @@ int dlt_user_log_check_user_message(void) break; default: { - dlt_log(LOG_ERR,"Invalid user message type received!\n"); + dlt_log(LOG_WARNING,"Invalid user message type received!\n"); /* Ignore result */ dlt_receiver_remove(receiver,sizeof(DltUserHeader)); /* In next invocation of while loop, a resync will be triggered if additional data was received */ @@ -4158,7 +4167,7 @@ void dlt_user_log_reattach_to_daemon(void) } #endif - dlt_log(LOG_NOTICE, "Logging re-enabled!\n"); + dlt_log(LOG_NOTICE, "Logging (re-)enabled!\n"); /* Re-register application */ if (dlt_user_log_send_register_application()==-1) diff --git a/src/shared/dlt_common.c b/src/shared/dlt_common.c index d0beb97..194f548 100755 --- a/src/shared/dlt_common.c +++ b/src/shared/dlt_common.c @@ -117,7 +117,9 @@ int dlt_print_hex_string(char *text,int textlength,uint8_t *ptr,int size) /* Length 3: AB_ , A is first digit of hex number, B is second digit of hex number, _ is space */ if (textlength<(size*3)) { - dlt_log(LOG_ERR, "String does not fit binary data!\n"); + char str[255]; + snprintf(str, 254, "String does not fit hex data (available=%d, required=%d) !\n", textlength, size*3); + dlt_log(LOG_WARNING, str); return -1; } @@ -165,7 +167,7 @@ int dlt_print_mixed_string(char *text,int textlength,uint8_t *ptr,int size,int h if (textlengthcounter >= DLT_FILTER_MAX) { - dlt_log(LOG_ERR, "Maximum numbers of allowed filters reached!\n"); + sprintf(str, "Maximum number (%d) of allowed filters reached, ignoring filter!\n", DLT_FILTER_MAX); + dlt_log(LOG_WARNING, str); return -1; } @@ -897,7 +902,7 @@ int dlt_message_payload(DltMessage *msg,char *text,int textlength,int type,int v if (textlength<=0) { - dlt_log(LOG_ERR, "String does not fit binary data!\n"); + dlt_log(LOG_WARNING, "String does not fit binary data!\n"); return -1; } @@ -939,7 +944,9 @@ int dlt_message_payload(DltMessage *msg,char *text,int textlength,int type,int v if (textlength<((datalength*3)+20)) { - dlt_log(LOG_ERR, "String does not fit binary data!\n"); + char str[255]; + sprintf(str, 254, "String does not fit binary data (available=%d, required=%d) !\n", textlength, (datalength*3)+20); + dlt_log(LOG_WARNING, str); return -1; } @@ -1150,25 +1157,15 @@ int dlt_message_read(DltMessage *msg,uint8_t *buffer,unsigned int length,int res if (verbose) { - snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Buffer length: %d\n",length); - dlt_log(LOG_INFO, str); - } - if (verbose) - { - snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Header Size: %d\n",msg->headersize); - dlt_log(LOG_INFO, str); - } - if (verbose) - { - snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Data Size: %d\n",msg->datasize); - dlt_log(LOG_INFO, str); + snprintf(str,DLT_COMMON_BUFFER_LENGTH,"BufferLength=%d, HeaderSize=%d, DataSize=%d\n",length, msg->headersize, msg->datasize); + dlt_log(LOG_DEBUG, str); } /* check data size */ if (msg->datasize < 0) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Plausibility check failed. Complete message size too short (%d)!\n",msg->datasize); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return DLT_MESSAGE_ERROR_CONTENT; } @@ -1219,7 +1216,7 @@ int dlt_message_read(DltMessage *msg,uint8_t *buffer,unsigned int length,int res if (msg->databuffer == 0) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Cannot allocate memory for payload buffer of size %d!\n",msg->datasize); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return DLT_MESSAGE_ERROR_UNKNOWN; } @@ -1348,7 +1345,7 @@ int dlt_file_read_header(DltFile *file,int verbose) { if (!feof(file->handle)) { - dlt_log(LOG_ERR, "Cannot read header from file!\n"); + dlt_log(LOG_WARNING, "Cannot read header from file!\n"); } return -1; } @@ -1360,7 +1357,7 @@ int dlt_file_read_header(DltFile *file,int verbose) /* check id of storage header */ if (dlt_check_storageheader(file->msg.storageheader)==0) { - dlt_log(LOG_ERR, "DLT storage header pattern not found!\n"); + dlt_log(LOG_WARNING, "DLT storage header pattern not found!\n"); return -1; } @@ -1370,20 +1367,15 @@ int dlt_file_read_header(DltFile *file,int verbose) file->msg.datasize = DLT_BETOH_16(file->msg.standardheader->len) + sizeof(DltStorageHeader) - file->msg.headersize; if (verbose) { - snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Header Size: %d\n",file->msg.headersize); - dlt_log(LOG_INFO, str); - } - if (verbose) - { - snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Data Size: %d\n",file->msg.datasize); - dlt_log(LOG_INFO, str); + snprintf(str,DLT_COMMON_BUFFER_LENGTH,"HeaderSize=%d, DataSize=%d\n",file->msg.headersize, file->msg.datasize); + dlt_log(LOG_DEBUG, str); } /* check data size */ if (file->msg.datasize < 0) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Plausibility check failed. Complete message size too short! (%d)\n", file->msg.datasize); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } @@ -1407,7 +1399,7 @@ int dlt_file_read_header_raw(DltFile *file,int resync,int verbose) /* cannot read serial header, not enough data available in file */ if (!feof(file->handle)) { - dlt_log(LOG_ERR, "Cannot read header from file!\n"); + dlt_log(LOG_WARNING, "Cannot read header from file!\n"); } return -1; } @@ -1454,7 +1446,7 @@ int dlt_file_read_header_raw(DltFile *file,int resync,int verbose) { if (!feof(file->handle)) { - dlt_log(LOG_ERR, "Cannot read header from file!\n"); + dlt_log(LOG_WARNING, "Cannot read header from file!\n"); } return -1; } @@ -1477,20 +1469,15 @@ int dlt_file_read_header_raw(DltFile *file,int resync,int verbose) file->msg.datasize = DLT_BETOH_16(file->msg.standardheader->len) + sizeof(DltStorageHeader) - file->msg.headersize; if (verbose) { - snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Header Size: %d\n",file->msg.headersize); - dlt_log(LOG_INFO, str); - } - if (verbose) - { - snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Data Size: %d\n",file->msg.datasize); - dlt_log(LOG_INFO, str); + snprintf(str,DLT_COMMON_BUFFER_LENGTH,"HeaderSize=%d, DataSize=%d\n",file->msg.headersize, file->msg.datasize); + dlt_log(LOG_DEBUG, str); } /* check data size */ if (file->msg.datasize < 0) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Plausibility check failed. Complete message size too short! (%d)\n", file->msg.datasize); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } @@ -1513,7 +1500,7 @@ int dlt_file_read_header_extended(DltFile *file, int verbose) DLT_STANDARD_HEADER_EXTRA_SIZE(file->msg.standardheader->htyp), 1,file->handle)!=1) { - dlt_log(LOG_ERR, "Cannot read standard header extra parameters from file!\n"); + dlt_log(LOG_WARNING, "Cannot read standard header extra parameters from file!\n"); return -1; } @@ -1531,7 +1518,7 @@ int dlt_file_read_header_extended(DltFile *file, int verbose) (DLT_IS_HTYP_UEH(file->msg.standardheader->htyp) ? sizeof(DltExtendedHeader) : 0), 1,file->handle)!=1) { - dlt_log(LOG_ERR, "Cannot read extended header from file!\n"); + dlt_log(LOG_WARNING, "Cannot read extended header from file!\n"); return -1; } @@ -1574,7 +1561,7 @@ int dlt_file_read_data(DltFile *file, int verbose) if (file->msg.databuffer == 0) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Cannot allocate memory for payload buffer of size %d!\n",file->msg.datasize); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } @@ -1584,7 +1571,7 @@ int dlt_file_read_data(DltFile *file, int verbose) if (file->msg.datasize!=0) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Cannot read payload data from file of size %d!\n",file->msg.datasize); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } } @@ -1619,15 +1606,14 @@ int dlt_file_open(DltFile *file,const char *filename,int verbose) if (file->handle == 0) { snprintf(str, DLT_COMMON_BUFFER_LENGTH - 1 ,"File %s cannot be opened!\n",filename); - - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } if (0 != fseek(file->handle,0,SEEK_END)) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"dlt_file_open: Seek failed to 0,SEEK_END"); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } file->file_length = ftell(file->handle); @@ -1635,7 +1621,7 @@ int dlt_file_open(DltFile *file,const char *filename,int verbose) if (0 != fseek(file->handle,0,SEEK_SET)) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"dlt_file_open: Seek failed to 0,SEEK_SET"); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } @@ -1643,7 +1629,7 @@ int dlt_file_open(DltFile *file,const char *filename,int verbose) { /* print file length */ snprintf(str,DLT_COMMON_BUFFER_LENGTH,"File is %lu bytes long\n",file->file_length); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); } return 0; } @@ -1656,7 +1642,7 @@ int dlt_file_read(DltFile *file,int verbose) if (verbose) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"%s: Message %d:\n",__func__, file->counter_total); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); } if (file==0) @@ -1686,7 +1672,7 @@ int dlt_file_read(DltFile *file,int verbose) if (0 != fseek(file->handle,file->file_position,SEEK_SET)) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Seek failed to file_position %ld \n",file->file_position); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } @@ -1714,7 +1700,7 @@ int dlt_file_read(DltFile *file,int verbose) if (0 != fseek(file->handle,file->file_position,SEEK_SET)) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Seek to last file pos failed!\n"); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); } return-1; } @@ -1736,12 +1722,12 @@ int dlt_file_read(DltFile *file,int verbose) { /* go back to last position in file */ snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Seek failed to skip payload data of size %d!\n",file->msg.datasize); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); if (0 != fseek(file->handle,file->file_position,SEEK_SET)) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Seek back also failed!\n"); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); } return -1; @@ -1756,12 +1742,12 @@ int dlt_file_read(DltFile *file,int verbose) snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Seek failed to skip extra header and payload data from file of size %d!\n", file->msg.headersize - sizeof(DltStorageHeader) - sizeof(DltStandardHeader) + file->msg.datasize); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); /* go back to last position in file */ if (fseek(file->handle,file->file_position,SEEK_SET)) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Seek back also failed!\n"); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); } return -1; } @@ -1791,7 +1777,7 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose) if (verbose) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"%s: Message %d:\n",__func__, file->counter_total); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); } if (file==0) @@ -1823,7 +1809,7 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose) if (verbose) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Position in file: %ld\n",file->file_position); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); } /* read header */ @@ -1833,7 +1819,7 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose) if (0!= fseek(file->handle,file->file_position,SEEK_SET)) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"dlt_file_read_raw, fseek failed 1\n"); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); } return -1; } @@ -1845,7 +1831,7 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose) if (0 != fseek(file->handle,file->file_position,SEEK_SET)) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"dlt_file_read_raw, fseek failed 2\n"); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); } return-1; } @@ -1856,7 +1842,7 @@ int dlt_file_read_raw(DltFile *file,int resync, int verbose) if (0 != fseek(file->handle,file->file_position,SEEK_SET)) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"dlt_file_read_raw, fseek failed 3\n"); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); } return-1; } @@ -1909,7 +1895,7 @@ int dlt_file_message(DltFile *file,int index,int verbose) if (index >= file->counter) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Message %d out of range!\r\n",index); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } @@ -1917,7 +1903,7 @@ int dlt_file_message(DltFile *file,int index,int verbose) if (fseek(file->handle,file->index[index],SEEK_SET)!=0) { snprintf(str,DLT_COMMON_BUFFER_LENGTH,"Seek to message %d to position %ld failed!\r\n",index,file->index[index]); - dlt_log(LOG_ERR, str); + dlt_log(LOG_WARNING, str); return -1; } @@ -2006,7 +1992,9 @@ void dlt_log_free(void) int dlt_log(int prio, char *s) { - char logfmtstring[DLT_COMMON_BUFFER_LENGTH]; + static const char asSeverity[LOG_DEBUG+2][11] = {"EMERGENCY", "ALERT ", "CRITICAL ", "ERROR ", "WARNING ", "NOTICE ", "INFO ", "DEBUG ", " "}; + static const char sFormatString[] = "[%5d.%06d]~DLT~%5d~%s~%s"; + struct timespec sTimeSpec; if (s==0) { @@ -2016,83 +2004,30 @@ int dlt_log(int prio, char *s) { return 0; } - - switch (prio) + if ((prio < 0) || (prio > LOG_DEBUG)) { - case LOG_EMERG: - { - strncpy(logfmtstring,"DLT| EMERGENCY: %s",sizeof(logfmtstring)-1); - logfmtstring[sizeof(logfmtstring)-1]=0; - break; - } - case LOG_ALERT: - { - strncpy(logfmtstring,"DLT| ALERT: %s",sizeof(logfmtstring)-1); - logfmtstring[sizeof(logfmtstring)-1]=0; - break; - } - case LOG_CRIT: - { - strncpy(logfmtstring,"DLT| CRITICAL: %s",sizeof(logfmtstring)-1); - logfmtstring[sizeof(logfmtstring)-1]=0; - break; - } - case LOG_ERR: - { - strncpy(logfmtstring,"DLT| ERROR: %s",sizeof(logfmtstring)-1); - logfmtstring[sizeof(logfmtstring)-1]=0; - break; - } - case LOG_WARNING: - { - strncpy(logfmtstring,"DLT| WARNING: %s",sizeof(logfmtstring)-1); - logfmtstring[sizeof(logfmtstring)-1]=0; - break; - } - case LOG_NOTICE: - { - strncpy(logfmtstring,"DLT| NOTICE: %s",sizeof(logfmtstring)-1); - logfmtstring[sizeof(logfmtstring)-1]=0; - break; - } - case LOG_INFO: - { - strncpy(logfmtstring,"DLT| INFO: %s",sizeof(logfmtstring)-1); - logfmtstring[sizeof(logfmtstring)-1]=0; - break; - } - case LOG_DEBUG: - { - strncpy(logfmtstring,"DLT| DEBUG: %s",sizeof(logfmtstring)-1); - logfmtstring[sizeof(logfmtstring)-1]=0; - break; - } - default: - { - strncpy(logfmtstring,"DLT| %s",sizeof(logfmtstring)-1); - logfmtstring[sizeof(logfmtstring)-1]=0; - break; - } + prio = LOG_DEBUG + 1; } + clock_gettime(CLOCK_MONOTONIC, &sTimeSpec); switch(logging_mode) { case DLT_LOG_TO_CONSOLE: /* log to stdout */ - printf(logfmtstring, s); + printf(sFormatString, (unsigned int)sTimeSpec.tv_sec, (unsigned int)(sTimeSpec.tv_nsec/1000), getpid(), asSeverity[prio], s); break; case DLT_LOG_TO_SYSLOG: /* log to syslog */ #if !defined (__WIN32__) && !defined(_MSC_VER) openlog("DLT",LOG_PID,LOG_DAEMON); - syslog(prio, logfmtstring, s); + syslog(prio, sFormatString, (unsigned int)sTimeSpec.tv_sec, (unsigned int)(sTimeSpec.tv_nsec/1000), getpid(), getpid(), asSeverity[prio], s); closelog(); #endif break; case DLT_LOG_TO_FILE: /* log to file */ if(logging_handle) { - fprintf(logging_handle,logfmtstring, s); + fprintf(logging_handle,sFormatString, (unsigned int)sTimeSpec.tv_sec, (unsigned int)(sTimeSpec.tv_nsec/1000), getpid(), getpid(), asSeverity[prio], s); fflush(logging_handle); } break; @@ -2340,7 +2275,7 @@ int dlt_buffer_init_static_server(DltBuffer *buf, const unsigned char *ptr, uint memset(buf->mem,0,buf->size); snprintf(str,sizeof(str),"Buffer: Size %d\n",buf->size); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); return 0; /* OK */ } @@ -2360,7 +2295,7 @@ int dlt_buffer_init_static_client(DltBuffer *buf, const unsigned char *ptr, uint buf->size = buf->min_size - sizeof(DltBufferHead); snprintf(str,sizeof(str),"Buffer: Size %d\n",buf->size); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); return 0; /* OK */ } @@ -2405,7 +2340,7 @@ int dlt_buffer_free_static(DltBuffer *buf) { if(!buf->mem) { // buffer not initialised - dlt_log(LOG_ERR,"Buffer: Buffer not initialised\n"); + dlt_log(LOG_WARNING,"Buffer: Buffer not initialised\n"); return -1; /* ERROR */ } @@ -2416,7 +2351,7 @@ int dlt_buffer_free_dynamic(DltBuffer *buf) { if(!buf->shm) { // buffer not initialised - dlt_log(LOG_ERR,"Buffer: Buffer not initialised\n"); + dlt_log(LOG_WARNING,"Buffer: Buffer not initialised\n"); return -1; /* ERROR */ } @@ -2508,7 +2443,7 @@ int dlt_buffer_increase_size(DltBuffer *buf) buf->size += buf->step_size; snprintf(str,sizeof(str),"Buffer: Size increased to %d bytes\n",buf->size+sizeof(DltBufferHead)); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); return 0; // OK } @@ -2547,14 +2482,14 @@ int dlt_buffer_minimize_size(DltBuffer *buf) // clear memory memset(buf->mem,0,buf->size); - dlt_log(LOG_INFO,"Buffer: Buffer minimized.\n"); + dlt_log(LOG_DEBUG,"Buffer: Buffer minimized.\n"); return 0; /* OK */ } int dlt_buffer_reset(DltBuffer *buf) { - dlt_log(LOG_ERR,"Buffer: Buffer reset triggered.\n"); + dlt_log(LOG_WARNING,"Buffer: Buffer reset triggered.\n"); /* reset pointers and counters */ ((int*)(buf->shm))[0] = 0; // pointer to write memory @@ -2770,11 +2705,11 @@ void dlt_buffer_info(DltBuffer *buf) char str[256]; snprintf(str,sizeof(str),"Buffer: Available size: %d\n",buf->size); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); snprintf(str,sizeof(str),"Buffer: Buffer full start address: %lX\n",(unsigned long)buf->shm); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); snprintf(str,sizeof(str),"Buffer: Buffer start address: %lX\n",(unsigned long)buf->mem); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); } @@ -2792,11 +2727,11 @@ void dlt_buffer_status(DltBuffer *buf) count = ((int*)(buf->shm))[2]; snprintf(str,sizeof(str),"Buffer: Write: %d\n",write); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); snprintf(str,sizeof(str),"Buffer: Read: %d\n",read); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); snprintf(str,sizeof(str),"Buffer: Count: %d\n",count); - dlt_log(LOG_INFO, str); + dlt_log(LOG_DEBUG, str); } int dlt_buffer_get_total_size(DltBuffer *buf) diff --git a/src/shared/dlt_shm.c b/src/shared/dlt_shm.c index a3eab81..d4eb35b 100644 --- a/src/shared/dlt_shm.c +++ b/src/shared/dlt_shm.c @@ -88,7 +88,7 @@ void dlt_shm_pv(int id,int operation) semaphor.sem_flg = SEM_UNDO; if(semop(id, &semaphor,1) == -1) { - dlt_log(LOG_ERR,"SHM: semop"); + dlt_log(LOG_WARNING,"SHM: semop() failed"); } } @@ -102,32 +102,32 @@ int dlt_shm_init_server(DltShm *buf,int key,int size) { // Create the segment. if ((buf->shmid = shmget(key, size, IPC_CREAT | 0666)) < 0) { - dlt_log(LOG_ERR,"SHM: shmget"); + dlt_log(LOG_WARNING,"SHM: shmget() failed"); return -1; /* ERROR */ } // get the size of shm if (shmctl(buf->shmid, IPC_STAT, &shm_buf)) { - dlt_log(LOG_ERR,"SHM: shmctl"); + dlt_log(LOG_WARNING,"SHM: shmctl() failed"); return -1; /* ERROR */ } // Now we attach the segment to our data space. if ((ptr = shmat(buf->shmid, NULL, 0)) == (unsigned char *) -1) { - dlt_log(LOG_ERR,"SHM: shmat"); + dlt_log(LOG_WARNING,"SHM: shmat() failed"); return -1; /* ERROR */ } // Init semaphore if( (buf->semid = semget(DLT_SHM_SEM,1,S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT|IPC_EXCL)) == -1 ) { if( (buf->semid = semget(DLT_SHM_SEM,1,S_IRWXU|S_IRWXG|S_IRWXO|IPC_EXCL)) == -1 ) { - dlt_log(LOG_ERR,"SHM: semget"); + dlt_log(LOG_WARNING,"SHM: semget() failed"); return -1; /* ERROR */ } } if( semctl(buf->semid,0,SETVAL,(int)1) == -1 ) { - dlt_log(LOG_ERR,"SHM: semctl"); + dlt_log(LOG_WARNING,"SHM: semctl() failed"); return -1; /* ERROR */ } @@ -147,26 +147,26 @@ int dlt_shm_init_client(DltShm *buf,int key) { // Create the segment. if ((buf->shmid = shmget(key, 0, 0666)) < 0) { - dlt_log(LOG_ERR,"SHM: shmget"); + dlt_log(LOG_WARNING,"SHM: shmget() failed"); return -1; /* ERROR */ } // get the size of shm if (shmctl(buf->shmid, IPC_STAT, &shm_buf)) { - dlt_log(LOG_ERR,"SHM: shmctl"); + dlt_log(LOG_WARNING,"SHM: shmctl() failed"); return -1; /* ERROR */ } // Now we attach the segment to our data space. if ((ptr = shmat(buf->shmid, NULL, 0)) == (unsigned char *) -1) { - dlt_log(LOG_ERR,"shmat"); + dlt_log(LOG_WARNING,"shmat() failed"); return -1; /* ERROR */ } // Init semaphore if( (buf->semid = semget(DLT_SHM_SEM,0,0)) == -1 ) { - dlt_log(LOG_ERR,"SHM: semget"); + dlt_log(LOG_WARNING,"SHM: semget() failed"); return -1; /* ERROR */ } @@ -274,17 +274,17 @@ int dlt_shm_remove(DltShm *buf) int dlt_shm_free_server(DltShm *buf) { if(shmdt(buf->buffer.shm)) { - dlt_log(LOG_ERR,"SHM: shmdt"); + dlt_log(LOG_WARNING,"SHM: shmdt() failed"); return -1; /* ERROR */ } if(shmctl(buf->shmid,IPC_RMID,NULL) == -1) { - dlt_log(LOG_ERR,"SHM: shmdt"); + dlt_log(LOG_WARNING,"SHM: shmdt() failed"); return -1; /* ERROR */ } if(semctl(buf->semid,0,IPC_RMID,(int)0) == -1) { - dlt_log(LOG_ERR,"SHM: shmdt"); + dlt_log(LOG_WARNING,"SHM: shmdt() failed"); return -1; /* ERROR */ } @@ -299,7 +299,7 @@ int dlt_shm_free_server(DltShm *buf) { int dlt_shm_free_client(DltShm *buf) { if(shmdt(buf->buffer.shm)) { - dlt_log(LOG_ERR,"SHM: shmdt"); + dlt_log(LOG_WARNING,"SHM: shmdt() failed"); return -1; /* ERROR */ } -- cgit v1.2.1