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