1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 This file is part of systemd.
7 Copyright 2010 Lennart Poettering
8 Copyright 2010 Maarten Lankhorst
13 typedef struct Swap Swap
;
15 typedef enum SwapExecCommand
{
18 _SWAP_EXEC_COMMAND_MAX
,
19 _SWAP_EXEC_COMMAND_INVALID
= -1
22 typedef enum SwapResult
{
24 SWAP_FAILURE_RESOURCES
,
26 SWAP_FAILURE_EXIT_CODE
,
28 SWAP_FAILURE_CORE_DUMP
,
29 SWAP_FAILURE_START_LIMIT_HIT
,
31 _SWAP_RESULT_INVALID
= -1
34 typedef struct SwapParameters
{
45 /* If the device has already shown up, this is the device
46 * node, which might be different from what, due to
50 SwapParameters parameters_proc_swaps
;
51 SwapParameters parameters_fragment
;
53 bool from_proc_swaps
:1;
56 /* Used while looking for swaps that vanished or got added
57 * from/to /proc/swaps */
59 bool just_activated
:1;
65 ExecCommand exec_command
[_SWAP_EXEC_COMMAND_MAX
];
66 ExecContext exec_context
;
67 KillContext kill_context
;
68 CGroupContext cgroup_context
;
70 ExecRuntime
*exec_runtime
;
71 DynamicCreds dynamic_creds
;
73 SwapState state
, deserialized_state
;
75 ExecCommand
* control_command
;
76 SwapExecCommand control_command_id
;
79 sd_event_source
*timer_event_source
;
81 /* In order to be able to distinguish dependencies on
82 different device nodes we might end up creating multiple
83 devices for the same swap. We chain them up here. */
85 LIST_FIELDS(struct Swap
, same_devnode
);
88 extern const UnitVTable swap_vtable
;
90 int swap_process_device_new(Manager
*m
, struct udev_device
*dev
);
91 int swap_process_device_remove(Manager
*m
, struct udev_device
*dev
);
93 const char* swap_exec_command_to_string(SwapExecCommand i
) _const_
;
94 SwapExecCommand
swap_exec_command_from_string(const char *s
) _pure_
;
96 const char* swap_result_to_string(SwapResult i
) _const_
;
97 SwapResult
swap_result_from_string(const char *s
) _pure_
;