2005-09-10 00:04:22 +04:00
/*
* linux / fs / 9 p / mux . h
*
* Multiplexer Definitions
*
2006-01-08 12:04:58 +03:00
* Copyright ( C ) 2005 by Latchesar Ionkov < lucho @ ionkov . net >
2005-09-10 00:04:22 +04:00
* Copyright ( C ) 2004 by Eric Van Hensbergen < ericvh @ gmail . com >
*
* This program is free software ; you can redistribute it and / or modify
2006-03-25 14:07:28 +03:00
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation .
2005-09-10 00:04:22 +04:00
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to :
* Free Software Foundation
* 51 Franklin Street , Fifth Floor
* Boston , MA 02111 - 1301 USA
*
*/
2006-01-08 12:04:58 +03:00
struct v9fs_mux_data ;
2006-05-15 20:44:21 +04:00
struct v9fs_req ;
2005-09-10 00:04:22 +04:00
2006-01-08 12:04:58 +03:00
/**
* v9fs_mux_req_callback - callback function that is called when the
* response of a request is received . The callback is called from
* a workqueue and shouldn ' t block .
*
* @ a - the pointer that was specified when the request was send to be
* passed to the callback
* @ tc - request call
* @ rc - response call
* @ err - error code ( non - zero if error occured )
*/
2006-05-15 20:44:21 +04:00
typedef void ( * v9fs_mux_req_callback ) ( struct v9fs_req * req , void * a ) ;
2006-01-08 12:04:58 +03:00
2006-01-08 12:05:02 +03:00
int v9fs_mux_global_init ( void ) ;
2006-01-08 12:04:58 +03:00
void v9fs_mux_global_exit ( void ) ;
2005-09-10 00:04:22 +04:00
2006-01-08 12:04:58 +03:00
struct v9fs_mux_data * v9fs_mux_init ( struct v9fs_transport * trans , int msize ,
unsigned char * extended ) ;
void v9fs_mux_destroy ( struct v9fs_mux_data * ) ;
2005-09-10 00:04:22 +04:00
2006-01-08 12:04:58 +03:00
int v9fs_mux_send ( struct v9fs_mux_data * m , struct v9fs_fcall * tc ) ;
struct v9fs_fcall * v9fs_mux_recv ( struct v9fs_mux_data * m ) ;
int v9fs_mux_rpc ( struct v9fs_mux_data * m , struct v9fs_fcall * tc , struct v9fs_fcall * * rc ) ;
2005-09-10 00:04:22 +04:00
2006-01-08 12:04:58 +03:00
void v9fs_mux_flush ( struct v9fs_mux_data * m , int sendflush ) ;
void v9fs_mux_cancel ( struct v9fs_mux_data * m , int err ) ;
2006-01-08 12:05:02 +03:00
int v9fs_errstr2errno ( char * errstr , int len ) ;