diff options
Diffstat (limited to 'include/net/9p/transport.h')
-rw-r--r-- | include/net/9p/transport.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/include/net/9p/transport.h b/include/net/9p/transport.h index d2209ae9d18b..240e0de888c6 100644 --- a/include/net/9p/transport.h +++ b/include/net/9p/transport.h | |||
@@ -26,12 +26,40 @@ | |||
26 | #ifndef NET_9P_TRANSPORT_H | 26 | #ifndef NET_9P_TRANSPORT_H |
27 | #define NET_9P_TRANSPORT_H | 27 | #define NET_9P_TRANSPORT_H |
28 | 28 | ||
29 | /** | ||
30 | * enum p9_trans_status - different states of underlying transports | ||
31 | * @Connected: transport is connected and healthy | ||
32 | * @Disconnected: transport has been disconnected | ||
33 | * @Hung: transport is connected by wedged | ||
34 | * | ||
35 | * This enumeration details the various states a transport | ||
36 | * instatiation can be in. | ||
37 | */ | ||
38 | |||
29 | enum p9_trans_status { | 39 | enum p9_trans_status { |
30 | Connected, | 40 | Connected, |
31 | Disconnected, | 41 | Disconnected, |
32 | Hung, | 42 | Hung, |
33 | }; | 43 | }; |
34 | 44 | ||
45 | /** | ||
46 | * struct p9_trans - per-transport state and API | ||
47 | * @status: transport &p9_trans_status | ||
48 | * @msize: negotiated maximum packet size (duplicate from client) | ||
49 | * @extended: negotiated protocol extensions (duplicate from client) | ||
50 | * @priv: transport private data | ||
51 | * @close: member function to disconnect and close the transport | ||
52 | * @rpc: member function to issue a request to the transport | ||
53 | * | ||
54 | * This is the basic API for a transport instance. It is used as | ||
55 | * a handle by the client to issue requests. This interface is currently | ||
56 | * in flux during reorganization. | ||
57 | * | ||
58 | * Bugs: there is lots of duplicated data here and its not clear that | ||
59 | * the member functions need to be per-instance versus per transport | ||
60 | * module. | ||
61 | */ | ||
62 | |||
35 | struct p9_trans { | 63 | struct p9_trans { |
36 | enum p9_trans_status status; | 64 | enum p9_trans_status status; |
37 | int msize; | 65 | int msize; |
@@ -42,6 +70,21 @@ struct p9_trans { | |||
42 | struct p9_fcall **rc); | 70 | struct p9_fcall **rc); |
43 | }; | 71 | }; |
44 | 72 | ||
73 | /** | ||
74 | * struct p9_trans_module - transport module interface | ||
75 | * @list: used to maintain a list of currently available transports | ||
76 | * @name: the human-readable name of the transport | ||
77 | * @maxsize: transport provided maximum packet size | ||
78 | * @def: set if this transport should be considered the default | ||
79 | * @create: member function to create a new connection on this transport | ||
80 | * | ||
81 | * This is the basic API for a transport module which is registered by the | ||
82 | * transport module with the 9P core network module and used by the client | ||
83 | * to instantiate a new connection on a transport. | ||
84 | * | ||
85 | * Bugs: the transport module list isn't protected. | ||
86 | */ | ||
87 | |||
45 | struct p9_trans_module { | 88 | struct p9_trans_module { |
46 | struct list_head list; | 89 | struct list_head list; |
47 | char *name; /* name of transport */ | 90 | char *name; /* name of transport */ |