@@ -179,6 +179,65 @@ impl<'a> Submitter<'a> {
179
179
. map ( drop)
180
180
}
181
181
182
+ pub fn register_buffers_update_tag (
183
+ & self ,
184
+ off : u32 ,
185
+ bufs : & [ libc:: iovec ] ,
186
+ tags : & [ u64 ] ,
187
+ ) -> io:: Result < ( ) > {
188
+ use std:: mem;
189
+ let rr = sys:: io_uring_rsrc_update2 {
190
+ nr : bufs. len ( ) . min ( tags. len ( ) ) as _ ,
191
+ data : bufs. as_ptr ( ) as _ ,
192
+ tags : tags. as_ptr ( ) as _ ,
193
+ offset : off,
194
+ ..Default :: default ( )
195
+ } ;
196
+ let rr = cast_ptr :: < sys:: io_uring_rsrc_update2 > ( & rr) ;
197
+ execute (
198
+ self . fd . as_raw_fd ( ) ,
199
+ sys:: IORING_REGISTER_BUFFERS_UPDATE ,
200
+ rr as * const _ ,
201
+ mem:: size_of :: < sys:: io_uring_rsrc_update2 > ( ) as _ ,
202
+ )
203
+ . map ( drop)
204
+ }
205
+
206
+ pub fn register_buffers_tags ( & self , bufs : & [ libc:: iovec ] , tags : & [ u64 ] ) -> io:: Result < ( ) > {
207
+ use std:: mem;
208
+ let rr = sys:: io_uring_rsrc_register {
209
+ nr : bufs. len ( ) . min ( tags. len ( ) ) as _ ,
210
+ data : bufs. as_ptr ( ) as _ ,
211
+ tags : tags. as_ptr ( ) as _ ,
212
+ ..Default :: default ( )
213
+ } ;
214
+ let rr = cast_ptr :: < sys:: io_uring_rsrc_register > ( & rr) ;
215
+ execute (
216
+ self . fd . as_raw_fd ( ) ,
217
+ sys:: IORING_REGISTER_BUFFERS2 ,
218
+ rr as * const _ ,
219
+ mem:: size_of :: < sys:: io_uring_rsrc_register > ( ) as _ ,
220
+ )
221
+ . map ( drop)
222
+ }
223
+
224
+ pub fn register_buffers_sparse ( & self , nr : u32 ) -> io:: Result < ( ) > {
225
+ use std:: mem;
226
+ let rr = sys:: io_uring_rsrc_register {
227
+ nr,
228
+ flags : sys:: IORING_RSRC_REGISTER_SPARSE ,
229
+ ..Default :: default ( )
230
+ } ;
231
+ let rr = cast_ptr :: < sys:: io_uring_rsrc_register > ( & rr) ;
232
+ execute (
233
+ self . fd . as_raw_fd ( ) ,
234
+ sys:: IORING_REGISTER_BUFFERS2 ,
235
+ rr as * const _ ,
236
+ mem:: size_of :: < sys:: io_uring_rsrc_register > ( ) as _ ,
237
+ )
238
+ . map ( drop)
239
+ }
240
+
182
241
/// Registers an empty file table of nr_files number of file descriptors. The sparse variant is
183
242
/// available in kernels 5.19 and later.
184
243
///
0 commit comments