Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /* -*- c -*-
  2  * linux/include/linux/auto_fs4.h
  3  *
  4  * Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
  5  *
  6  * This file is part of the Linux kernel and is made available under
  7  * the terms of the GNU General Public License, version 2, or at your
  8  * option, any later version, incorporated herein by reference.
  9  */
 10 
 11 #ifndef _LINUX_AUTO_FS4_H
 12 #define _LINUX_AUTO_FS4_H
 13 
 14 /* Include common v3 definitions */
 15 #include <linux/types.h>
 16 #include <linux/auto_fs.h>
 17 
 18 /* autofs v4 definitions */
 19 #undef AUTOFS_PROTO_VERSION
 20 #undef AUTOFS_MIN_PROTO_VERSION
 21 #undef AUTOFS_MAX_PROTO_VERSION
 22 
 23 #define AUTOFS_PROTO_VERSION            5
 24 #define AUTOFS_MIN_PROTO_VERSION        3
 25 #define AUTOFS_MAX_PROTO_VERSION        5
 26 
 27 #define AUTOFS_PROTO_SUBVERSION         1
 28 
 29 /* Mask for expire behaviour */
 30 #define AUTOFS_EXP_IMMEDIATE            1
 31 #define AUTOFS_EXP_LEAVES               2
 32 
 33 #define AUTOFS_TYPE_ANY                 0U
 34 #define AUTOFS_TYPE_INDIRECT            1U
 35 #define AUTOFS_TYPE_DIRECT              2U
 36 #define AUTOFS_TYPE_OFFSET              4U
 37 
 38 static inline void set_autofs_type_indirect(unsigned int *type)
 39 {
 40         *type = AUTOFS_TYPE_INDIRECT;
 41         return;
 42 }
 43 
 44 static inline unsigned int autofs_type_indirect(unsigned int type)
 45 {
 46         return (type == AUTOFS_TYPE_INDIRECT);
 47 }
 48 
 49 static inline void set_autofs_type_direct(unsigned int *type)
 50 {
 51         *type = AUTOFS_TYPE_DIRECT;
 52         return;
 53 }
 54 
 55 static inline unsigned int autofs_type_direct(unsigned int type)
 56 {
 57         return (type == AUTOFS_TYPE_DIRECT);
 58 }
 59 
 60 static inline void set_autofs_type_offset(unsigned int *type)
 61 {
 62         *type = AUTOFS_TYPE_OFFSET;
 63         return;
 64 }
 65 
 66 static inline unsigned int autofs_type_offset(unsigned int type)
 67 {
 68         return (type == AUTOFS_TYPE_OFFSET);
 69 }
 70 
 71 static inline unsigned int autofs_type_trigger(unsigned int type)
 72 {
 73         return (type == AUTOFS_TYPE_DIRECT || type == AUTOFS_TYPE_OFFSET);
 74 }
 75 
 76 /*
 77  * This isn't really a type as we use it to say "no type set" to
 78  * indicate we want to search for "any" mount in the
 79  * autofs_dev_ioctl_ismountpoint() device ioctl function.
 80  */
 81 static inline void set_autofs_type_any(unsigned int *type)
 82 {
 83         *type = AUTOFS_TYPE_ANY;
 84         return;
 85 }
 86 
 87 static inline unsigned int autofs_type_any(unsigned int type)
 88 {
 89         return (type == AUTOFS_TYPE_ANY);
 90 }
 91 
 92 /* Daemon notification packet types */
 93 enum autofs_notify {
 94         NFY_NONE,
 95         NFY_MOUNT,
 96         NFY_EXPIRE
 97 };
 98 
 99 /* Kernel protocol version 4 packet types */
100 
101 /* Expire entry (umount request) */
102 #define autofs_ptype_expire_multi       2
103 
104 /* Kernel protocol version 5 packet types */
105 
106 /* Indirect mount missing and expire requests. */
107 #define autofs_ptype_missing_indirect   3
108 #define autofs_ptype_expire_indirect    4
109 
110 /* Direct mount missing and expire requests */
111 #define autofs_ptype_missing_direct     5
112 #define autofs_ptype_expire_direct      6
113 
114 /* v4 multi expire (via pipe) */
115 struct autofs_packet_expire_multi {
116         struct autofs_packet_hdr hdr;
117         autofs_wqt_t wait_queue_token;
118         int len;
119         char name[NAME_MAX+1];
120 };
121 
122 union autofs_packet_union {
123         struct autofs_packet_hdr hdr;
124         struct autofs_packet_missing missing;
125         struct autofs_packet_expire expire;
126         struct autofs_packet_expire_multi expire_multi;
127 };
128 
129 /* autofs v5 common packet struct */
130 struct autofs_v5_packet {
131         struct autofs_packet_hdr hdr;
132         autofs_wqt_t wait_queue_token;
133         __u32 dev;
134         __u64 ino;
135         __u32 uid;
136         __u32 gid;
137         __u32 pid;
138         __u32 tgid;
139         __u32 len;
140         char name[NAME_MAX+1];
141 };
142 
143 typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
144 typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
145 typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
146 typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
147 
148 union autofs_v5_packet_union {
149         struct autofs_packet_hdr hdr;
150         struct autofs_v5_packet v5_packet;
151         autofs_packet_missing_indirect_t missing_indirect;
152         autofs_packet_expire_indirect_t expire_indirect;
153         autofs_packet_missing_direct_t missing_direct;
154         autofs_packet_expire_direct_t expire_direct;
155 };
156 
157 #define AUTOFS_IOC_EXPIRE_MULTI         _IOW(0x93,0x66,int)
158 #define AUTOFS_IOC_EXPIRE_INDIRECT      AUTOFS_IOC_EXPIRE_MULTI
159 #define AUTOFS_IOC_EXPIRE_DIRECT        AUTOFS_IOC_EXPIRE_MULTI
160 #define AUTOFS_IOC_PROTOSUBVER          _IOR(0x93,0x67,int)
161 #define AUTOFS_IOC_ASKUMOUNT            _IOR(0x93,0x70,int)
162 
163 
164 #endif /* _LINUX_AUTO_FS4_H */
165 
  This page was automatically generated by the LXR engine.