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

« back to all changes in this revision

Viewing changes to include/net/9p/transport.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
/*
 
2
 * include/net/9p/transport.h
 
3
 *
 
4
 * Transport Definition
 
5
 *
 
6
 *  Copyright (C) 2005 by Latchesar Ionkov <lucho@ionkov.net>
 
7
 *  Copyright (C) 2004-2008 by Eric Van Hensbergen <ericvh@gmail.com>
 
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_TRANSPORT_H
 
27
#define NET_9P_TRANSPORT_H
 
28
 
 
29
/**
 
30
 * struct p9_trans_module - transport module interface
 
31
 * @list: used to maintain a list of currently available transports
 
32
 * @name: the human-readable name of the transport
 
33
 * @maxsize: transport provided maximum packet size
 
34
 * @pref: Preferences of this transport
 
35
 * @def: set if this transport should be considered the default
 
36
 * @create: member function to create a new connection on this transport
 
37
 * @close: member function to discard a connection on this transport
 
38
 * @request: member function to issue a request to the transport
 
39
 * @cancel: member function to cancel a request (if it hasn't been sent)
 
40
 *
 
41
 * This is the basic API for a transport module which is registered by the
 
42
 * transport module with the 9P core network module and used by the client
 
43
 * to instantiate a new connection on a transport.
 
44
 *
 
45
 * The transport module list is protected by v9fs_trans_lock.
 
46
 */
 
47
 
 
48
struct p9_trans_module {
 
49
        struct list_head list;
 
50
        char *name;             /* name of transport */
 
51
        int maxsize;            /* max message size of transport */
 
52
        int def;                /* this transport should be default */
 
53
        struct module *owner;
 
54
        int (*create)(struct p9_client *, const char *, char *);
 
55
        void (*close) (struct p9_client *);
 
56
        int (*request) (struct p9_client *, struct p9_req_t *req);
 
57
        int (*cancel) (struct p9_client *, struct p9_req_t *req);
 
58
        int (*zc_request)(struct p9_client *, struct p9_req_t *,
 
59
                          char *, char *, int , int, int, int);
 
60
};
 
61
 
 
62
void v9fs_register_trans(struct p9_trans_module *m);
 
63
void v9fs_unregister_trans(struct p9_trans_module *m);
 
64
struct p9_trans_module *v9fs_get_trans_by_name(char *s);
 
65
struct p9_trans_module *v9fs_get_default_trans(void);
 
66
void v9fs_put_trans(struct p9_trans_module *m);
 
67
#endif /* NET_9P_TRANSPORT_H */