summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-10-15 12:58:17 +0200
committerLennart Poettering <lennart@poettering.net>2015-10-15 12:58:17 +0200
commite18992ad4f21d300b6dc46d706227819fd3c5d6a (patch)
tree612411e91377bbdc515e6d89484a337d5ab07b47
parent19833db683c1e197718f00d1d5cb4827ee7897d8 (diff)
parent8d2bc8e5fd023a24684446f0057440e3fd0d79bf (diff)
Merge pull request #1574 from evverx/run-timer-slack-nsec
systemd-run can launch units with TimerSlackNSec
-rw-r--r--shell-completion/bash/systemd-run2
-rw-r--r--src/core/dbus-execute.c15
-rw-r--r--src/shared/bus-util.c9
3 files changed, 25 insertions, 1 deletions
diff --git a/shell-completion/bash/systemd-run b/shell-completion/bash/systemd-run
index 462ee33959..518812e040 100644
--- a/shell-completion/bash/systemd-run
+++ b/shell-completion/bash/systemd-run
@@ -84,7 +84,7 @@ _systemd_run() {
LimitNICE= LimitRTPRIO= LimitRTTIME= PrivateTmp= PrivateDevices=
PrivateNetwork= NoNewPrivileges= WorkingDirectory= RootDirectory=
TTYPath= SyslogIdentifier= SyslogLevelPrefix= SyslogLevel=
- SyslogFacility='
+ SyslogFacility= TimerSlackNSec='
COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
return 0
diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
index 8b1f830476..436229330e 100644
--- a/src/core/dbus-execute.c
+++ b/src/core/dbus-execute.c
@@ -1171,6 +1171,21 @@ int bus_exec_context_set_transient_property(
return 1;
+ } else if (streq(name, "TimerSlackNSec")) {
+
+ nsec_t n;
+
+ r = sd_bus_message_read(message, "t", &n);
+ if (r < 0)
+ return r;
+
+ if (mode != UNIT_CHECK) {
+ c->timer_slack_nsec = n;
+ unit_write_drop_in_private_format(u, mode, name, "TimerSlackNSec=" NSEC_FMT "\n", n);
+ }
+
+ return 1;
+
} else if (rlimit_from_string(name) >= 0) {
uint64_t rl;
rlim_t x;
diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c
index 3a45ac4064..a5d6edbba9 100644
--- a/src/shared/bus-util.c
+++ b/src/shared/bus-util.c
@@ -1655,7 +1655,16 @@ int bus_append_unit_property_assignment(sd_bus_message *m, const char *assignmen
}
r = sd_bus_message_append(m, "v", "t", u);
+ } else if (streq(field, "TimerSlackNSec")) {
+ nsec_t n;
+ r = parse_nsec(eq, &n);
+ if (r < 0) {
+ log_error("Failed to parse %s value %s", field, eq);
+ return -EINVAL;
+ }
+
+ r = sd_bus_message_append(m, "v", "t", n);
} else {
log_error("Unknown assignment %s.", assignment);
return -EINVAL;