]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/core/dbus-unit.h
core: add bus API and systemctl commands for altering cgroup parameters during runtime
[thirdparty/systemd.git] / src / core / dbus-unit.h
CommitLineData
03467c88 1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
4139c1b2 2
c2f1db8f 3#pragma once
4139c1b2
LP
4
5/***
6 This file is part of systemd.
7
8 Copyright 2010 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
4139c1b2
LP
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 18 Lesser General Public License for more details.
4139c1b2 19
5430f7f2 20 You should have received a copy of the GNU Lesser General Public License
4139c1b2
LP
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
24#include <dbus/dbus.h>
25
26#include "manager.h"
d200735e 27#include "dbus-common.h"
4139c1b2
LP
28
29#define BUS_UNIT_INTERFACE \
4288f619
LP
30 " <interface name=\"org.freedesktop.systemd1.Unit\">\n" \
31 " <method name=\"Start\">\n" \
32 " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
33 " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
34 " </method>\n" \
35 " <method name=\"Stop\">\n" \
36 " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
37 " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
38 " </method>\n" \
6f28c033
LP
39 " <method name=\"Reload\">\n" \
40 " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
41 " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
42 " </method>\n" \
4288f619
LP
43 " <method name=\"Restart\">\n" \
44 " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
45 " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
46 " </method>\n" \
9a1ac7b9
LP
47 " <method name=\"TryRestart\">\n" \
48 " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
49 " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
50 " </method>\n" \
6f28c033
LP
51 " <method name=\"ReloadOrRestart\">\n" \
52 " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
53 " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
54 " </method>\n" \
55 " <method name=\"ReloadOrTryRestart\">\n" \
4288f619
LP
56 " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
57 " <arg name=\"job\" type=\"o\" direction=\"out\"/>\n" \
58 " </method>\n" \
8a0867d6
LP
59 " <method name=\"Kill\">\n" \
60 " <arg name=\"who\" type=\"s\" direction=\"in\"/>\n" \
8a0867d6
LP
61 " <arg name=\"signal\" type=\"i\" direction=\"in\"/>\n" \
62 " </method>\n" \
63 " <method name=\"ResetFailed\"/>\n" \
4288f619
LP
64 " <property name=\"Id\" type=\"s\" access=\"read\"/>\n" \
65 " <property name=\"Names\" type=\"as\" access=\"read\"/>\n" \
8fe914ec 66 " <property name=\"Following\" type=\"s\" access=\"read\"/>\n" \
4288f619
LP
67 " <property name=\"Requires\" type=\"as\" access=\"read\"/>\n" \
68 " <property name=\"RequiresOverridable\" type=\"as\" access=\"read\"/>\n" \
69 " <property name=\"Requisite\" type=\"as\" access=\"read\"/>\n" \
70 " <property name=\"RequisiteOverridable\" type=\"as\" access=\"read\"/>\n" \
71 " <property name=\"Wants\" type=\"as\" access=\"read\"/>\n" \
7f2cddae 72 " <property name=\"BindsTo\" type=\"as\" access=\"read\"/>\n" \
4288f619
LP
73 " <property name=\"RequiredBy\" type=\"as\" access=\"read\"/>\n" \
74 " <property name=\"RequiredByOverridable\" type=\"as\" access=\"read\"/>\n" \
75 " <property name=\"WantedBy\" type=\"as\" access=\"read\"/>\n" \
b81884e7 76 " <property name=\"BoundBy\" type=\"as\" access=\"read\"/>\n" \
4288f619 77 " <property name=\"Conflicts\" type=\"as\" access=\"read\"/>\n" \
69dd2852 78 " <property name=\"ConflictedBy\" type=\"as\" access=\"read\"/>\n" \
4288f619
LP
79 " <property name=\"Before\" type=\"as\" access=\"read\"/>\n" \
80 " <property name=\"After\" type=\"as\" access=\"read\"/>\n" \
5de9682c 81 " <property name=\"OnFailure\" type=\"as\" access=\"read\"/>\n" \
4dcc1cb4
LP
82 " <property name=\"Triggers\" type=\"as\" access=\"read\"/>\n" \
83 " <property name=\"TriggeredBy\" type=\"as\" access=\"read\"/>\n" \
7f2cddae
LP
84 " <property name=\"PropagatesReloadTo\" type=\"as\" access=\"read\"/>\n" \
85 " <property name=\"ReloadPropagatedFrom\" type=\"as\" access=\"read\"/>\n" \
7c8fa05c 86 " <property name=\"RequiresMountsFor\" type=\"as\" access=\"read\"/>\n" \
4288f619 87 " <property name=\"Description\" type=\"s\" access=\"read\"/>\n" \
1b64d026 88 " <property name=\"SourcePath\" type=\"s\" access=\"read\"/>\n" \
49dbfa7b 89 " <property name=\"Documentation\" type=\"as\" access=\"read\"/>\n" \
4288f619
LP
90 " <property name=\"LoadState\" type=\"s\" access=\"read\"/>\n" \
91 " <property name=\"ActiveState\" type=\"s\" access=\"read\"/>\n" \
92 " <property name=\"SubState\" type=\"s\" access=\"read\"/>\n" \
93 " <property name=\"FragmentPath\" type=\"s\" access=\"read\"/>\n" \
a4375746 94 " <property name=\"UnitFileState\" type=\"s\" access=\"read\"/>\n" \
4288f619 95 " <property name=\"InactiveExitTimestamp\" type=\"t\" access=\"read\"/>\n" \
b21a0ef8 96 " <property name=\"InactiveExitTimestampMonotonic\" type=\"t\" access=\"read\"/>\n" \
4288f619 97 " <property name=\"ActiveEnterTimestamp\" type=\"t\" access=\"read\"/>\n" \
b21a0ef8 98 " <property name=\"ActiveEnterTimestampMonotonic\" type=\"t\" access=\"read\"/>\n" \
4288f619 99 " <property name=\"ActiveExitTimestamp\" type=\"t\" access=\"read\"/>\n" \
b21a0ef8 100 " <property name=\"ActiveExitTimestampMonotonic\" type=\"t\" access=\"read\"/>\n" \
4288f619 101 " <property name=\"InactiveEnterTimestamp\" type=\"t\" access=\"read\"/>\n" \
b21a0ef8 102 " <property name=\"InactiveEnterTimestampMonotonic\" type=\"t\" access=\"read\"/>\n" \
4288f619 103 " <property name=\"CanStart\" type=\"b\" access=\"read\"/>\n" \
b5e9dba8 104 " <property name=\"CanStop\" type=\"b\" access=\"read\"/>\n" \
c8f4d764 105 " <property name=\"CanReload\" type=\"b\" access=\"read\"/>\n" \
2528a7a6 106 " <property name=\"CanIsolate\" type=\"b\" access=\"read\"/>\n" \
4288f619 107 " <property name=\"Job\" type=\"(uo)\" access=\"read\"/>\n" \
b4a16b7b 108 " <property name=\"StopWhenUnneeded\" type=\"b\" access=\"read\"/>\n" \
b5e9dba8
LP
109 " <property name=\"RefuseManualStart\" type=\"b\" access=\"read\"/>\n" \
110 " <property name=\"RefuseManualStop\" type=\"b\" access=\"read\"/>\n" \
c8f4d764 111 " <property name=\"AllowIsolate\" type=\"b\" access=\"read\"/>\n" \
a68c7a7a 112 " <property name=\"DefaultDependencies\" type=\"b\" access=\"read\"/>\n" \
c8f4d764
LP
113 " <property name=\"OnFailureIsolate\" type=\"b\" access=\"read\"/>\n" \
114 " <property name=\"IgnoreOnIsolate\" type=\"b\" access=\"read\"/>\n" \
7a6000a6 115 " <property name=\"IgnoreOnSnapshot\" type=\"b\" access=\"read\"/>\n" \
45fb0699 116 " <property name=\"NeedDaemonReload\" type=\"b\" access=\"read\"/>\n" \
faf919f1 117 " <property name=\"JobTimeoutUSec\" type=\"t\" access=\"read\"/>\n" \
90bbc946 118 " <property name=\"ConditionTimestamp\" type=\"t\" access=\"read\"/>\n" \
b21a0ef8 119 " <property name=\"ConditionTimestampMonotonic\" type=\"t\" access=\"read\"/>\n" \
90bbc946 120 " <property name=\"ConditionResult\" type=\"b\" access=\"read\"/>\n" \
9f39404c 121 " <property name=\"LoadError\" type=\"(ss)\" access=\"read\"/>\n" \
4288f619 122 " </interface>\n"
4139c1b2 123
246aa6dd
LP
124#define BUS_UNIT_CGROUP_INTERFACE \
125 " <property name=\"DefaultControlGroup\" type=\"s\" access=\"read\"/>\n" \
126 " <property name=\"ControlGroups\" type=\"as\" access=\"read\"/>\n" \
127 " <property name=\"ControlGroupAttributes\" type=\"a(sss)\" access=\"read\"/>\n" \
128 " <method name=\"SetControlGroups\">\n" \
129 " <arg name=\"groups\" type=\"as\" direction=\"in\"/>\n" \
130 " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
131 " </method>\n" \
132 " <method name=\"UnsetControlGroups\">\n" \
133 " <arg name=\"groups\" type=\"as\" direction=\"in\"/>\n" \
134 " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
135 " </method>\n" \
136 " <method name=\"SetControlGroupAttributes\">\n" \
137 " <arg name=\"attributes\" type=\"a(ss)\" direction=\"in\"/>\n" \
138 " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
139 " </method>\n" \
140 " <method name=\"UnsetControlGroupAttributes\">\n" \
141 " <arg name=\"attributes\" type=\"as\" direction=\"in\"/>\n" \
142 " <arg name=\"mode\" type=\"s\" direction=\"in\"/>\n" \
143 " </method>\n"
144
05feefe0
LP
145#define BUS_UNIT_INTERFACES_LIST \
146 BUS_GENERIC_INTERFACES_LIST \
147 "org.freedesktop.systemd1.Unit\0"
148
d200735e 149extern const BusProperty bus_unit_properties[];
246aa6dd 150extern const BusProperty bus_unit_cgroup_properties[];
4139c1b2 151
4139c1b2
LP
152void bus_unit_send_change_signal(Unit *u);
153void bus_unit_send_removed_signal(Unit *u);
154
cad45ba1
LP
155DBusHandlerResult bus_unit_queue_job(
156 DBusConnection *connection,
157 DBusMessage *message,
158 Unit *u,
159 JobType type,
160 JobMode mode,
161 bool reload_if_possible);
162
246aa6dd
LP
163int bus_unit_cgroup_set(Unit *u, DBusMessageIter *iter);
164int bus_unit_cgroup_unset(Unit *u, DBusMessageIter *iter);
165int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter);
166int bus_unit_cgroup_attribute_unset(Unit *u, DBusMessageIter *iter);
167
4139c1b2
LP
168extern const DBusObjectPathVTable bus_unit_vtable;
169
4288f619 170extern const char bus_unit_interface[];