]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/mount.h
journalctl: always show monotonic timestamp even if it's from an old boot
[thirdparty/systemd.git] / src / mount.h
1 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3 #ifndef foomounthfoo
4 #define foomounthfoo
5
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
25 typedef struct Mount Mount;
26
27 #include "unit.h"
28
29 typedef enum MountState {
30 MOUNT_DEAD,
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. */
33 MOUNT_MOUNTED,
34 MOUNT_REMOUNTING,
35 MOUNT_UNMOUNTING,
36 MOUNT_MOUNTING_SIGTERM,
37 MOUNT_MOUNTING_SIGKILL,
38 MOUNT_REMOUNTING_SIGTERM,
39 MOUNT_REMOUNTING_SIGKILL,
40 MOUNT_UNMOUNTING_SIGTERM,
41 MOUNT_UNMOUNTING_SIGKILL,
42 MOUNT_FAILED,
43 _MOUNT_STATE_MAX,
44 _MOUNT_STATE_INVALID = -1
45 } MountState;
46
47 typedef 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
55 typedef struct MountParameters {
56 char *what;
57 char *options;
58 char *fstype;
59 int passno;
60 } MountParameters;
61
62 struct Mount {
63 Meta meta;
64
65 char *where;
66
67 MountParameters parameters_etc_fstab;
68 MountParameters parameters_proc_self_mountinfo;
69 MountParameters parameters_fragment;
70
71 bool from_etc_fstab:1;
72 bool from_proc_self_mountinfo:1;
73 bool from_fragment:1;
74
75 /* Used while looking for mount points that vanished or got
76 * added from/to /proc/self/mountinfo */
77 bool is_mounted:1;
78 bool just_mounted:1;
79 bool just_changed:1;
80
81 bool failure:1;
82 bool reload_failure:1;
83
84 mode_t directory_mode;
85
86 usec_t timeout_usec;
87
88 ExecCommand exec_command[_MOUNT_EXEC_COMMAND_MAX];
89 ExecContext exec_context;
90
91 MountState state, deserialized_state;
92
93 ExecCommand* control_command;
94 MountExecCommand control_command_id;
95 pid_t control_pid;
96
97 Watch timer_watch;
98 };
99
100 extern const UnitVTable mount_vtable;
101
102 void mount_fd_event(Manager *m, int events);
103
104 const char* mount_state_to_string(MountState i);
105 MountState mount_state_from_string(const char *s);
106
107 const char* mount_exec_command_to_string(MountExecCommand i);
108 MountExecCommand mount_exec_command_from_string(const char *s);
109
110 #endif