diff options
author | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2013-12-16 13:58:09 +0100 |
---|---|---|
committer | Alexander Wenzel <Alexander.AW.Wenzel@bmw.de> | 2014-01-10 07:16:09 +0100 |
commit | 4094928eb19e7b088c50c166d06771893e7a7c05 (patch) | |
tree | 6bd34fcb990f9925868e950a39316f5e151e06b4 /src/lib/dlt_user.c | |
parent | 25bc19dc81f9f8d352b9276dc3e3452ac903facc (diff) | |
download | DLT-daemon-4094928eb19e7b088c50c166d06771893e7a7c05.tar.gz |
Removed check of double registration of contexts in user library, already checked by daemon.
Signed-off-by: Alexander Wenzel <Alexander.AW.Wenzel@bmw.de>
Diffstat (limited to 'src/lib/dlt_user.c')
-rw-r--r-- | src/lib/dlt_user.c | 305 |
1 files changed, 138 insertions, 167 deletions
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c index e033246..1ace33c 100644 --- a/src/lib/dlt_user.c +++ b/src/lib/dlt_user.c @@ -735,7 +735,6 @@ int dlt_register_context_ll_ts(DltContext *handle, const char *contextid, const { DltContextData log; uint32_t i; - int registered,ret; char ctid[DLT_ID_SIZE+1]; if (dlt_user_initialised==0) @@ -786,205 +785,177 @@ int dlt_register_context_ll_ts(DltContext *handle, const char *contextid, const /* Check if already registered, else register context */ DLT_SEM_LOCK(); - registered=0; - for (i=0;i<dlt_user.dlt_ll_ts_num_entries;i++) - { - if (dlt_user.dlt_ll_ts) - { - if (memcmp(dlt_user.dlt_ll_ts[i].contextID, contextid,DLT_ID_SIZE)==0) - { - registered=1; - - memset(ctid,0,(DLT_ID_SIZE+1)); - dlt_print_id(ctid, contextid); - - sprintf(str,"context '%s' already registered!\n",ctid); - dlt_log(LOG_WARNING, str); - - break; - } - } - } - - if (registered==0) - { - /* Allocate or expand context array */ - if (dlt_user.dlt_ll_ts == 0) - { - dlt_user.dlt_ll_ts = (dlt_ll_ts_type*) malloc(sizeof(dlt_ll_ts_type)*DLT_USER_CONTEXT_ALLOC_SIZE); - if (dlt_user.dlt_ll_ts==0) - { - DLT_SEM_FREE(); - return -1; - } + /* Check of double context registration removed */ + /* Double registration is already checked by daemon */ - dlt_user.dlt_ll_ts_max_num_entries = DLT_USER_CONTEXT_ALLOC_SIZE; + /* Allocate or expand context array */ + if (dlt_user.dlt_ll_ts == 0) + { + dlt_user.dlt_ll_ts = (dlt_ll_ts_type*) malloc(sizeof(dlt_ll_ts_type)*DLT_USER_CONTEXT_ALLOC_SIZE); + if (dlt_user.dlt_ll_ts==0) + { + DLT_SEM_FREE(); + return -1; + } - /* Initialize new entries */ - for (i=0;i<dlt_user.dlt_ll_ts_max_num_entries;i++) - { - dlt_set_id(dlt_user.dlt_ll_ts[i].contextID,""); + dlt_user.dlt_ll_ts_max_num_entries = DLT_USER_CONTEXT_ALLOC_SIZE; - /* At startup, logging and tracing is locally enabled */ - /* the correct log level/status is set after received from daemon */ - dlt_user.dlt_ll_ts[i].log_level = DLT_USER_INITIAL_LOG_LEVEL; - dlt_user.dlt_ll_ts[i].trace_status = DLT_USER_INITIAL_TRACE_STATUS; + /* Initialize new entries */ + for (i=0;i<dlt_user.dlt_ll_ts_max_num_entries;i++) + { + dlt_set_id(dlt_user.dlt_ll_ts[i].contextID,""); - dlt_user.dlt_ll_ts[i].log_level_ptr = 0; - dlt_user.dlt_ll_ts[i].trace_status_ptr = 0; + /* At startup, logging and tracing is locally enabled */ + /* the correct log level/status is set after received from daemon */ + dlt_user.dlt_ll_ts[i].log_level = DLT_USER_INITIAL_LOG_LEVEL; + dlt_user.dlt_ll_ts[i].trace_status = DLT_USER_INITIAL_TRACE_STATUS; - dlt_user.dlt_ll_ts[i].context_description = 0; + dlt_user.dlt_ll_ts[i].log_level_ptr = 0; + dlt_user.dlt_ll_ts[i].trace_status_ptr = 0; - dlt_user.dlt_ll_ts[i].injection_table = 0; - dlt_user.dlt_ll_ts[i].nrcallbacks = 0; - } - } - else - { - if ((dlt_user.dlt_ll_ts_num_entries%DLT_USER_CONTEXT_ALLOC_SIZE)==0) - { - /* allocate memory in steps of DLT_USER_CONTEXT_ALLOC_SIZE, e.g. 500 */ - dlt_ll_ts_type *old_ll_ts; - uint32_t old_max_entries; + dlt_user.dlt_ll_ts[i].context_description = 0; - old_ll_ts = dlt_user.dlt_ll_ts; - old_max_entries = dlt_user.dlt_ll_ts_max_num_entries; - - dlt_user.dlt_ll_ts_max_num_entries = ((dlt_user.dlt_ll_ts_num_entries/DLT_USER_CONTEXT_ALLOC_SIZE)+1)*DLT_USER_CONTEXT_ALLOC_SIZE; - dlt_user.dlt_ll_ts = (dlt_ll_ts_type*) malloc(sizeof(dlt_ll_ts_type)* - dlt_user.dlt_ll_ts_max_num_entries); - if (dlt_user.dlt_ll_ts==0) - { - dlt_user.dlt_ll_ts = old_ll_ts; - dlt_user.dlt_ll_ts_max_num_entries = old_max_entries; - DLT_SEM_FREE(); - return -1; - } + dlt_user.dlt_ll_ts[i].injection_table = 0; + dlt_user.dlt_ll_ts[i].nrcallbacks = 0; + } + } + else + { + if ((dlt_user.dlt_ll_ts_num_entries%DLT_USER_CONTEXT_ALLOC_SIZE)==0) + { + /* allocate memory in steps of DLT_USER_CONTEXT_ALLOC_SIZE, e.g. 500 */ + dlt_ll_ts_type *old_ll_ts; + uint32_t old_max_entries; - memcpy(dlt_user.dlt_ll_ts,old_ll_ts,sizeof(dlt_ll_ts_type)*dlt_user.dlt_ll_ts_num_entries); - free(old_ll_ts); + old_ll_ts = dlt_user.dlt_ll_ts; + old_max_entries = dlt_user.dlt_ll_ts_max_num_entries; - /* Initialize new entries */ - for (i=dlt_user.dlt_ll_ts_num_entries;i<dlt_user.dlt_ll_ts_max_num_entries;i++) - { - dlt_set_id(dlt_user.dlt_ll_ts[i].contextID,""); + dlt_user.dlt_ll_ts_max_num_entries = ((dlt_user.dlt_ll_ts_num_entries/DLT_USER_CONTEXT_ALLOC_SIZE)+1)*DLT_USER_CONTEXT_ALLOC_SIZE; + dlt_user.dlt_ll_ts = (dlt_ll_ts_type*) malloc(sizeof(dlt_ll_ts_type)* + dlt_user.dlt_ll_ts_max_num_entries); + if (dlt_user.dlt_ll_ts==0) + { + dlt_user.dlt_ll_ts = old_ll_ts; + dlt_user.dlt_ll_ts_max_num_entries = old_max_entries; + DLT_SEM_FREE(); + return -1; + } - /* At startup, logging and tracing is locally enabled */ - /* the correct log level/status is set after received from daemon */ - dlt_user.dlt_ll_ts[i].log_level = DLT_USER_INITIAL_LOG_LEVEL; - dlt_user.dlt_ll_ts[i].trace_status = DLT_USER_INITIAL_TRACE_STATUS; + memcpy(dlt_user.dlt_ll_ts,old_ll_ts,sizeof(dlt_ll_ts_type)*dlt_user.dlt_ll_ts_num_entries); + free(old_ll_ts); - dlt_user.dlt_ll_ts[i].log_level_ptr = 0; - dlt_user.dlt_ll_ts[i].trace_status_ptr = 0; + /* Initialize new entries */ + for (i=dlt_user.dlt_ll_ts_num_entries;i<dlt_user.dlt_ll_ts_max_num_entries;i++) + { + dlt_set_id(dlt_user.dlt_ll_ts[i].contextID,""); - dlt_user.dlt_ll_ts[i].context_description = 0; + /* At startup, logging and tracing is locally enabled */ + /* the correct log level/status is set after received from daemon */ + dlt_user.dlt_ll_ts[i].log_level = DLT_USER_INITIAL_LOG_LEVEL; + dlt_user.dlt_ll_ts[i].trace_status = DLT_USER_INITIAL_TRACE_STATUS; - dlt_user.dlt_ll_ts[i].injection_table = 0; - dlt_user.dlt_ll_ts[i].nrcallbacks = 0; - } - } - } + dlt_user.dlt_ll_ts[i].log_level_ptr = 0; + dlt_user.dlt_ll_ts[i].trace_status_ptr = 0; - /* Store locally context id and context description */ - dlt_set_id(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].contextID, contextid); + dlt_user.dlt_ll_ts[i].context_description = 0; - if (dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description!=0) - { - free(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description); - } + dlt_user.dlt_ll_ts[i].injection_table = 0; + dlt_user.dlt_ll_ts[i].nrcallbacks = 0; + } + } + } - dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description = 0; + /* Store locally context id and context description */ + dlt_set_id(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].contextID, contextid); - if (description!=0) - { - size_t desc_len = strlen(description); - dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description = malloc(desc_len+1); - if(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description == 0) - { - DLT_SEM_FREE(); - return -1; - } + if (dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description!=0) + { + free(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description); + } - strncpy(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description, description, desc_len); + dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description = 0; - /* Terminate transmitted string with 0 */ - dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description[desc_len]='\0'; - } + if (description!=0) + { + size_t desc_len = strlen(description); + dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description = malloc(desc_len+1); + if(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description == 0) + { + DLT_SEM_FREE(); + return -1; + } - if(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level_ptr == 0) - { - dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level_ptr = malloc(sizeof(int8_t)); - if(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level_ptr == 0) - { - DLT_SEM_FREE(); - return -1; - } - } - if(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status_ptr == 0) - { - dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status_ptr = malloc(sizeof(int8_t)); - if(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status_ptr == 0) - { - DLT_SEM_FREE(); - return -1; - } - } + strncpy(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description, description, desc_len); - if (loglevel!=DLT_USER_LOG_LEVEL_NOT_SET) - { - dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level = loglevel; - } + /* Terminate transmitted string with 0 */ + dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description[desc_len]='\0'; + } - if (tracestatus!=DLT_USER_TRACE_STATUS_NOT_SET) - { - dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status = tracestatus; - } + if(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level_ptr == 0) + { + dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level_ptr = malloc(sizeof(int8_t)); + if(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level_ptr == 0) + { + DLT_SEM_FREE(); + return -1; + } + } + if(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status_ptr == 0) + { + dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status_ptr = malloc(sizeof(int8_t)); + if(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status_ptr == 0) + { + DLT_SEM_FREE(); + return -1; + } + } - /* Prepare transfer struct */ - //dlt_set_id(log->appID, dlt_user.appID); - dlt_set_id(handle->contextID, contextid); - handle->log_level_pos = dlt_user.dlt_ll_ts_num_entries; + if (loglevel!=DLT_USER_LOG_LEVEL_NOT_SET) + { + dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level = loglevel; + } - handle->log_level_ptr = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level_ptr; - handle->trace_status_ptr = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status_ptr; + if (tracestatus!=DLT_USER_TRACE_STATUS_NOT_SET) + { + dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status = tracestatus; + } - log.context_description = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description; + /* Prepare transfer struct */ + //dlt_set_id(log->appID, dlt_user.appID); + dlt_set_id(handle->contextID, contextid); + handle->log_level_pos = dlt_user.dlt_ll_ts_num_entries; - *(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level_ptr) = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level; - *(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status_ptr) = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status = tracestatus; + handle->log_level_ptr = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level_ptr; + handle->trace_status_ptr = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status_ptr; - if (loglevel!=DLT_USER_LOG_LEVEL_NOT_SET) - { - log.log_level = loglevel; - } - else - { - log.log_level = DLT_USER_LOG_LEVEL_NOT_SET; - } + log.context_description = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].context_description; - if (tracestatus!=DLT_USER_TRACE_STATUS_NOT_SET) - { - log.trace_status = tracestatus; - } - else - { - log.trace_status = DLT_USER_TRACE_STATUS_NOT_SET; - } + *(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level_ptr) = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].log_level; + *(dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status_ptr) = dlt_user.dlt_ll_ts[dlt_user.dlt_ll_ts_num_entries].trace_status = tracestatus; - dlt_user.dlt_ll_ts_num_entries++; + if (loglevel!=DLT_USER_LOG_LEVEL_NOT_SET) + { + log.log_level = loglevel; + } + else + { + log.log_level = DLT_USER_LOG_LEVEL_NOT_SET; + } - DLT_SEM_FREE(); + if (tracestatus!=DLT_USER_TRACE_STATUS_NOT_SET) + { + log.trace_status = tracestatus; + } + else + { + log.trace_status = DLT_USER_TRACE_STATUS_NOT_SET; + } - ret=dlt_user_log_send_register_context(&log); - } - else - { - DLT_SEM_FREE(); + dlt_user.dlt_ll_ts_num_entries++; - ret=-1; - } + DLT_SEM_FREE(); - return ret; + return dlt_user_log_send_register_context(&log); } int dlt_unregister_app(void) |