diff options
Diffstat (limited to 'src/system/dlt-system-processes.c')
-rw-r--r-- | src/system/dlt-system-processes.c | 189 |
1 files changed, 93 insertions, 96 deletions
diff --git a/src/system/dlt-system-processes.c b/src/system/dlt-system-processes.c index b92ff55..e9b8577 100644 --- a/src/system/dlt-system-processes.c +++ b/src/system/dlt-system-processes.c @@ -57,7 +57,7 @@ #include "dlt-system.h" -// Modes of sending +/* Modes of sending */ #define SEND_MODE_OFF 0 #define SEND_MODE_ONCE 1 #define SEND_MODE_ON 2 @@ -69,108 +69,105 @@ DLT_DECLARE_CONTEXT(procContext) void send_process(LogProcessOptions const *popts, int n) { - DLT_LOG(dltsystem, DLT_LOG_DEBUG, - DLT_STRING("dlt-system-processes, send process info.")); - FILE * pFile; - struct dirent *dp; - char filename[PATH_MAX]; - char buffer[1024]; - int bytes; - int found = 0; - - /* go through all process files in directory */ - DIR *dir = opendir("/proc"); - if(dir != NULL) - { - while ((dp=readdir(dir)) != NULL) - { - if(isdigit(dp->d_name[0])) - { - buffer[0] = 0; - snprintf(filename,PATH_MAX, "/proc/%s/cmdline",dp->d_name); - pFile = fopen(filename, "r"); - if(pFile != NULL) - { - bytes = fread(buffer, 1, sizeof(buffer)-1, pFile); - fclose(pFile); - } - if((strcmp((*popts).Name[n], "*")==0) || - (strcmp(buffer, (*popts).Name[n])==0)) - { - found = 1; - snprintf(filename,PATH_MAX, "/proc/%s/%s", dp->d_name,(*popts).Filename[n]); - pFile = fopen(filename, "r"); - if(pFile != NULL) - { - bytes = fread(buffer, 1, sizeof(buffer)-1, pFile); - fclose(pFile); - - if(bytes>0) - { - buffer[bytes] = 0; - DLT_LOG(procContext, DLT_LOG_INFO, DLT_INT(atoi(dp->d_name)), DLT_STRING((*popts).Filename[n]), DLT_STRING(buffer)); - } - } - if(strcmp((*popts).Name[n], "*") !=0) - break; - } - } - } - closedir(dir); - } - else - { - DLT_LOG(dltsystem, DLT_LOG_ERROR, - DLT_STRING("dlt-system-processes, failed to open /proc.")); - } - - if(!found) { - DLT_LOG(procContext, DLT_LOG_INFO, DLT_STRING("Process"), DLT_STRING((*popts).Name[n]),DLT_STRING("not running!")); - } + DLT_LOG(dltsystem, DLT_LOG_DEBUG, + DLT_STRING("dlt-system-processes, send process info.")); + FILE *pFile; + struct dirent *dp; + char filename[PATH_MAX]; + char buffer[1024]; + int bytes; + int found = 0; + + /* go through all process files in directory */ + DIR *dir = opendir("/proc"); + + if (dir != NULL) { + while ((dp = readdir(dir)) != NULL) + if (isdigit(dp->d_name[0])) { + buffer[0] = 0; + snprintf(filename, PATH_MAX, "/proc/%s/cmdline", dp->d_name); + pFile = fopen(filename, "r"); + + if (pFile != NULL) { + bytes = fread(buffer, 1, sizeof(buffer) - 1, pFile); + fclose(pFile); + } + + if ((strcmp((*popts).Name[n], "*") == 0) || + (strcmp(buffer, (*popts).Name[n]) == 0)) { + found = 1; + snprintf(filename, PATH_MAX, "/proc/%s/%s", dp->d_name, (*popts).Filename[n]); + pFile = fopen(filename, "r"); + + if (pFile != NULL) { + bytes = fread(buffer, 1, sizeof(buffer) - 1, pFile); + fclose(pFile); + + if (bytes > 0) { + buffer[bytes] = 0; + DLT_LOG(procContext, DLT_LOG_INFO, DLT_INT(atoi(dp->d_name)), + DLT_STRING((*popts).Filename[n]), DLT_STRING(buffer)); + } + } + + if (strcmp((*popts).Name[n], "*") != 0) + break; + } + } + + closedir(dir); + } + else { + DLT_LOG(dltsystem, DLT_LOG_ERROR, + DLT_STRING("dlt-system-processes, failed to open /proc.")); + } + + if (!found) + DLT_LOG(procContext, DLT_LOG_INFO, DLT_STRING("Process"), DLT_STRING((*popts).Name[n]), + DLT_STRING("not running!")); } void logprocess_thread(void *v_conf) { - DLT_LOG(dltsystem, DLT_LOG_DEBUG, - DLT_STRING("dlt-system-processes, in thread.")); - - DltSystemConfiguration *conf = (DltSystemConfiguration *) v_conf; - DLT_REGISTER_CONTEXT(procContext, conf->LogProcesses.ContextId, "Log Processes"); - - int process_delays[DLT_SYSTEM_LOG_PROCESSES_MAX]; - int i; - for(i = 0;i < conf->LogProcesses.Count;i++) - process_delays[i] = conf->LogProcesses.TimeDelay[i]; - - while(!threads.shutdown) - { - sleep(1); - for(i = 0;i < conf->LogProcesses.Count;i++) - { - if(conf->LogProcesses.Mode[i] == SEND_MODE_OFF) - continue; - - if(process_delays[i] <= 0) - { + DLT_LOG(dltsystem, DLT_LOG_DEBUG, + DLT_STRING("dlt-system-processes, in thread.")); + + DltSystemConfiguration *conf = (DltSystemConfiguration *)v_conf; + DLT_REGISTER_CONTEXT(procContext, conf->LogProcesses.ContextId, "Log Processes"); + + int process_delays[DLT_SYSTEM_LOG_PROCESSES_MAX]; + int i; + + for (i = 0; i < conf->LogProcesses.Count; i++) + process_delays[i] = conf->LogProcesses.TimeDelay[i]; + + while (!threads.shutdown) { + sleep(1); + + for (i = 0; i < conf->LogProcesses.Count; i++) { + if (conf->LogProcesses.Mode[i] == SEND_MODE_OFF) + continue; + + if (process_delays[i] <= 0) { send_process(&(conf->LogProcesses), i); - process_delays[i] = conf->LogProcesses.TimeDelay[i]; - if(conf->LogProcesses.Mode[i] == SEND_MODE_ONCE) - conf->LogProcesses.Mode[i] = SEND_MODE_OFF; - } - else - { - process_delays[i]--; - } - } - } + process_delays[i] = conf->LogProcesses.TimeDelay[i]; + + if (conf->LogProcesses.Mode[i] == SEND_MODE_ONCE) + conf->LogProcesses.Mode[i] = SEND_MODE_OFF; + } + else { + process_delays[i]--; + } + } + } } void start_logprocess(DltSystemConfiguration *conf) { - DLT_LOG(dltsystem, DLT_LOG_DEBUG, - DLT_STRING("dlt-system-processes, starting process log.")); - static pthread_attr_t t_attr; - static pthread_t pt; - pthread_create(&pt, &t_attr, (void *)logprocess_thread, conf); - threads.threads[threads.count++] = pt; + DLT_LOG(dltsystem, DLT_LOG_DEBUG, + DLT_STRING("dlt-system-processes, starting process log.")); + static pthread_attr_t t_attr; + static pthread_t pt; + pthread_create(&pt, &t_attr, (void *)logprocess_thread, conf); + threads.threads[threads.count++] = pt; } |