dbus-execute.c revision 891703e1eef9f9850c7bd34b6d9df0e6c2c8a939
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu This file is part of systemd.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Copyright 2010 Lennart Poettering
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance systemd is free software; you can redistribute it and/or modify it
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu under the terms of the GNU General Public License as published by
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu the Free Software Foundation; either version 2 of the License, or
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu (at your option) any later version.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu systemd is distributed in the hope that it will be useful, but
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu WITHOUT ANY WARRANTY; without even the implied warranty of
19e01e1a7e319063434bd86c8ecbc5f241ef9993Felix Gabriel Mance MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu General Public License for more details.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu You should have received a copy of the GNU General Public License
a604cbad8e2202147b5c6bb9f2e06ae61162d654Felix Gabriel Mance along with systemd; If not, see <http://www.gnu.org/licenses/>.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae BungiuDEFINE_BUS_PROPERTY_APPEND_ENUM(bus_execute_append_kill_mode, kill_mode, KillMode);
1a38107941725211e7c3f051f7a8f5e12199f03acmaederDEFINE_BUS_PROPERTY_APPEND_ENUM(bus_execute_append_input, exec_input, ExecInput);
1a38107941725211e7c3f051f7a8f5e12199f03acmaederDEFINE_BUS_PROPERTY_APPEND_ENUM(bus_execute_append_output, exec_output, ExecOutput);
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuint bus_execute_append_env_files(DBusMessageIter *i, const char *property, void *data) {
27fdf879983dd28e211b41f3be6c0e930b7c816bFelix Gabriel Mance if (!dbus_message_iter_open_container(i, DBUS_TYPE_ARRAY, "(sb)", &sub))
be00381168b3f10192afabbba136fb06d3a9f358Christian Maeder if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
be00381168b3f10192afabbba136fb06d3a9f358Christian Maeder !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &fn) ||
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_BOOLEAN, &b) ||
27fdf879983dd28e211b41f3be6c0e930b7c816bFelix Gabriel Mance !dbus_message_iter_close_container(&sub, &sub2))
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu if (!dbus_message_iter_close_container(i, &sub))
d0f58d27c2536eba454d8f77de8617bc6a2c99cdFelix Gabriel Manceint bus_execute_append_oom_score_adjust(DBusMessageIter *i, const char *property, void *data) {
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu if (read_one_line_file("/proc/self/oom_score_adj", &t) >= 0) {
7852de3551fc797566ee71165bafe05b6d81728cnotanartist } else if (read_one_line_file("/proc/self/oom_adj", &t) >= 0) {
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski n = (n * OOM_SCORE_ADJ_MAX) / -OOM_DISABLE;
424860079d47bf490fa98d5d7498096a0447c569mcodescu if (!dbus_message_iter_append_basic(i, DBUS_TYPE_INT32, &n))
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Manceint bus_execute_append_nice(DBusMessageIter *i, const char *property, void *data) {
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroeder if (!dbus_message_iter_append_basic(i, DBUS_TYPE_INT32, &n))
3d3889e0cefcdce9b3f43c53aaa201943ac2e895Jonathan von Schroederint bus_execute_append_ioprio(DBusMessageIter *i, const char *property, void *data) {
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu n = ioprio_get(IOPRIO_WHO_PROCESS, 0);
7852de3551fc797566ee71165bafe05b6d81728cnotanartist if (!dbus_message_iter_append_basic(i, DBUS_TYPE_INT32, &n))
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuint bus_execute_append_cpu_sched_policy(DBusMessageIter *i, const char *property, void *data) {
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu if (!dbus_message_iter_append_basic(i, DBUS_TYPE_INT32, &n))
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowskiint bus_execute_append_cpu_sched_priority(DBusMessageIter *i, const char *property, void *data) {
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder if (sched_getparam(0, &p) >= 0)
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder if (!dbus_message_iter_append_basic(i, DBUS_TYPE_INT32, &n))
7852de3551fc797566ee71165bafe05b6d81728cnotanartistint bus_execute_append_affinity(DBusMessageIter *i, const char *property, void *data) {
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu if (!dbus_message_iter_open_container(i, DBUS_TYPE_ARRAY, "y", &sub))
7852de3551fc797566ee71165bafe05b6d81728cnotanartist b = dbus_message_iter_append_fixed_array(&sub, DBUS_TYPE_BYTE, &c->cpuset, CPU_ALLOC_SIZE(c->cpuset_ncpus));
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder b = dbus_message_iter_append_fixed_array(&sub, DBUS_TYPE_BYTE, &c->cpuset, 0);
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance if (!dbus_message_iter_close_container(i, &sub))
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescuint bus_execute_append_timer_slack_nsec(DBusMessageIter *i, const char *property, void *data) {
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescu if (!dbus_message_iter_append_basic(i, DBUS_TYPE_UINT64, &u))
b90f0b7fd6ccfbdd7e5adb65b1f6c02c7758ff5cmcodescuint bus_execute_append_capability_bs(DBusMessageIter *i, const char *property, void *data) {
assert(i);
assert(c);
char *t = NULL;
dbus_bool_t b;
assert(i);
assert(c);
if (c->capabilities)
return -ENOMEM;
cap_free(t);
return -ENOMEM;
uint64_t u;
assert(i);
assert(c);
if (c->rlimit[r])
return -ENOMEM;
assert(i);
return -ENOMEM;
dbus_bool_t b;
if (!c->path)
return -ENOMEM;
return -ENOMEM;
b = !!c->ignore;
!dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &c->exec_status.start_timestamp.realtime) ||
!dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &c->exec_status.start_timestamp.monotonic) ||
!dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &c->exec_status.exit_timestamp.realtime) ||
!dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &c->exec_status.exit_timestamp.monotonic) ||
return -ENOMEM;
return -ENOMEM;
return -ENOMEM;
{ "EnvironmentFiles", bus_execute_append_env_files, "a(sb)", offsetof(ExecContext, environment_files), true },
{ "WorkingDirectory", bus_property_append_string, "s", offsetof(ExecContext, working_directory), true },
{ "CPUSchedulingResetOnFork", bus_property_append_bool, "b", offsetof(ExecContext, cpu_sched_reset_on_fork) },
{ "SyslogIdentifier", bus_property_append_string, "s", offsetof(ExecContext, syslog_identifier), true },
{ "CapabilityBoundingSet", bus_execute_append_capability_bs, "t", offsetof(ExecContext, capability_bounding_set_drop) },
{ "SupplementaryGroups", bus_property_append_strv, "as", offsetof(ExecContext, supplementary_groups), true },
{ "ReadWriteDirectories", bus_property_append_strv, "as", offsetof(ExecContext, read_write_dirs), true },
{ "ReadOnlyDirectories", bus_property_append_strv, "as", offsetof(ExecContext, read_only_dirs), true },
{ "InaccessibleDirectories", bus_property_append_strv, "as", offsetof(ExecContext, inaccessible_dirs), true },
{ "ControlGroupModify", bus_property_append_bool, "b", offsetof(ExecContext, control_group_modify) },
{ "ControlGroupModify", bus_property_append_bool, "b", offsetof(ExecContext, control_group_persistent) },
{ NULL, }