1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 Copyright 2010 Maarten Lankhorst
11 typedef struct Swap Swap
;
13 typedef enum SwapExecCommand
{
16 _SWAP_EXEC_COMMAND_MAX
,
17 _SWAP_EXEC_COMMAND_INVALID
= -1
20 typedef enum SwapResult
{
22 SWAP_FAILURE_RESOURCES
,
24 SWAP_FAILURE_EXIT_CODE
,
26 SWAP_FAILURE_CORE_DUMP
,
27 SWAP_FAILURE_START_LIMIT_HIT
,
29 _SWAP_RESULT_INVALID
= -1
32 typedef struct SwapParameters
{
43 /* If the device has already shown up, this is the device
44 * node, which might be different from what, due to
48 SwapParameters parameters_proc_swaps
;
49 SwapParameters parameters_fragment
;
51 bool from_proc_swaps
:1;
54 /* Used while looking for swaps that vanished or got added
55 * from/to /proc/swaps */
57 bool just_activated
:1;
63 ExecCommand exec_command
[_SWAP_EXEC_COMMAND_MAX
];
64 ExecContext exec_context
;
65 KillContext kill_context
;
66 CGroupContext cgroup_context
;
68 ExecRuntime
*exec_runtime
;
69 DynamicCreds dynamic_creds
;
71 SwapState state
, deserialized_state
;
73 ExecCommand
* control_command
;
74 SwapExecCommand control_command_id
;
77 sd_event_source
*timer_event_source
;
79 /* In order to be able to distinguish dependencies on
80 different device nodes we might end up creating multiple
81 devices for the same swap. We chain them up here. */
83 LIST_FIELDS(struct Swap
, same_devnode
);
86 extern const UnitVTable swap_vtable
;
88 int swap_process_device_new(Manager
*m
, struct udev_device
*dev
);
89 int swap_process_device_remove(Manager
*m
, struct udev_device
*dev
);
91 const char* swap_exec_command_to_string(SwapExecCommand i
) _const_
;
92 SwapExecCommand
swap_exec_command_from_string(const char *s
) _pure_
;
94 const char* swap_result_to_string(SwapResult i
) _const_
;
95 SwapResult
swap_result_from_string(const char *s
) _pure_
;
97 DEFINE_CAST(SWAP
, Swap
);