summaryrefslogtreecommitdiff
path: root/src/swap.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-10-12 04:07:43 +0200
committerLennart Poettering <lennart@poettering.net>2010-10-12 04:08:04 +0200
commite04aad61bb5eff117e51631727a3ef2807c75d6b (patch)
treeba81670a61b706bd9194eb289f9dbd3ba4107dfb /src/swap.h
parent60b912f6b1c6bce67ec4a979594981f6a3b13987 (diff)
swap: major rework, use /sbin/swapon for setting up swaps, fix merging of aliased swap disks
Diffstat (limited to 'src/swap.h')
-rw-r--r--src/swap.h51
1 files changed, 46 insertions, 5 deletions
diff --git a/src/swap.h b/src/swap.h
index 9c249ca43c..8a60416900 100644
--- a/src/swap.h
+++ b/src/swap.h
@@ -29,12 +29,25 @@ typedef struct Swap Swap;
typedef enum SwapState {
SWAP_DEAD,
+ SWAP_ACTIVATING,
SWAP_ACTIVE,
+ SWAP_DEACTIVATING,
+ SWAP_ACTIVATING_SIGTERM,
+ SWAP_ACTIVATING_SIGKILL,
+ SWAP_DEACTIVATING_SIGTERM,
+ SWAP_DEACTIVATING_SIGKILL,
SWAP_FAILED,
_SWAP_STATE_MAX,
_SWAP_STATE_INVALID = -1
} SwapState;
+typedef enum SwapExecCommand {
+ SWAP_EXEC_ACTIVATE,
+ SWAP_EXEC_DEACTIVATE,
+ _SWAP_EXEC_COMMAND_MAX,
+ _SWAP_EXEC_COMMAND_INVALID = -1
+} SwapExecCommand;
+
typedef struct SwapParameters {
char *what;
int priority;
@@ -46,27 +59,55 @@ typedef struct SwapParameters {
struct Swap {
Meta meta;
+ char *what;
+
SwapParameters parameters_etc_fstab;
SwapParameters parameters_proc_swaps;
SwapParameters parameters_fragment;
- char *what;
-
- SwapState state, deserialized_state;
-
bool from_etc_fstab:1;
bool from_proc_swaps:1;
bool from_fragment:1;
+
+ bool failure:1;
+
+ /* Used while looking for swaps that vanished or got added
+ * from/to /proc/swaps */
+ bool is_active:1;
+ bool just_activated:1;
+
+ usec_t timeout_usec;
+
+ ExecCommand exec_command[_SWAP_EXEC_COMMAND_MAX];
+ ExecContext exec_context;
+
+ SwapState state, deserialized_state;
+
+ ExecCommand* control_command;
+ SwapExecCommand control_command_id;
+ pid_t control_pid;
+
+ Watch timer_watch;
+
+ /* In order to be able to distuingish dependencies on
+ different device nodes we might end up creating multiple
+ devices for the same swap. We chain them up here. */
+
+ LIST_FIELDS(struct Swap, same_proc_swaps);
};
extern const UnitVTable swap_vtable;
-int swap_add_one(Manager *m, const char *what, int prio, bool no_auto, bool no_fail, bool handle, bool from_proc_swap);
+int swap_add_one(Manager *m, const char *what, const char *what_proc_swaps, int prio, bool no_auto, bool no_fail, bool handle, bool set_flags);
int swap_add_one_mount_link(Swap *s, Mount *m);
+int swap_dispatch_reload(Manager *m);
+
const char* swap_state_to_string(SwapState i);
SwapState swap_state_from_string(const char *s);
+const char* swap_exec_command_to_string(SwapExecCommand i);
+SwapExecCommand swap_exec_command_from_string(const char *s);
#endif