00001 /* -*- c -*- */ 00002 /* $Id: blk.idl 27328 2006-11-01 14:09:41Z ra3 $ */ 00003 /*****************************************************************************/ 00014 /*****************************************************************************/ 00015 00016 import <l4/generic_blk/types.h> 00017 00018 /*****************************************************************************/ 00023 /*****************************************************************************/ 00024 library l4blk 00025 { 00026 /***************************************************************************/ 00033 /***************************************************************************/ 00034 interface driver 00035 { 00036 /***********************************************************************/ 00052 /***********************************************************************/ 00053 int open([out] l4blk_driver_id_t * drv, 00054 [out] l4_threadid_t * cmd_id, 00055 [out] l4_threadid_t * notify_id); 00056 00057 /***********************************************************************/ 00068 /***********************************************************************/ 00069 int close([in] l4blk_driver_id_t drv); 00070 }; 00071 00072 /***************************************************************************/ 00077 /***************************************************************************/ 00078 interface cmd 00079 { 00080 /***********************************************************************/ 00099 /***********************************************************************/ 00100 int create_stream([in] l4blk_driver_id_t drv, 00101 [in] unsigned long device, 00102 [in] unsigned long bandwidth, 00103 [in] unsigned long period, 00104 [in] unsigned long blk_size, 00105 [in] float q, 00106 [in] unsigned long meta_int, 00107 [out] l4blk_stream_t * stream); 00108 00109 /***********************************************************************/ 00120 /***********************************************************************/ 00121 int close_stream([in] l4blk_driver_id_t drv, 00122 [in] l4blk_stream_t stream); 00123 00124 /***********************************************************************/ 00136 /***********************************************************************/ 00137 int start_stream([in] l4blk_driver_id_t drv, 00138 [in] l4blk_stream_t stream, 00139 [in] unsigned long time, 00140 [in] unsigned long request_no); 00141 00142 /***********************************************************************/ 00159 /***********************************************************************/ 00160 int put_request([in] l4blk_driver_id_t drv, 00161 [in] l4blk_blk_request_t request, 00162 [in, ref, size_is(sg_size), max_is(4096)] void * sg_list, 00163 [in] int sg_size, 00164 [in] int sg_num, 00165 [in] int sg_type); 00166 00167 /***********************************************************************/ 00181 /***********************************************************************/ 00182 int ctrl([in] l4blk_driver_id_t drv, 00183 [in] l4_uint32_t command, 00184 [in, ref, size_is(in_size)] void * in_args, 00185 [in] int in_size, 00186 [out, ref, prealloc_client, size_is(out_size)] void ** out_args, 00187 [in, out] int * out_size); 00188 }; 00189 00190 /***************************************************************************/ 00195 /***************************************************************************/ 00196 interface notify 00197 { 00198 /***********************************************************************/ 00211 /***********************************************************************/ 00212 int wait([in] l4blk_driver_id_t drv, 00213 [out] l4_uint32_t * req_handle, 00214 [out] l4_uint32_t * status, 00215 [out] int * error); 00216 }; 00217 };