@@ -14,7 +14,7 @@ use std::ptr::copy_nonoverlapping;
14
14
use std:: { cmp, result} ;
15
15
16
16
use crate :: { DescriptorChain , Error } ;
17
- use vm_memory:: bitmap:: { BitmapSlice , WithBitmapSlice } ;
17
+ use vm_memory:: bitmap:: { BitmapSlice , MS } ;
18
18
use vm_memory:: {
19
19
Address , ByteValued , GuestMemory , GuestMemoryRegion , MemoryRegionAddress , VolatileSlice ,
20
20
} ;
@@ -157,10 +157,9 @@ pub struct Reader<'a, B = ()> {
157
157
158
158
impl < ' a , B : BitmapSlice > Reader < ' a , B > {
159
159
/// Construct a new Reader wrapper over `desc_chain`.
160
- pub fn new < M , T > ( mem : & ' a M , desc_chain : DescriptorChain < T > ) -> Result < Reader < ' a , B > >
160
+ pub fn new < M , T > ( mem : & ' a M , desc_chain : DescriptorChain < T > ) -> Result < Reader < ' a , MS < ' a , M > > >
161
161
where
162
162
M : GuestMemory ,
163
- <<M as GuestMemory >:: R as GuestMemoryRegion >:: B : WithBitmapSlice < ' a , S = B > ,
164
163
T : Deref ,
165
164
T :: Target : GuestMemory + Sized ,
166
165
{
@@ -186,7 +185,7 @@ impl<'a, B: BitmapSlice> Reader<'a, B> {
186
185
. get_slice ( MemoryRegionAddress ( offset. raw_value ( ) ) , desc. len ( ) as usize )
187
186
. map_err ( Error :: GuestMemoryError )
188
187
} )
189
- . collect :: < Result < VecDeque < VolatileSlice < ' a , B > > > > ( ) ?;
188
+ . collect :: < Result < VecDeque < _ > > > ( ) ?;
190
189
Ok ( Reader {
191
190
buffer : DescriptorChainConsumer {
192
191
buffers,
@@ -269,10 +268,9 @@ pub struct Writer<'a, B = ()> {
269
268
270
269
impl < ' a , B : BitmapSlice > Writer < ' a , B > {
271
270
/// Construct a new Writer wrapper over `desc_chain`.
272
- pub fn new < M , T > ( mem : & ' a M , desc_chain : DescriptorChain < T > ) -> Result < Writer < ' a , B > >
271
+ pub fn new < M , T > ( mem : & ' a M , desc_chain : DescriptorChain < T > ) -> Result < Writer < ' a , MS < ' a , M > > >
273
272
where
274
273
M : GuestMemory ,
275
- <<M as GuestMemory >:: R as GuestMemoryRegion >:: B : WithBitmapSlice < ' a , S = B > ,
276
274
T : Deref ,
277
275
T :: Target : GuestMemory + Sized ,
278
276
{
@@ -298,7 +296,7 @@ impl<'a, B: BitmapSlice> Writer<'a, B> {
298
296
. get_slice ( MemoryRegionAddress ( offset. raw_value ( ) ) , desc. len ( ) as usize )
299
297
. map_err ( Error :: GuestMemoryError )
300
298
} )
301
- . collect :: < Result < VecDeque < VolatileSlice < ' a , B > > > > ( ) ?;
299
+ . collect :: < Result < VecDeque < _ > > > ( ) ?;
302
300
303
301
Ok ( Writer {
304
302
buffer : DescriptorChainConsumer {
@@ -451,7 +449,7 @@ mod tests {
451
449
452
450
let chain = queue. iter ( & memory) . unwrap ( ) . next ( ) . unwrap ( ) ;
453
451
454
- assert ! ( Reader :: new( & memory, chain) . is_err( ) ) ;
452
+ assert ! ( Reader :: < ( ) > :: new( & memory, chain) . is_err( ) ) ;
455
453
}
456
454
457
455
#[ test]
@@ -473,7 +471,7 @@ mod tests {
473
471
0 ,
474
472
)
475
473
. expect ( "create_descriptor_chain failed" ) ;
476
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
474
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
477
475
assert_eq ! ( reader. available_bytes( ) , 106 ) ;
478
476
assert_eq ! ( reader. bytes_read( ) , 0 ) ;
479
477
@@ -513,7 +511,7 @@ mod tests {
513
511
0 ,
514
512
)
515
513
. expect ( "create_descriptor_chain failed" ) ;
516
- let mut writer = Writer :: new ( & memory, chain) . expect ( "failed to create Writer" ) ;
514
+ let mut writer = Writer :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Writer" ) ;
517
515
assert_eq ! ( writer. available_bytes( ) , 106 ) ;
518
516
assert_eq ! ( writer. bytes_written( ) , 0 ) ;
519
517
@@ -543,7 +541,7 @@ mod tests {
543
541
544
542
let chain = create_descriptor_chain ( & memory, GuestAddress ( 0x0 ) , vec ! [ ( Writable , 8 ) ] , 0 )
545
543
. expect ( "create_descriptor_chain failed" ) ;
546
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
544
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
547
545
assert_eq ! ( reader. available_bytes( ) , 0 ) ;
548
546
assert_eq ! ( reader. bytes_read( ) , 0 ) ;
549
547
@@ -562,7 +560,7 @@ mod tests {
562
560
563
561
let chain = create_descriptor_chain ( & memory, GuestAddress ( 0x0 ) , vec ! [ ( Readable , 8 ) ] , 0 )
564
562
. expect ( "create_descriptor_chain failed" ) ;
565
- let mut writer = Writer :: new ( & memory, chain) . expect ( "failed to create Writer" ) ;
563
+ let mut writer = Writer :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Writer" ) ;
566
564
assert_eq ! ( writer. available_bytes( ) , 0 ) ;
567
565
assert_eq ! ( writer. bytes_written( ) , 0 ) ;
568
566
@@ -593,8 +591,9 @@ mod tests {
593
591
0 ,
594
592
)
595
593
. expect ( "create_descriptor_chain failed" ) ;
596
- let mut reader = Reader :: new ( & memory, chain. clone ( ) ) . expect ( "failed to create Reader" ) ;
597
- let mut writer = Writer :: new ( & memory, chain) . expect ( "failed to create Writer" ) ;
594
+ let mut reader =
595
+ Reader :: < ( ) > :: new ( & memory, chain. clone ( ) ) . expect ( "failed to create Reader" ) ;
596
+ let mut writer = Writer :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Writer" ) ;
598
597
599
598
assert_eq ! ( reader. bytes_read( ) , 0 ) ;
600
599
assert_eq ! ( writer. bytes_written( ) , 0 ) ;
@@ -636,7 +635,7 @@ mod tests {
636
635
123 ,
637
636
)
638
637
. expect ( "create_descriptor_chain failed" ) ;
639
- let mut writer = Writer :: new ( & memory, chain_writer) . expect ( "failed to create Writer" ) ;
638
+ let mut writer = Writer :: < ( ) > :: new ( & memory, chain_writer) . expect ( "failed to create Writer" ) ;
640
639
if let Err ( e) = writer. write_obj ( secret) {
641
640
panic ! ( "write_obj should not fail here: {:?}" , e) ;
642
641
}
@@ -649,7 +648,7 @@ mod tests {
649
648
123 ,
650
649
)
651
650
. expect ( "create_descriptor_chain failed" ) ;
652
- let mut reader = Reader :: new ( & memory, chain_reader) . expect ( "failed to create Reader" ) ;
651
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain_reader) . expect ( "failed to create Reader" ) ;
653
652
match reader. read_obj :: < Le32 > ( ) {
654
653
Err ( e) => panic ! ( "read_obj should not fail here: {:?}" , e) ,
655
654
Ok ( read_secret) => assert_eq ! ( read_secret, secret) ,
@@ -671,7 +670,7 @@ mod tests {
671
670
)
672
671
. expect ( "create_descriptor_chain failed" ) ;
673
672
674
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
673
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
675
674
676
675
let mut buf = vec ! [ 0 ; 1024 ] ;
677
676
@@ -705,13 +704,15 @@ mod tests {
705
704
0 ,
706
705
)
707
706
. expect ( "create_descriptor_chain failed" ) ;
708
- let mut reader = Reader :: new ( & memory, chain. clone ( ) ) . expect ( "failed to create Reader" ) ;
707
+ let mut reader =
708
+ Reader :: < ( ) > :: new ( & memory, chain. clone ( ) ) . expect ( "failed to create Reader" ) ;
709
709
710
710
let other = reader. split_at ( 32 ) . expect ( "failed to split Reader" ) ;
711
711
assert_eq ! ( reader. available_bytes( ) , 32 ) ;
712
712
assert_eq ! ( other. available_bytes( ) , 96 ) ;
713
713
714
- let mut writer = Writer :: new ( & memory, chain. clone ( ) ) . expect ( "failed to create Writer" ) ;
714
+ let mut writer =
715
+ Writer :: < ( ) > :: new ( & memory, chain. clone ( ) ) . expect ( "failed to create Writer" ) ;
715
716
let other = writer. split_at ( 64 ) . expect ( "failed to split Writer" ) ;
716
717
assert_eq ! ( writer. available_bytes( ) , 64 ) ;
717
718
assert_eq ! ( other. available_bytes( ) , 4 ) ;
@@ -738,7 +739,7 @@ mod tests {
738
739
0 ,
739
740
)
740
741
. expect ( "create_descriptor_chain failed" ) ;
741
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
742
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
742
743
743
744
let other = reader. split_at ( 24 ) . expect ( "failed to split Reader" ) ;
744
745
assert_eq ! ( reader. available_bytes( ) , 24 ) ;
@@ -766,7 +767,7 @@ mod tests {
766
767
0 ,
767
768
)
768
769
. expect ( "create_descriptor_chain failed" ) ;
769
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
770
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
770
771
771
772
let other = reader. split_at ( 128 ) . expect ( "failed to split Reader" ) ;
772
773
assert_eq ! ( reader. available_bytes( ) , 128 ) ;
@@ -794,7 +795,7 @@ mod tests {
794
795
0 ,
795
796
)
796
797
. expect ( "create_descriptor_chain failed" ) ;
797
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
798
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
798
799
799
800
let other = reader. split_at ( 0 ) . expect ( "failed to split Reader" ) ;
800
801
assert_eq ! ( reader. available_bytes( ) , 0 ) ;
@@ -822,7 +823,7 @@ mod tests {
822
823
0 ,
823
824
)
824
825
. expect ( "create_descriptor_chain failed" ) ;
825
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
826
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
826
827
827
828
if reader. split_at ( 256 ) . is_ok ( ) {
828
829
panic ! ( "successfully split Reader with out of bounds offset" ) ;
@@ -843,7 +844,7 @@ mod tests {
843
844
0 ,
844
845
)
845
846
. expect ( "create_descriptor_chain failed" ) ;
846
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
847
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
847
848
848
849
let mut buf = [ 0u8 ; 64 ] ;
849
850
assert_eq ! (
@@ -866,7 +867,7 @@ mod tests {
866
867
0 ,
867
868
)
868
869
. expect ( "create_descriptor_chain failed" ) ;
869
- let mut writer = Writer :: new ( & memory, chain) . expect ( "failed to create Writer" ) ;
870
+ let mut writer = Writer :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Writer" ) ;
870
871
871
872
let buf = [ 0xdeu8 ; 64 ] ;
872
873
assert_eq ! (
0 commit comments