| 1 | /* Header file for mounting/unmount Linux filesystems. | 
| 2 |    Copyright (C) 1996-2019 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 |    <http://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 |  |