@@ -252,6 +252,25 @@ pub(crate) fn inject_tap_tx_frame(net: &Net, len: usize) -> Vec<u8> {
252
252
frame
253
253
}
254
254
255
+ pub fn write_element_in_queue ( net : & Net , idx : usize , val : u64 ) -> result:: Result < ( ) , DeviceError > {
256
+ if idx > net. queue_evts . len ( ) {
257
+ return Err ( DeviceError :: QueueError ( QueueError :: DescIndexOutOfBounds (
258
+ idx as u16 ,
259
+ ) ) ) ;
260
+ }
261
+ net. queue_evts [ idx] . write ( val) . unwrap ( ) ;
262
+ Ok ( ( ) )
263
+ }
264
+
265
+ pub fn get_element_from_queue ( net : & Net , idx : usize ) -> result:: Result < u64 , DeviceError > {
266
+ if idx > net. queue_evts . len ( ) {
267
+ return Err ( DeviceError :: QueueError ( QueueError :: DescIndexOutOfBounds (
268
+ idx as u16 ,
269
+ ) ) ) ;
270
+ }
271
+ Ok ( net. queue_evts [ idx] . as_raw_fd ( ) as u64 )
272
+ }
273
+
255
274
pub fn default_guest_mac ( ) -> MacAddr {
256
275
MacAddr :: parse_str ( "11:22:33:44:55:66" ) . unwrap ( )
257
276
}
@@ -274,6 +293,7 @@ pub fn assign_queues(net: &mut Net, rxq: Queue, txq: Queue) {
274
293
275
294
#[ cfg( test) ]
276
295
pub mod test {
296
+ use crate :: check_metric_after_block;
277
297
use crate :: virtio:: net:: device:: vnet_hdr_len;
278
298
use crate :: virtio:: net:: test_utils:: {
279
299
assign_queues, check_used_queue_signal, default_net, inject_tap_tx_frame, NetEvent ,
@@ -294,7 +314,6 @@ pub mod test {
294
314
use std:: sync:: { Arc , Mutex , MutexGuard } ;
295
315
use utils:: epoll:: { EpollEvent , EventSet } ;
296
316
use vm_memory:: { Address , Bytes , GuestAddress , GuestMemoryMmap } ;
297
- use crate :: check_metric_after_block;
298
317
299
318
pub struct TestHelper < ' a > {
300
319
pub event_manager : EventManager ,
0 commit comments