diff options
Diffstat (limited to 'include/net/9p/transport.h')
| -rw-r--r-- | include/net/9p/transport.h | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/include/net/9p/transport.h b/include/net/9p/transport.h index d2209ae9d18b..0db3a4038dc0 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 */ |
| @@ -53,5 +96,4 @@ struct p9_trans_module { | |||
| 53 | void v9fs_register_trans(struct p9_trans_module *m); | 96 | void v9fs_register_trans(struct p9_trans_module *m); |
| 54 | struct p9_trans_module *v9fs_match_trans(const substring_t *name); | 97 | struct p9_trans_module *v9fs_match_trans(const substring_t *name); |
| 55 | struct p9_trans_module *v9fs_default_trans(void); | 98 | struct p9_trans_module *v9fs_default_trans(void); |
| 56 | |||
| 57 | #endif /* NET_9P_TRANSPORT_H */ | 99 | #endif /* NET_9P_TRANSPORT_H */ |
