summaryrefslogtreecommitdiff
path: root/src/system/dlt-system-processes.c
diff options
context:
space:
mode:
authorBiastoch, Darian (ADITG/ESM) <dbiastoch@de.adit-jv.com>2021-07-16 00:29:10 +0000
committerSaya Sugiura <ssugiura@jp.adit-jv.com>2021-10-05 11:07:01 +0900
commit2a32e86d29e4c727a4dd7d95dc487b6632cdd6d7 (patch)
tree120995ed2095145b31caf2958ddd259ced88786d /src/system/dlt-system-processes.c
parent837ec68ecc1f105474d81461d83b365ab1f8129d (diff)
downloadDLT-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.c40
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]--;
}
}
}