summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/main.c3
-rw-r--r--src/core/manager.c1
-rw-r--r--src/core/manager.h2
-rw-r--r--src/core/system.conf1
-rw-r--r--src/core/timer.c2
-rw-r--r--src/core/user.conf1
6 files changed, 9 insertions, 1 deletions
diff --git a/src/core/main.c b/src/core/main.c
index e0fbb6e147..41605ee8d5 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -108,6 +108,7 @@ static char **arg_default_environment = NULL;
static struct rlimit *arg_default_rlimit[_RLIMIT_MAX] = {};
static uint64_t arg_capability_bounding_set_drop = 0;
static nsec_t arg_timer_slack_nsec = (nsec_t) -1;
+static usec_t arg_default_timer_accuracy_usec = 1 * USEC_PER_MINUTE;
static Set* arg_syscall_archs = NULL;
static FILE* arg_serialization = NULL;
static bool arg_default_cpu_accounting = false;
@@ -686,6 +687,7 @@ static int parse_config_file(void) {
{ "Manager", "SystemCallArchitectures", config_parse_syscall_archs, 0, &arg_syscall_archs },
#endif
{ "Manager", "TimerSlackNSec", config_parse_nsec, 0, &arg_timer_slack_nsec },
+ { "Manager", "DefaultTimerAccuracySec", config_parse_sec, 0, &arg_default_timer_accuracy_usec },
{ "Manager", "DefaultStandardOutput", config_parse_output, 0, &arg_default_std_output },
{ "Manager", "DefaultStandardError", config_parse_output, 0, &arg_default_std_error },
{ "Manager", "DefaultTimeoutStartSec", config_parse_sec, 0, &arg_default_timeout_start_usec },
@@ -1635,6 +1637,7 @@ int main(int argc, char *argv[]) {
}
m->confirm_spawn = arg_confirm_spawn;
+ m->default_timer_accuracy_usec = arg_default_timer_accuracy_usec;
m->default_std_output = arg_default_std_output;
m->default_std_error = arg_default_std_error;
m->default_restart_usec = arg_default_restart_usec;
diff --git a/src/core/manager.c b/src/core/manager.c
index a3ff85c86e..224106c660 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -428,6 +428,7 @@ int manager_new(SystemdRunningAs running_as, Manager **_m) {
m->running_as = running_as;
m->exit_code = _MANAGER_EXIT_CODE_INVALID;
+ m->default_timer_accuracy_usec = USEC_PER_MINUTE;
m->idle_pipe[0] = m->idle_pipe[1] = m->idle_pipe[2] = m->idle_pipe[3] = -1;
diff --git a/src/core/manager.h b/src/core/manager.h
index 38f1c89c93..14cdf81512 100644
--- a/src/core/manager.h
+++ b/src/core/manager.h
@@ -241,6 +241,8 @@ struct Manager {
bool default_memory_accounting;
bool default_blockio_accounting;
+ usec_t default_timer_accuracy_usec;
+
struct rlimit *rlimit[_RLIMIT_MAX];
/* non-zero if we are reloading or reexecuting, */
diff --git a/src/core/system.conf b/src/core/system.conf
index 5be158d9f5..65a35a0689 100644
--- a/src/core/system.conf
+++ b/src/core/system.conf
@@ -23,6 +23,7 @@
#CapabilityBoundingSet=
#SystemCallArchitectures=
#TimerSlackNSec=
+#DefaultTimerAccuracySec=1min
#DefaultStandardOutput=journal
#DefaultStandardError=inherit
#DefaultTimeoutStartSec=90s
diff --git a/src/core/timer.c b/src/core/timer.c
index 62baf5785d..6c853044a1 100644
--- a/src/core/timer.c
+++ b/src/core/timer.c
@@ -48,7 +48,7 @@ static void timer_init(Unit *u) {
t->next_elapse_monotonic_or_boottime = (usec_t) -1;
t->next_elapse_realtime = (usec_t) -1;
- t->accuracy_usec = USEC_PER_MINUTE;
+ t->accuracy_usec = u->manager->default_timer_accuracy_usec;
}
void timer_free_values(Timer *t) {
diff --git a/src/core/user.conf b/src/core/user.conf
index f19ac75286..8c7ecde727 100644
--- a/src/core/user.conf
+++ b/src/core/user.conf
@@ -14,6 +14,7 @@
#LogLocation=no
#SystemCallArchitectures=
#TimerSlackNSec=
+#DefaultTimerAccuracySec=1min
#DefaultStandardOutput=inherit
#DefaultStandardError=inherit
#DefaultTimeoutStartSec=90s