| 1 | /* Header file for mounting/unmount Linux filesystems. | 
|---|
| 2 | Copyright (C) 1996-2020 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_NOATIME = 1024,		/* Do not update access times.  */ | 
|---|
| 52 | #define MS_NOATIME	MS_NOATIME | 
|---|
| 53 | MS_NODIRATIME = 2048,		/* Do not update directory access times.  */ | 
|---|
| 54 | #define MS_NODIRATIME	MS_NODIRATIME | 
|---|
| 55 | MS_BIND = 4096,		/* Bind directory at different place.  */ | 
|---|
| 56 | #define MS_BIND		MS_BIND | 
|---|
| 57 | MS_MOVE = 8192, | 
|---|
| 58 | #define MS_MOVE		MS_MOVE | 
|---|
| 59 | MS_REC = 16384, | 
|---|
| 60 | #define MS_REC		MS_REC | 
|---|
| 61 | MS_SILENT = 32768, | 
|---|
| 62 | #define MS_SILENT	MS_SILENT | 
|---|
| 63 | MS_POSIXACL = 1 << 16,	/* VFS does not apply the umask.  */ | 
|---|
| 64 | #define MS_POSIXACL	MS_POSIXACL | 
|---|
| 65 | MS_UNBINDABLE = 1 << 17,	/* Change to unbindable.  */ | 
|---|
| 66 | #define MS_UNBINDABLE	MS_UNBINDABLE | 
|---|
| 67 | MS_PRIVATE = 1 << 18,		/* Change to private.  */ | 
|---|
| 68 | #define MS_PRIVATE	MS_PRIVATE | 
|---|
| 69 | MS_SLAVE = 1 << 19,		/* Change to slave.  */ | 
|---|
| 70 | #define MS_SLAVE	MS_SLAVE | 
|---|
| 71 | MS_SHARED = 1 << 20,		/* Change to shared.  */ | 
|---|
| 72 | #define MS_SHARED	MS_SHARED | 
|---|
| 73 | MS_RELATIME = 1 << 21,	/* Update atime relative to mtime/ctime.  */ | 
|---|
| 74 | #define MS_RELATIME	MS_RELATIME | 
|---|
| 75 | MS_KERNMOUNT = 1 << 22,	/* This is a kern_mount call.  */ | 
|---|
| 76 | #define MS_KERNMOUNT	MS_KERNMOUNT | 
|---|
| 77 | MS_I_VERSION =  1 << 23,	/* Update inode I_version field.  */ | 
|---|
| 78 | #define MS_I_VERSION	MS_I_VERSION | 
|---|
| 79 | MS_STRICTATIME = 1 << 24,	/* Always perform atime updates.  */ | 
|---|
| 80 | #define MS_STRICTATIME	MS_STRICTATIME | 
|---|
| 81 | MS_LAZYTIME = 1 << 25,	/* Update the on-disk [acm]times lazily.  */ | 
|---|
| 82 | #define MS_LAZYTIME	MS_LAZYTIME | 
|---|
| 83 | MS_ACTIVE = 1 << 30, | 
|---|
| 84 | #define MS_ACTIVE	MS_ACTIVE | 
|---|
| 85 | MS_NOUSER = 1 << 31 | 
|---|
| 86 | #define MS_NOUSER	MS_NOUSER | 
|---|
| 87 | }; | 
|---|
| 88 |  | 
|---|
| 89 | /* Flags that can be altered by MS_REMOUNT  */ | 
|---|
| 90 | #define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION \ | 
|---|
| 91 | |MS_LAZYTIME) | 
|---|
| 92 |  | 
|---|
| 93 |  | 
|---|
| 94 | /* Magic mount flag number. Has to be or-ed to the flag values.  */ | 
|---|
| 95 |  | 
|---|
| 96 | #define MS_MGC_VAL 0xc0ed0000	/* Magic flag number to indicate "new" flags */ | 
|---|
| 97 | #define MS_MGC_MSK 0xffff0000	/* Magic flag number mask */ | 
|---|
| 98 |  | 
|---|
| 99 |  | 
|---|
| 100 | /* The read-only stuff doesn't really belong here, but any other place | 
|---|
| 101 | is probably as bad and I don't want to create yet another include | 
|---|
| 102 | file.  */ | 
|---|
| 103 |  | 
|---|
| 104 | #define BLKROSET   _IO(0x12, 93) /* Set device read-only (0 = read-write).  */ | 
|---|
| 105 | #define BLKROGET   _IO(0x12, 94) /* Get read-only status (0 = read_write).  */ | 
|---|
| 106 | #define BLKRRPART  _IO(0x12, 95) /* Re-read partition table.  */ | 
|---|
| 107 | #define BLKGETSIZE _IO(0x12, 96) /* Return device size.  */ | 
|---|
| 108 | #define BLKFLSBUF  _IO(0x12, 97) /* Flush buffer cache.  */ | 
|---|
| 109 | #define BLKRASET   _IO(0x12, 98) /* Set read ahead for block device.  */ | 
|---|
| 110 | #define BLKRAGET   _IO(0x12, 99) /* Get current read ahead setting.  */ | 
|---|
| 111 | #define BLKFRASET  _IO(0x12,100) /* Set filesystem read-ahead.  */ | 
|---|
| 112 | #define BLKFRAGET  _IO(0x12,101) /* Get filesystem read-ahead.  */ | 
|---|
| 113 | #define BLKSECTSET _IO(0x12,102) /* Set max sectors per request.  */ | 
|---|
| 114 | #define BLKSECTGET _IO(0x12,103) /* Get max sectors per request.  */ | 
|---|
| 115 | #define BLKSSZGET  _IO(0x12,104) /* Get block device sector size.  */ | 
|---|
| 116 | #define BLKBSZGET  _IOR(0x12,112,size_t) | 
|---|
| 117 | #define BLKBSZSET  _IOW(0x12,113,size_t) | 
|---|
| 118 | #define BLKGETSIZE64 _IOR(0x12,114,size_t) /* return device size.  */ | 
|---|
| 119 |  | 
|---|
| 120 |  | 
|---|
| 121 | /* Possible value for FLAGS parameter of `umount2'.  */ | 
|---|
| 122 | enum | 
|---|
| 123 | { | 
|---|
| 124 | MNT_FORCE = 1,		/* Force unmounting.  */ | 
|---|
| 125 | #define MNT_FORCE MNT_FORCE | 
|---|
| 126 | MNT_DETACH = 2,		/* Just detach from the tree.  */ | 
|---|
| 127 | #define MNT_DETACH MNT_DETACH | 
|---|
| 128 | MNT_EXPIRE = 4,		/* Mark for expiry.  */ | 
|---|
| 129 | #define MNT_EXPIRE MNT_EXPIRE | 
|---|
| 130 | UMOUNT_NOFOLLOW = 8		/* Don't follow symlink on umount.  */ | 
|---|
| 131 | #define UMOUNT_NOFOLLOW UMOUNT_NOFOLLOW | 
|---|
| 132 | }; | 
|---|
| 133 |  | 
|---|
| 134 |  | 
|---|
| 135 | __BEGIN_DECLS | 
|---|
| 136 |  | 
|---|
| 137 | /* Mount a filesystem.  */ | 
|---|
| 138 | extern int mount (const char *__special_file, const char *__dir, | 
|---|
| 139 | const char *__fstype, unsigned long int __rwflag, | 
|---|
| 140 | const void *__data) __THROW; | 
|---|
| 141 |  | 
|---|
| 142 | /* Unmount a filesystem.  */ | 
|---|
| 143 | extern int umount (const char *__special_file) __THROW; | 
|---|
| 144 |  | 
|---|
| 145 | /* Unmount a filesystem.  Force unmounting if FLAGS is set to MNT_FORCE.  */ | 
|---|
| 146 | extern int umount2 (const char *__special_file, int __flags) __THROW; | 
|---|
| 147 |  | 
|---|
| 148 | __END_DECLS | 
|---|
| 149 |  | 
|---|
| 150 | #endif /* _SYS_MOUNT_H */ | 
|---|
| 151 |  | 
|---|