]> git.ipfire.org Git - people/ms/systemd.git/blame - mount.h
swap: add .swap unit type
[people/ms/systemd.git] / mount.h
CommitLineData
5cb5a6ff
LP
1/*-*- Mode: C; c-basic-offset: 8 -*-*/
2
3#ifndef foomounthfoo
4#define foomounthfoo
5
a7334b09
LP
6/***
7 This file is part of systemd.
8
9 Copyright 2010 Lennart Poettering
10
11 systemd is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by
13 the Free Software Foundation; either version 2 of the License, or
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
19 General Public License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
23***/
24
5cb5a6ff
LP
25typedef struct Mount Mount;
26
87f0e418 27#include "unit.h"
5cb5a6ff
LP
28
29typedef enum MountState {
30 MOUNT_DEAD,
e537352b
LP
31 MOUNT_MOUNTING, /* /bin/mount is running, but the mount is not done yet. */
32 MOUNT_MOUNTING_DONE, /* /bin/mount is running, and the mount is done. */
5cb5a6ff 33 MOUNT_MOUNTED,
e537352b 34 MOUNT_REMOUNTING,
5cb5a6ff 35 MOUNT_UNMOUNTING,
e537352b
LP
36 MOUNT_MOUNTING_SIGTERM,
37 MOUNT_MOUNTING_SIGKILL,
38 MOUNT_REMOUNTING_SIGTERM,
39 MOUNT_REMOUNTING_SIGKILL,
40 MOUNT_UNMOUNTING_SIGTERM,
41 MOUNT_UNMOUNTING_SIGKILL,
5cb5a6ff 42 MOUNT_MAINTAINANCE,
e537352b
LP
43 _MOUNT_STATE_MAX,
44 _MOUNT_STATE_INVALID = -1
5cb5a6ff
LP
45} MountState;
46
e537352b
LP
47typedef enum MountExecCommand {
48 MOUNT_EXEC_MOUNT,
49 MOUNT_EXEC_UNMOUNT,
50 MOUNT_EXEC_REMOUNT,
51 _MOUNT_EXEC_COMMAND_MAX,
52 _MOUNT_EXEC_COMMAND_INVALID = -1
53} MountExecCommand;
54
55typedef struct MountParameters {
56 char *what;
57 char *options;
58 char *fstype;
59} MountParameters;
60
5cb5a6ff
LP
61struct Mount {
62 Meta meta;
63
e537352b 64 char *where;
b08d03ff 65
e537352b
LP
66 MountParameters parameters_etc_fstab;
67 MountParameters parameters_proc_self_mountinfo;
68 MountParameters parameters_fragment;
f50e0a01
LP
69
70 bool from_etc_fstab:1;
71 bool from_proc_self_mountinfo:1;
e537352b 72 bool from_fragment:1;
ef734fd6
LP
73
74 /* Used while looking for mount points that vanished or got
75 * added from/to /proc/self/mountinfo */
e537352b
LP
76 bool is_mounted:1;
77 bool just_mounted:1;
78 bool just_changed:1;
79
80 bool failure:1;
81
82 usec_t timeout_usec;
83
84 ExecCommand exec_command[_MOUNT_EXEC_COMMAND_MAX];
85 ExecContext exec_context;
86
a16e1123 87 MountState state, deserialized_state;
e537352b
LP
88
89 KillMode kill_mode;
90
91 ExecCommand* control_command;
a16e1123 92 MountExecCommand control_command_id;
e537352b
LP
93 pid_t control_pid;
94
95 Watch timer_watch;
5cb5a6ff
LP
96};
97
87f0e418 98extern const UnitVTable mount_vtable;
5cb5a6ff 99
ef734fd6
LP
100void mount_fd_event(Manager *m, int events);
101
e537352b 102int mount_path_is_mounted(Manager *m, const char* path);
07b0b134
ML
103int mount_add_node_links(Unit *m, const char *what);
104int mount_add_path_links(Unit *m, const char *where, bool requires);
e537352b 105
a16e1123
LP
106const char* mount_state_to_string(MountState i);
107MountState mount_state_from_string(const char *s);
108
109const char* mount_exec_command_to_string(MountExecCommand i);
110MountExecCommand mount_exec_command_from_string(const char *s);
111
5cb5a6ff 112#endif