Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
net
9p
client.h
Go to the documentation of this file.
1
/*
2
* include/net/9p/client.h
3
*
4
* 9P Client Definitions
5
*
6
* Copyright (C) 2008 by Eric Van Hensbergen <
[email protected]
>
7
* Copyright (C) 2007 by Latchesar Ionkov <
[email protected]
>
8
*
9
* This program is free software; you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License version 2
11
* as published by the Free Software Foundation.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to:
20
* Free Software Foundation
21
* 51 Franklin Street, Fifth Floor
22
* Boston, MA 02111-1301 USA
23
*
24
*/
25
26
#ifndef NET_9P_CLIENT_H
27
#define NET_9P_CLIENT_H
28
29
/* Number of requests per row */
30
#define P9_ROW_MAXTAG 255
31
38
enum
p9_proto_versions
{
39
p9_proto_legacy
,
40
p9_proto_2000u
,
41
p9_proto_2000L
,
42
};
43
44
55
enum
p9_trans_status
{
56
Connected
,
57
BeginDisconnect
,
58
Disconnected
,
59
Hung
,
60
};
61
79
enum
p9_req_status_t
{
80
REQ_STATUS_IDLE
,
81
REQ_STATUS_ALLOC
,
82
REQ_STATUS_UNSENT
,
83
REQ_STATUS_SENT
,
84
REQ_STATUS_FLSH
,
85
REQ_STATUS_RCVD
,
86
REQ_STATUS_FLSHD
,
87
REQ_STATUS_ERROR
,
88
};
89
112
struct
p9_req_t
{
113
int
status
;
114
int
t_err
;
115
wait_queue_head_t
*
wq
;
116
struct
p9_fcall
*
tc
;
117
struct
p9_fcall
*
rc
;
118
void
*
aux
;
119
120
struct
list_head
req_list
;
121
};
122
152
struct
p9_client
{
153
spinlock_t
lock
;
/* protect client structure */
154
unsigned
int
msize
;
155
unsigned
char
proto_version
;
156
struct
p9_trans_module
*
trans_mod
;
157
enum
p9_trans_status
status
;
158
void
*
trans
;
159
struct
p9_conn
*
conn
;
160
161
struct
p9_idpool
*
fidpool
;
162
struct
list_head
fidlist
;
163
164
struct
p9_idpool
*
tagpool
;
165
struct
p9_req_t
*
reqs
[
P9_ROW_MAXTAG
];
166
int
max_tag
;
167
};
168
184
struct
p9_fid
{
185
struct
p9_client
*
clnt
;
186
u32
fid
;
187
int
mode
;
188
struct
p9_qid
qid
;
189
u32
iounit
;
190
uid_t
uid
;
191
192
void
*
rdir
;
193
194
struct
list_head
flist
;
195
struct
list_head
dlist
;
/* list of all fids attached to a dentry */
196
};
197
206
struct
p9_dirent
{
207
struct
p9_qid
qid
;
208
u64
d_off
;
209
unsigned
char
d_type
;
210
char
d_name
[256];
211
};
212
213
int
p9_client_statfs
(
struct
p9_fid
*
fid
,
struct
p9_rstatfs
*
sb
);
214
int
p9_client_rename
(
struct
p9_fid
*
fid
,
struct
p9_fid
*newdirfid,
215
const
char
*
name
);
216
int
p9_client_renameat
(
struct
p9_fid
*olddirfid,
const
char
*old_name,
217
struct
p9_fid
*newdirfid,
const
char
*new_name);
218
struct
p9_client
*
p9_client_create
(
const
char
*dev_name,
char
*
options
);
219
void
p9_client_destroy
(
struct
p9_client
*clnt);
220
void
p9_client_disconnect
(
struct
p9_client
*clnt);
221
void
p9_client_begin_disconnect
(
struct
p9_client
*clnt);
222
struct
p9_fid
*
p9_client_attach
(
struct
p9_client
*
clnt
,
struct
p9_fid
*afid,
223
char
*uname,
u32
n_uname,
char
*aname);
224
struct
p9_fid
*
p9_client_walk
(
struct
p9_fid
*oldfid,
uint16_t
nwname,
225
char
**wnames,
int
clone);
226
int
p9_client_open
(
struct
p9_fid
*
fid
,
int
mode
);
227
int
p9_client_fcreate
(
struct
p9_fid
*
fid
,
char
*
name
,
u32
perm
,
int
mode
,
228
char
*
extension
);
229
int
p9_client_link
(
struct
p9_fid
*
fid
,
struct
p9_fid
*oldfid,
char
*newname);
230
int
p9_client_symlink
(
struct
p9_fid
*
fid
,
char
*
name
,
char
*symname,
gid_t
gid
,
231
struct
p9_qid
*
qid
);
232
int
p9_client_create_dotl
(
struct
p9_fid
*ofid,
char
*
name
,
u32
flags
,
u32
mode
,
233
gid_t
gid
,
struct
p9_qid
*
qid
);
234
int
p9_client_clunk
(
struct
p9_fid
*
fid
);
235
int
p9_client_fsync
(
struct
p9_fid
*
fid
,
int
datasync);
236
int
p9_client_remove
(
struct
p9_fid
*
fid
);
237
int
p9_client_unlinkat
(
struct
p9_fid
*dfid,
const
char
*
name
,
int
flags
);
238
int
p9_client_read
(
struct
p9_fid
*
fid
,
char
*
data
,
char
__user *udata,
239
u64
offset
,
u32
count
);
240
int
p9_client_write
(
struct
p9_fid
*
fid
,
char
*
data
,
const
char
__user *udata,
241
u64
offset
,
u32
count
);
242
int
p9_client_readdir
(
struct
p9_fid
*
fid
,
char
*
data
,
u32
count
,
u64
offset
);
243
int
p9dirent_read
(
struct
p9_client
*
clnt
,
char
*
buf
,
int
len,
244
struct
p9_dirent
*
dirent
);
245
struct
p9_wstat
*
p9_client_stat
(
struct
p9_fid
*
fid
);
246
int
p9_client_wstat
(
struct
p9_fid
*
fid
,
struct
p9_wstat
*wst);
247
int
p9_client_setattr
(
struct
p9_fid
*
fid
,
struct
p9_iattr_dotl
*
attr
);
248
249
struct
p9_stat_dotl
*
p9_client_getattr_dotl
(
struct
p9_fid
*
fid
,
250
u64
request_mask);
251
252
int
p9_client_mknod_dotl
(
struct
p9_fid
*oldfid,
char
*
name
,
int
mode
,
253
dev_t
rdev
,
gid_t
gid
,
struct
p9_qid
*);
254
int
p9_client_mkdir_dotl
(
struct
p9_fid
*
fid
,
char
*
name
,
int
mode
,
255
gid_t
gid
,
struct
p9_qid
*);
256
int
p9_client_lock_dotl
(
struct
p9_fid
*
fid
,
struct
p9_flock
*
flock
,
u8
*
status
);
257
int
p9_client_getlock_dotl
(
struct
p9_fid
*
fid
,
struct
p9_getlock
*
fl
);
258
struct
p9_req_t
*
p9_tag_lookup
(
struct
p9_client
*,
u16
);
259
void
p9_client_cb
(
struct
p9_client
*
c
,
struct
p9_req_t
*
req
);
260
261
int
p9_parse_header
(
struct
p9_fcall
*,
int32_t
*,
int8_t
*,
int16_t
*,
int
);
262
int
p9stat_read
(
struct
p9_client
*,
char
*,
int
,
struct
p9_wstat
*);
263
void
p9stat_free
(
struct
p9_wstat
*);
264
265
int
p9_is_proto_dotu
(
struct
p9_client
*clnt);
266
int
p9_is_proto_dotl
(
struct
p9_client
*clnt);
267
struct
p9_fid
*
p9_client_xattrwalk
(
struct
p9_fid
*,
const
char
*,
u64
*);
268
int
p9_client_xattrcreate
(
struct
p9_fid
*,
const
char
*,
u64
,
int
);
269
int
p9_client_readlink
(
struct
p9_fid
*
fid
,
char
**
target
);
270
271
#endif
/* NET_9P_CLIENT_H */
Generated on Thu Jan 10 2013 13:32:41 for Linux Kernel by
1.8.2