]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/core/swap.h
util-lib: split our string related calls from util.[ch] into its own file string...
[thirdparty/systemd.git] / src / core / swap.h
CommitLineData
03467c88 1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
07b0b134 2
c2f1db8f 3#pragma once
07b0b134
ML
4
5/***
6 This file is part of systemd.
7
8 Copyright 2010 Lennart Poettering
9 Copyright 2010 Maarten Lankhorst
10
11 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
12 under the terms of the GNU Lesser General Public License as published by
13 the Free Software Foundation; either version 2.1 of the License, or
07b0b134
ML
14 (at your option) any later version.
15
16 systemd is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 19 Lesser General Public License for more details.
07b0b134 20
5430f7f2 21 You should have received a copy of the GNU Lesser General Public License
07b0b134
ML
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
23***/
24
07630cea 25#include "libudev.h"
9670d583 26
07b0b134
ML
27typedef struct Swap Swap;
28
e04aad61
LP
29typedef enum SwapExecCommand {
30 SWAP_EXEC_ACTIVATE,
31 SWAP_EXEC_DEACTIVATE,
32 _SWAP_EXEC_COMMAND_MAX,
33 _SWAP_EXEC_COMMAND_INVALID = -1
34} SwapExecCommand;
35
e1770af8
LP
36typedef enum SwapResult {
37 SWAP_SUCCESS,
38 SWAP_FAILURE_RESOURCES,
39 SWAP_FAILURE_TIMEOUT,
40 SWAP_FAILURE_EXIT_CODE,
41 SWAP_FAILURE_SIGNAL,
42 SWAP_FAILURE_CORE_DUMP,
43 _SWAP_RESULT_MAX,
44 _SWAP_RESULT_INVALID = -1
45} SwapResult;
46
5bcb0f2b
LP
47typedef struct SwapParameters {
48 char *what;
47cb901e 49 char *options;
5bcb0f2b 50 int priority;
5bcb0f2b
LP
51} SwapParameters;
52
07b0b134 53struct Swap {
ac155bb8 54 Unit meta;
07b0b134 55
e04aad61
LP
56 char *what;
57
9670d583
LP
58 /* If the device has already shown up, this is the device
59 * node, which might be different from what, due to
60 * symlinks */
61 char *devnode;
62
4e85aff4
LP
63 SwapParameters parameters_proc_swaps;
64 SwapParameters parameters_fragment;
07b0b134 65
4e85aff4
LP
66 bool from_proc_swaps:1;
67 bool from_fragment:1;
e04aad61 68
e04aad61
LP
69 /* Used while looking for swaps that vanished or got added
70 * from/to /proc/swaps */
71 bool is_active:1;
72 bool just_activated:1;
73
5ad096b3
LP
74 bool reset_cpu_usage:1;
75
e1770af8
LP
76 SwapResult result;
77
e04aad61
LP
78 usec_t timeout_usec;
79
80 ExecCommand exec_command[_SWAP_EXEC_COMMAND_MAX];
81 ExecContext exec_context;
4819ff03 82 KillContext kill_context;
4ad49000 83 CGroupContext cgroup_context;
e04aad61 84
613b411c
LP
85 ExecRuntime *exec_runtime;
86
e04aad61
LP
87 SwapState state, deserialized_state;
88
89 ExecCommand* control_command;
90 SwapExecCommand control_command_id;
91 pid_t control_pid;
92
718db961 93 sd_event_source *timer_event_source;
e04aad61 94
35b8ca3a 95 /* In order to be able to distinguish dependencies on
e04aad61
LP
96 different device nodes we might end up creating multiple
97 devices for the same swap. We chain them up here. */
98
9670d583 99 LIST_FIELDS(struct Swap, same_devnode);
07b0b134
ML
100};
101
102extern const UnitVTable swap_vtable;
103
628c89cc
LP
104int swap_process_device_new(Manager *m, struct udev_device *dev);
105int swap_process_device_remove(Manager *m, struct udev_device *dev);
9670d583 106
44a6b1b6
ZJS
107const char* swap_exec_command_to_string(SwapExecCommand i) _const_;
108SwapExecCommand swap_exec_command_from_string(const char *s) _pure_;
07b0b134 109
44a6b1b6
ZJS
110const char* swap_result_to_string(SwapResult i) _const_;
111SwapResult swap_result_from_string(const char *s) _pure_;