~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to include/linux/auto_fs4.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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         2
 
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 */