| Eric Van Hensbergen | 426cc91 | 2005-09-09 13:04:22 -0700 | [diff] [blame] | 1 | /* | 
 | 2 |  * linux/fs/9p/mux.h | 
 | 3 |  * | 
 | 4 |  * Multiplexer Definitions | 
 | 5 |  * | 
| Latchesar Ionkov | 3cf6429 | 2006-01-08 01:04:58 -0800 | [diff] [blame] | 6 |  *  Copyright (C) 2005 by Latchesar Ionkov <lucho@ionkov.net> | 
| Eric Van Hensbergen | 426cc91 | 2005-09-09 13:04:22 -0700 | [diff] [blame] | 7 |  *  Copyright (C) 2004 by Eric Van Hensbergen <ericvh@gmail.com> | 
 | 8 |  * | 
 | 9 |  *  This program is free software; you can redistribute it and/or modify | 
| Eric Van Hensbergen | 42e8c50 | 2006-03-25 03:07:28 -0800 | [diff] [blame] | 10 |  *  it under the terms of the GNU General Public License version 2 | 
 | 11 |  *  as published by the Free Software Foundation. | 
| Eric Van Hensbergen | 426cc91 | 2005-09-09 13:04:22 -0700 | [diff] [blame] | 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 |  | 
| Latchesar Ionkov | 3cf6429 | 2006-01-08 01:04:58 -0800 | [diff] [blame] | 26 | struct v9fs_mux_data; | 
| Latchesar Ionkov | 41e5a6a | 2006-05-15 09:44:21 -0700 | [diff] [blame] | 27 | struct v9fs_req; | 
| Eric Van Hensbergen | 426cc91 | 2005-09-09 13:04:22 -0700 | [diff] [blame] | 28 |  | 
| Latchesar Ionkov | 3cf6429 | 2006-01-08 01:04:58 -0800 | [diff] [blame] | 29 | /** | 
 | 30 |  * v9fs_mux_req_callback - callback function that is called when the | 
 | 31 |  * response of a request is received. The callback is called from | 
 | 32 |  * a workqueue and shouldn't block. | 
 | 33 |  * | 
 | 34 |  * @a - the pointer that was specified when the request was send to be | 
 | 35 |  *      passed to the callback | 
 | 36 |  * @tc - request call | 
 | 37 |  * @rc - response call | 
 | 38 |  * @err - error code (non-zero if error occured) | 
 | 39 |  */ | 
| Latchesar Ionkov | 41e5a6a | 2006-05-15 09:44:21 -0700 | [diff] [blame] | 40 | typedef void (*v9fs_mux_req_callback)(struct v9fs_req *req, void *a); | 
| Eric Van Hensbergen | 426cc91 | 2005-09-09 13:04:22 -0700 | [diff] [blame] | 41 |  | 
| Latchesar Ionkov | 1dac06b | 2006-01-08 01:05:02 -0800 | [diff] [blame] | 42 | int v9fs_mux_global_init(void); | 
| Latchesar Ionkov | 3cf6429 | 2006-01-08 01:04:58 -0800 | [diff] [blame] | 43 | void v9fs_mux_global_exit(void); | 
| Eric Van Hensbergen | 426cc91 | 2005-09-09 13:04:22 -0700 | [diff] [blame] | 44 |  | 
| Latchesar Ionkov | 3cf6429 | 2006-01-08 01:04:58 -0800 | [diff] [blame] | 45 | struct v9fs_mux_data *v9fs_mux_init(struct v9fs_transport *trans, int msize, | 
 | 46 | 	unsigned char *extended); | 
 | 47 | void v9fs_mux_destroy(struct v9fs_mux_data *); | 
| Eric Van Hensbergen | 426cc91 | 2005-09-09 13:04:22 -0700 | [diff] [blame] | 48 |  | 
| Latchesar Ionkov | 3cf6429 | 2006-01-08 01:04:58 -0800 | [diff] [blame] | 49 | int v9fs_mux_send(struct v9fs_mux_data *m, struct v9fs_fcall *tc); | 
 | 50 | struct v9fs_fcall *v9fs_mux_recv(struct v9fs_mux_data *m); | 
 | 51 | int v9fs_mux_rpc(struct v9fs_mux_data *m, struct v9fs_fcall *tc, struct v9fs_fcall **rc); | 
| Latchesar Ionkov | 3cf6429 | 2006-01-08 01:04:58 -0800 | [diff] [blame] | 52 |  | 
 | 53 | void v9fs_mux_flush(struct v9fs_mux_data *m, int sendflush); | 
 | 54 | void v9fs_mux_cancel(struct v9fs_mux_data *m, int err); | 
| Latchesar Ionkov | 1dac06b | 2006-01-08 01:05:02 -0800 | [diff] [blame] | 55 | int v9fs_errstr2errno(char *errstr, int len); |