1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 Copyright 2010 Lennart Poettering
4 Copyright 2010 Maarten Lankhorst
8 #include "dbus-cgroup.h"
9 #include "dbus-execute.h"
10 #include "dbus-swap.h"
11 #include "string-util.h"
15 static int swap_get_priority(Swap
*s
) {
16 if (s
->from_proc_swaps
)
17 return s
->parameters_proc_swaps
.priority
;
19 return s
->parameters_fragment
.priority
;
23 static const char *swap_get_options(Swap
*s
) {
25 return s
->parameters_fragment
.options
;
29 static BUS_DEFINE_PROPERTY_GET(property_get_priority
, "i", Swap
, swap_get_priority
);
30 static BUS_DEFINE_PROPERTY_GET(property_get_options
, "s", Swap
, swap_get_options
);
31 static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_result
, swap_result
, SwapResult
);
33 const sd_bus_vtable bus_swap_vtable
[] = {
34 SD_BUS_VTABLE_START(0),
35 SD_BUS_PROPERTY("What", "s", NULL
, offsetof(Swap
, what
), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE
),
36 SD_BUS_PROPERTY("Priority", "i", property_get_priority
, 0, SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE
),
37 SD_BUS_PROPERTY("Options", "s", property_get_options
, 0, SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE
),
38 SD_BUS_PROPERTY("TimeoutUSec", "t", bus_property_get_usec
, offsetof(Swap
, timeout_usec
), SD_BUS_VTABLE_PROPERTY_CONST
),
39 SD_BUS_PROPERTY("ControlPID", "u", bus_property_get_pid
, offsetof(Swap
, control_pid
), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE
),
40 SD_BUS_PROPERTY("Result", "s", property_get_result
, offsetof(Swap
, result
), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE
),
41 SD_BUS_PROPERTY("UID", "u", bus_property_get_uid
, offsetof(Unit
, ref_uid
), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE
),
42 SD_BUS_PROPERTY("GID", "u", bus_property_get_gid
, offsetof(Unit
, ref_gid
), SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE
),
43 BUS_EXEC_COMMAND_VTABLE("ExecActivate", offsetof(Swap
, exec_command
[SWAP_EXEC_ACTIVATE
]), SD_BUS_VTABLE_PROPERTY_EMITS_INVALIDATION
),
44 BUS_EXEC_COMMAND_VTABLE("ExecDeactivate", offsetof(Swap
, exec_command
[SWAP_EXEC_DEACTIVATE
]), SD_BUS_VTABLE_PROPERTY_EMITS_INVALIDATION
),
48 int bus_swap_set_property(
51 sd_bus_message
*message
,
53 sd_bus_error
*error
) {
61 return bus_cgroup_set_property(u
, &s
->cgroup_context
, name
, message
, flags
, error
);
64 int bus_swap_commit_properties(Unit
*u
) {
67 unit_update_cgroup_members_masks(u
);
68 unit_realize_cgroup(u
);