]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/core/swap.h
core: make manager_serialize() a bit easier to read by adding predicate function
[thirdparty/systemd.git] / src / core / swap.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
c2f1db8f 2#pragma once
07b0b134
ML
3
4/***
96b2fb93 5 Copyright © 2010 Maarten Lankhorst
07b0b134
ML
6***/
7
4366e598 8#include "sd-device.h"
57b7a260 9#include "unit.h"
9670d583 10
07b0b134
ML
11typedef struct Swap Swap;
12
e04aad61
LP
13typedef enum SwapExecCommand {
14 SWAP_EXEC_ACTIVATE,
15 SWAP_EXEC_DEACTIVATE,
16 _SWAP_EXEC_COMMAND_MAX,
17 _SWAP_EXEC_COMMAND_INVALID = -1
18} SwapExecCommand;
19
e1770af8
LP
20typedef enum SwapResult {
21 SWAP_SUCCESS,
22 SWAP_FAILURE_RESOURCES,
23 SWAP_FAILURE_TIMEOUT,
24 SWAP_FAILURE_EXIT_CODE,
25 SWAP_FAILURE_SIGNAL,
26 SWAP_FAILURE_CORE_DUMP,
07299350 27 SWAP_FAILURE_START_LIMIT_HIT,
e1770af8
LP
28 _SWAP_RESULT_MAX,
29 _SWAP_RESULT_INVALID = -1
30} SwapResult;
31
5bcb0f2b
LP
32typedef struct SwapParameters {
33 char *what;
47cb901e 34 char *options;
5bcb0f2b 35 int priority;
5bcb0f2b
LP
36} SwapParameters;
37
07b0b134 38struct Swap {
ac155bb8 39 Unit meta;
07b0b134 40
e04aad61
LP
41 char *what;
42
9670d583
LP
43 /* If the device has already shown up, this is the device
44 * node, which might be different from what, due to
45 * symlinks */
46 char *devnode;
47
4e85aff4
LP
48 SwapParameters parameters_proc_swaps;
49 SwapParameters parameters_fragment;
07b0b134 50
4e85aff4
LP
51 bool from_proc_swaps:1;
52 bool from_fragment:1;
e04aad61 53
e04aad61
LP
54 /* Used while looking for swaps that vanished or got added
55 * from/to /proc/swaps */
56 bool is_active:1;
57 bool just_activated:1;
58
e1770af8
LP
59 SwapResult result;
60
e04aad61
LP
61 usec_t timeout_usec;
62
63 ExecCommand exec_command[_SWAP_EXEC_COMMAND_MAX];
64 ExecContext exec_context;
4819ff03 65 KillContext kill_context;
4ad49000 66 CGroupContext cgroup_context;
e04aad61 67
613b411c 68 ExecRuntime *exec_runtime;
29206d46 69 DynamicCreds dynamic_creds;
613b411c 70
e04aad61
LP
71 SwapState state, deserialized_state;
72
73 ExecCommand* control_command;
74 SwapExecCommand control_command_id;
75 pid_t control_pid;
76
718db961 77 sd_event_source *timer_event_source;
e04aad61 78
35b8ca3a 79 /* In order to be able to distinguish dependencies on
e04aad61
LP
80 different device nodes we might end up creating multiple
81 devices for the same swap. We chain them up here. */
82
9670d583 83 LIST_FIELDS(struct Swap, same_devnode);
07b0b134
ML
84};
85
86extern const UnitVTable swap_vtable;
87
4366e598
YW
88int swap_process_device_new(Manager *m, sd_device *dev);
89int swap_process_device_remove(Manager *m, sd_device *dev);
9670d583 90
44a6b1b6
ZJS
91const char* swap_exec_command_to_string(SwapExecCommand i) _const_;
92SwapExecCommand swap_exec_command_from_string(const char *s) _pure_;
07b0b134 93
44a6b1b6
ZJS
94const char* swap_result_to_string(SwapResult i) _const_;
95SwapResult swap_result_from_string(const char *s) _pure_;
57b7a260
FS
96
97DEFINE_CAST(SWAP, Swap);