Where Online Learning is simpler!
The C and C++ Include Header Files
/usr/include/linux/auto_fs.h
$ cat -n /usr/include/linux/auto_fs.h 1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2 /* 3 * Copyright 1997 Transmeta Corporation - All Rights Reserved 4 * Copyright 1999-2000 Jeremy Fitzhardinge
5 * Copyright 2005-2006,2013,2017-2018 Ian Kent
6 * 7 * This file is part of the Linux kernel and is made available under 8 * the terms of the GNU General Public License, version 2, or at your 9 * option, any later version, incorporated herein by reference. 10 * 11 * ----------------------------------------------------------------------- */ 12 13 #ifndef _LINUX_AUTO_FS_H 14 #define _LINUX_AUTO_FS_H 15 16 #include
17 #include
18 #include
19 20 #define AUTOFS_PROTO_VERSION 5 21 #define AUTOFS_MIN_PROTO_VERSION 3 22 #define AUTOFS_MAX_PROTO_VERSION 5 23 24 #define AUTOFS_PROTO_SUBVERSION 5 25 26 /* 27 * The wait_queue_token (autofs_wqt_t) is part of a structure which is passed 28 * back to the kernel via ioctl from userspace. On architectures where 32- and 29 * 64-bit userspace binaries can be executed it's important that the size of 30 * autofs_wqt_t stays constant between 32- and 64-bit Linux kernels so that we 31 * do not break the binary ABI interface by changing the structure size. 32 */ 33 #if defined(__ia64__) || defined(__alpha__) /* pure 64bit architectures */ 34 typedef unsigned long autofs_wqt_t; 35 #else 36 typedef unsigned int autofs_wqt_t; 37 #endif 38 39 /* Packet types */ 40 #define autofs_ptype_missing 0 /* Missing entry (mount request) */ 41 #define autofs_ptype_expire 1 /* Expire entry (umount request) */ 42 43 struct autofs_packet_hdr { 44 int proto_version; /* Protocol version */ 45 int type; /* Type of packet */ 46 }; 47 48 struct autofs_packet_missing { 49 struct autofs_packet_hdr hdr; 50 autofs_wqt_t wait_queue_token; 51 int len; 52 char name[NAME_MAX+1]; 53 }; 54 55 /* v3 expire (via ioctl) */ 56 struct autofs_packet_expire { 57 struct autofs_packet_hdr hdr; 58 int len; 59 char name[NAME_MAX+1]; 60 }; 61 62 #define AUTOFS_IOCTL 0x93 63 64 enum { 65 AUTOFS_IOC_READY_CMD = 0x60, 66 AUTOFS_IOC_FAIL_CMD, 67 AUTOFS_IOC_CATATONIC_CMD, 68 AUTOFS_IOC_PROTOVER_CMD, 69 AUTOFS_IOC_SETTIMEOUT_CMD, 70 AUTOFS_IOC_EXPIRE_CMD, 71 }; 72 73 #define AUTOFS_IOC_READY _IO(AUTOFS_IOCTL, AUTOFS_IOC_READY_CMD) 74 #define AUTOFS_IOC_FAIL _IO(AUTOFS_IOCTL, AUTOFS_IOC_FAIL_CMD) 75 #define AUTOFS_IOC_CATATONIC _IO(AUTOFS_IOCTL, AUTOFS_IOC_CATATONIC_CMD) 76 #define AUTOFS_IOC_PROTOVER _IOR(AUTOFS_IOCTL, \ 77 AUTOFS_IOC_PROTOVER_CMD, int) 78 #define AUTOFS_IOC_SETTIMEOUT32 _IOWR(AUTOFS_IOCTL, \ 79 AUTOFS_IOC_SETTIMEOUT_CMD, \ 80 compat_ulong_t) 81 #define AUTOFS_IOC_SETTIMEOUT _IOWR(AUTOFS_IOCTL, \ 82 AUTOFS_IOC_SETTIMEOUT_CMD, \ 83 unsigned long) 84 #define AUTOFS_IOC_EXPIRE _IOR(AUTOFS_IOCTL, \ 85 AUTOFS_IOC_EXPIRE_CMD, \ 86 struct autofs_packet_expire) 87 88 /* autofs version 4 and later definitions */ 89 90 /* Mask for expire behaviour */ 91 #define AUTOFS_EXP_NORMAL 0x00 92 #define AUTOFS_EXP_IMMEDIATE 0x01 93 #define AUTOFS_EXP_LEAVES 0x02 94 #define AUTOFS_EXP_FORCED 0x04 95 96 #define AUTOFS_TYPE_ANY 0U 97 #define AUTOFS_TYPE_INDIRECT 1U 98 #define AUTOFS_TYPE_DIRECT 2U 99 #define AUTOFS_TYPE_OFFSET 4U 100 101 static __inline__ void set_autofs_type_indirect(unsigned int *type) 102 { 103 *type = AUTOFS_TYPE_INDIRECT; 104 } 105 106 static __inline__ unsigned int autofs_type_indirect(unsigned int type) 107 { 108 return (type == AUTOFS_TYPE_INDIRECT); 109 } 110 111 static __inline__ void set_autofs_type_direct(unsigned int *type) 112 { 113 *type = AUTOFS_TYPE_DIRECT; 114 } 115 116 static __inline__ unsigned int autofs_type_direct(unsigned int type) 117 { 118 return (type == AUTOFS_TYPE_DIRECT); 119 } 120 121 static __inline__ void set_autofs_type_offset(unsigned int *type) 122 { 123 *type = AUTOFS_TYPE_OFFSET; 124 } 125 126 static __inline__ unsigned int autofs_type_offset(unsigned int type) 127 { 128 return (type == AUTOFS_TYPE_OFFSET); 129 } 130 131 static __inline__ unsigned int autofs_type_trigger(unsigned int type) 132 { 133 return (type == AUTOFS_TYPE_DIRECT || type == AUTOFS_TYPE_OFFSET); 134 } 135 136 /* 137 * This isn't really a type as we use it to say "no type set" to 138 * indicate we want to search for "any" mount in the 139 * autofs_dev_ioctl_ismountpoint() device ioctl function. 140 */ 141 static __inline__ void set_autofs_type_any(unsigned int *type) 142 { 143 *type = AUTOFS_TYPE_ANY; 144 } 145 146 static __inline__ unsigned int autofs_type_any(unsigned int type) 147 { 148 return (type == AUTOFS_TYPE_ANY); 149 } 150 151 /* Daemon notification packet types */ 152 enum autofs_notify { 153 NFY_NONE, 154 NFY_MOUNT, 155 NFY_EXPIRE 156 }; 157 158 /* Kernel protocol version 4 packet types */ 159 160 /* Expire entry (umount request) */ 161 #define autofs_ptype_expire_multi 2 162 163 /* Kernel protocol version 5 packet types */ 164 165 /* Indirect mount missing and expire requests. */ 166 #define autofs_ptype_missing_indirect 3 167 #define autofs_ptype_expire_indirect 4 168 169 /* Direct mount missing and expire requests */ 170 #define autofs_ptype_missing_direct 5 171 #define autofs_ptype_expire_direct 6 172 173 /* v4 multi expire (via pipe) */ 174 struct autofs_packet_expire_multi { 175 struct autofs_packet_hdr hdr; 176 autofs_wqt_t wait_queue_token; 177 int len; 178 char name[NAME_MAX+1]; 179 }; 180 181 union autofs_packet_union { 182 struct autofs_packet_hdr hdr; 183 struct autofs_packet_missing missing; 184 struct autofs_packet_expire expire; 185 struct autofs_packet_expire_multi expire_multi; 186 }; 187 188 /* autofs v5 common packet struct */ 189 struct autofs_v5_packet { 190 struct autofs_packet_hdr hdr; 191 autofs_wqt_t wait_queue_token; 192 __u32 dev; 193 __u64 ino; 194 __u32 uid; 195 __u32 gid; 196 __u32 pid; 197 __u32 tgid; 198 __u32 len; 199 char name[NAME_MAX+1]; 200 }; 201 202 typedef struct autofs_v5_packet autofs_packet_missing_indirect_t; 203 typedef struct autofs_v5_packet autofs_packet_expire_indirect_t; 204 typedef struct autofs_v5_packet autofs_packet_missing_direct_t; 205 typedef struct autofs_v5_packet autofs_packet_expire_direct_t; 206 207 union autofs_v5_packet_union { 208 struct autofs_packet_hdr hdr; 209 struct autofs_v5_packet v5_packet; 210 autofs_packet_missing_indirect_t missing_indirect; 211 autofs_packet_expire_indirect_t expire_indirect; 212 autofs_packet_missing_direct_t missing_direct; 213 autofs_packet_expire_direct_t expire_direct; 214 }; 215 216 enum { 217 AUTOFS_IOC_EXPIRE_MULTI_CMD = 0x66, /* AUTOFS_IOC_EXPIRE_CMD + 1 */ 218 AUTOFS_IOC_PROTOSUBVER_CMD, 219 AUTOFS_IOC_ASKUMOUNT_CMD = 0x70, /* AUTOFS_DEV_IOCTL_VERSION_CMD - 1 */ 220 }; 221 222 #define AUTOFS_IOC_EXPIRE_MULTI _IOW(AUTOFS_IOCTL, \ 223 AUTOFS_IOC_EXPIRE_MULTI_CMD, int) 224 #define AUTOFS_IOC_PROTOSUBVER _IOR(AUTOFS_IOCTL, \ 225 AUTOFS_IOC_PROTOSUBVER_CMD, int) 226 #define AUTOFS_IOC_ASKUMOUNT _IOR(AUTOFS_IOCTL, \ 227 AUTOFS_IOC_ASKUMOUNT_CMD, int) 228 229 #endif /* _LINUX_AUTO_FS_H */
Contact us
|
About us
|
Term of use
|
Copyright © 2000-2025 MyWebUniversity.com ™