diff options
author | Biastoch, Darian (ADITG/ESM) <dbiastoch@de.adit-jv.com> | 2021-07-16 00:29:10 +0000 |
---|---|---|
committer | Saya Sugiura <ssugiura@jp.adit-jv.com> | 2021-10-05 11:07:01 +0900 |
commit | 2a32e86d29e4c727a4dd7d95dc487b6632cdd6d7 (patch) | |
tree | 120995ed2095145b31caf2958ddd259ced88786d /src/system/dlt-system-processes.c | |
parent | 837ec68ecc1f105474d81461d83b365ab1f8129d (diff) | |
download | DLT-daemon-2a32e86d29e4c727a4dd7d95dc487b6632cdd6d7.tar.gz |
system: use signalfd for dlt-system
1: Move the call of pthread_sigmask in dlt-qnx-systems main before DLT_REGISTER_APP, because this already spawns a thread, what was done without applying pthread_sigmask before.
2: Replaced all threads in dlt-system, that are spawned for each feature, through one poll. This poll waits for a file descriptor event, that triggers the feature routine, that was executed before in the thread. Done this for following processes:
* reading syslog and journal
* frequently reading logfile and logprocess
* triggering filetransfer, if a file was added/changed in watched directory
* checking watchdog timer of systemd service file with defined intervall
Signed-off-by: dbiastoch <dbiastoch@de.adit-jv.com>
Diffstat (limited to 'src/system/dlt-system-processes.c')
-rw-r--r-- | src/system/dlt-system-processes.c | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/src/system/dlt-system-processes.c b/src/system/dlt-system-processes.c index 71f5a1d..a6e4918 100644 --- a/src/system/dlt-system-processes.c +++ b/src/system/dlt-system-processes.c @@ -44,7 +44,6 @@ *******************************************************************************/ -#include <pthread.h> #include <unistd.h> #include <ctype.h> #include <sys/types.h> @@ -60,7 +59,7 @@ #define SEND_MODE_ONCE 1 #define SEND_MODE_ON 2 -extern DltSystemThreads threads; +int process_delays[DLT_SYSTEM_LOG_PROCESSES_MAX]; DLT_IMPORT_CONTEXT(dltsystem) DLT_DECLARE_CONTEXT(procContext) @@ -125,7 +124,7 @@ void send_process(LogProcessOptions const *popts, int n) DLT_STRING("not running!")); } -void logprocess_thread(void *v_conf) +void logprocess_init(void *v_conf) { DLT_LOG(dltsystem, DLT_LOG_DEBUG, DLT_STRING("dlt-system-processes, in thread.")); @@ -133,29 +132,26 @@ void logprocess_thread(void *v_conf) 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++) + for (int 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; +void logprocess_fd_handler(void *v_conf) +{ + DltSystemConfiguration *conf = (DltSystemConfiguration *)v_conf; + for (int 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 (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]--; - } + if (conf->LogProcesses.Mode[i] == SEND_MODE_ONCE) + conf->LogProcesses.Mode[i] = SEND_MODE_OFF; + } + else { + process_delays[i]--; } } } |