1 | /* Header file for mounting/unmount Linux filesystems. |
2 | Copyright (C) 1996-2022 Free Software Foundation, Inc. |
3 | This file is part of the GNU C Library. |
4 | |
5 | The GNU C Library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Lesser General Public |
7 | License as published by the Free Software Foundation; either |
8 | version 2.1 of the License, or (at your option) any later version. |
9 | |
10 | The GNU C Library is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | Lesser General Public License for more details. |
14 | |
15 | You should have received a copy of the GNU Lesser General Public |
16 | License along with the GNU C Library; if not, see |
17 | <https://www.gnu.org/licenses/>. */ |
18 | |
19 | /* This is taken from /usr/include/linux/fs.h. */ |
20 | |
21 | #ifndef _SYS_MOUNT_H |
22 | #define _SYS_MOUNT_H 1 |
23 | |
24 | #include <features.h> |
25 | #include <sys/ioctl.h> |
26 | |
27 | #define BLOCK_SIZE 1024 |
28 | #define BLOCK_SIZE_BITS 10 |
29 | |
30 | |
31 | /* These are the fs-independent mount-flags: up to 16 flags are |
32 | supported */ |
33 | enum |
34 | { |
35 | MS_RDONLY = 1, /* Mount read-only. */ |
36 | #define MS_RDONLY MS_RDONLY |
37 | MS_NOSUID = 2, /* Ignore suid and sgid bits. */ |
38 | #define MS_NOSUID MS_NOSUID |
39 | MS_NODEV = 4, /* Disallow access to device special files. */ |
40 | #define MS_NODEV MS_NODEV |
41 | MS_NOEXEC = 8, /* Disallow program execution. */ |
42 | #define MS_NOEXEC MS_NOEXEC |
43 | MS_SYNCHRONOUS = 16, /* Writes are synced at once. */ |
44 | #define MS_SYNCHRONOUS MS_SYNCHRONOUS |
45 | MS_REMOUNT = 32, /* Alter flags of a mounted FS. */ |
46 | #define MS_REMOUNT MS_REMOUNT |
47 | MS_MANDLOCK = 64, /* Allow mandatory locks on an FS. */ |
48 | #define MS_MANDLOCK MS_MANDLOCK |
49 | MS_DIRSYNC = 128, /* Directory modifications are synchronous. */ |
50 | #define MS_DIRSYNC MS_DIRSYNC |
51 | MS_NOSYMFOLLOW = 256, /* Do not follow symlinks. */ |
52 | #define MS_NOSYMFOLLOW MS_NOSYMFOLLOW |
53 | MS_NOATIME = 1024, /* Do not update access times. */ |
54 | #define MS_NOATIME MS_NOATIME |
55 | MS_NODIRATIME = 2048, /* Do not update directory access times. */ |
56 | #define MS_NODIRATIME MS_NODIRATIME |
57 | MS_BIND = 4096, /* Bind directory at different place. */ |
58 | #define MS_BIND MS_BIND |
59 | MS_MOVE = 8192, |
60 | #define MS_MOVE MS_MOVE |
61 | MS_REC = 16384, |
62 | #define MS_REC MS_REC |
63 | MS_SILENT = 32768, |
64 | #define MS_SILENT MS_SILENT |
65 | MS_POSIXACL = 1 << 16, /* VFS does not apply the umask. */ |
66 | #define MS_POSIXACL MS_POSIXACL |
67 | MS_UNBINDABLE = 1 << 17, /* Change to unbindable. */ |
68 | #define MS_UNBINDABLE MS_UNBINDABLE |
69 | MS_PRIVATE = 1 << 18, /* Change to private. */ |
70 | #define MS_PRIVATE MS_PRIVATE |
71 | MS_SLAVE = 1 << 19, /* Change to slave. */ |
72 | #define MS_SLAVE MS_SLAVE |
73 | MS_SHARED = 1 << 20, /* Change to shared. */ |
74 | #define MS_SHARED MS_SHARED |
75 | MS_RELATIME = 1 << 21, /* Update atime relative to mtime/ctime. */ |
76 | #define MS_RELATIME MS_RELATIME |
77 | MS_KERNMOUNT = 1 << 22, /* This is a kern_mount call. */ |
78 | #define MS_KERNMOUNT MS_KERNMOUNT |
79 | MS_I_VERSION = 1 << 23, /* Update inode I_version field. */ |
80 | #define MS_I_VERSION MS_I_VERSION |
81 | MS_STRICTATIME = 1 << 24, /* Always perform atime updates. */ |
82 | #define MS_STRICTATIME MS_STRICTATIME |
83 | MS_LAZYTIME = 1 << 25, /* Update the on-disk [acm]times lazily. */ |
84 | #define MS_LAZYTIME MS_LAZYTIME |
85 | MS_ACTIVE = 1 << 30, |
86 | #define MS_ACTIVE MS_ACTIVE |
87 | MS_NOUSER = 1 << 31 |
88 | #define MS_NOUSER MS_NOUSER |
89 | }; |
90 | |
91 | /* Flags that can be altered by MS_REMOUNT */ |
92 | #define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION \ |
93 | |MS_LAZYTIME) |
94 | |
95 | |
96 | /* Magic mount flag number. Has to be or-ed to the flag values. */ |
97 | |
98 | #define MS_MGC_VAL 0xc0ed0000 /* Magic flag number to indicate "new" flags */ |
99 | #define MS_MGC_MSK 0xffff0000 /* Magic flag number mask */ |
100 | |
101 | |
102 | /* The read-only stuff doesn't really belong here, but any other place |
103 | is probably as bad and I don't want to create yet another include |
104 | file. */ |
105 | |
106 | #define BLKROSET _IO(0x12, 93) /* Set device read-only (0 = read-write). */ |
107 | #define BLKROGET _IO(0x12, 94) /* Get read-only status (0 = read_write). */ |
108 | #define BLKRRPART _IO(0x12, 95) /* Re-read partition table. */ |
109 | #define BLKGETSIZE _IO(0x12, 96) /* Return device size. */ |
110 | #define BLKFLSBUF _IO(0x12, 97) /* Flush buffer cache. */ |
111 | #define BLKRASET _IO(0x12, 98) /* Set read ahead for block device. */ |
112 | #define BLKRAGET _IO(0x12, 99) /* Get current read ahead setting. */ |
113 | #define BLKFRASET _IO(0x12,100) /* Set filesystem read-ahead. */ |
114 | #define BLKFRAGET _IO(0x12,101) /* Get filesystem read-ahead. */ |
115 | #define BLKSECTSET _IO(0x12,102) /* Set max sectors per request. */ |
116 | #define BLKSECTGET _IO(0x12,103) /* Get max sectors per request. */ |
117 | #define BLKSSZGET _IO(0x12,104) /* Get block device sector size. */ |
118 | #define BLKBSZGET _IOR(0x12,112,size_t) |
119 | #define BLKBSZSET _IOW(0x12,113,size_t) |
120 | #define BLKGETSIZE64 _IOR(0x12,114,size_t) /* return device size. */ |
121 | |
122 | |
123 | /* Possible value for FLAGS parameter of `umount2'. */ |
124 | enum |
125 | { |
126 | MNT_FORCE = 1, /* Force unmounting. */ |
127 | #define MNT_FORCE MNT_FORCE |
128 | MNT_DETACH = 2, /* Just detach from the tree. */ |
129 | #define MNT_DETACH MNT_DETACH |
130 | MNT_EXPIRE = 4, /* Mark for expiry. */ |
131 | #define MNT_EXPIRE MNT_EXPIRE |
132 | UMOUNT_NOFOLLOW = 8 /* Don't follow symlink on umount. */ |
133 | #define UMOUNT_NOFOLLOW UMOUNT_NOFOLLOW |
134 | }; |
135 | |
136 | |
137 | __BEGIN_DECLS |
138 | |
139 | /* Mount a filesystem. */ |
140 | extern int mount (const char *__special_file, const char *__dir, |
141 | const char *__fstype, unsigned long int __rwflag, |
142 | const void *__data) __THROW; |
143 | |
144 | /* Unmount a filesystem. */ |
145 | extern int umount (const char *__special_file) __THROW; |
146 | |
147 | /* Unmount a filesystem. Force unmounting if FLAGS is set to MNT_FORCE. */ |
148 | extern int umount2 (const char *__special_file, int __flags) __THROW; |
149 | |
150 | __END_DECLS |
151 | |
152 | #endif /* _SYS_MOUNT_H */ |
153 | |