@@ -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,8 @@ 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 = Reader :: < ( ) > :: new ( & memory, chain. clone ( ) ) . expect ( "failed to create Reader" ) ;
595
+ let mut writer = Writer :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Writer" ) ;
598
596
599
597
assert_eq ! ( reader. bytes_read( ) , 0 ) ;
600
598
assert_eq ! ( writer. bytes_written( ) , 0 ) ;
@@ -636,7 +634,7 @@ mod tests {
636
634
123 ,
637
635
)
638
636
. expect ( "create_descriptor_chain failed" ) ;
639
- let mut writer = Writer :: new ( & memory, chain_writer) . expect ( "failed to create Writer" ) ;
637
+ let mut writer = Writer :: < ( ) > :: new ( & memory, chain_writer) . expect ( "failed to create Writer" ) ;
640
638
if let Err ( e) = writer. write_obj ( secret) {
641
639
panic ! ( "write_obj should not fail here: {:?}" , e) ;
642
640
}
@@ -649,7 +647,7 @@ mod tests {
649
647
123 ,
650
648
)
651
649
. expect ( "create_descriptor_chain failed" ) ;
652
- let mut reader = Reader :: new ( & memory, chain_reader) . expect ( "failed to create Reader" ) ;
650
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain_reader) . expect ( "failed to create Reader" ) ;
653
651
match reader. read_obj :: < Le32 > ( ) {
654
652
Err ( e) => panic ! ( "read_obj should not fail here: {:?}" , e) ,
655
653
Ok ( read_secret) => assert_eq ! ( read_secret, secret) ,
@@ -671,7 +669,7 @@ mod tests {
671
669
)
672
670
. expect ( "create_descriptor_chain failed" ) ;
673
671
674
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
672
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
675
673
676
674
let mut buf = vec ! [ 0 ; 1024 ] ;
677
675
@@ -705,13 +703,13 @@ mod tests {
705
703
0 ,
706
704
)
707
705
. expect ( "create_descriptor_chain failed" ) ;
708
- let mut reader = Reader :: new ( & memory, chain. clone ( ) ) . expect ( "failed to create Reader" ) ;
706
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain. clone ( ) ) . expect ( "failed to create Reader" ) ;
709
707
710
708
let other = reader. split_at ( 32 ) . expect ( "failed to split Reader" ) ;
711
709
assert_eq ! ( reader. available_bytes( ) , 32 ) ;
712
710
assert_eq ! ( other. available_bytes( ) , 96 ) ;
713
711
714
- let mut writer = Writer :: new ( & memory, chain. clone ( ) ) . expect ( "failed to create Writer" ) ;
712
+ let mut writer = Writer :: < ( ) > :: new ( & memory, chain. clone ( ) ) . expect ( "failed to create Writer" ) ;
715
713
let other = writer. split_at ( 64 ) . expect ( "failed to split Writer" ) ;
716
714
assert_eq ! ( writer. available_bytes( ) , 64 ) ;
717
715
assert_eq ! ( other. available_bytes( ) , 4 ) ;
@@ -738,7 +736,7 @@ mod tests {
738
736
0 ,
739
737
)
740
738
. expect ( "create_descriptor_chain failed" ) ;
741
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
739
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
742
740
743
741
let other = reader. split_at ( 24 ) . expect ( "failed to split Reader" ) ;
744
742
assert_eq ! ( reader. available_bytes( ) , 24 ) ;
@@ -766,7 +764,7 @@ mod tests {
766
764
0 ,
767
765
)
768
766
. expect ( "create_descriptor_chain failed" ) ;
769
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
767
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
770
768
771
769
let other = reader. split_at ( 128 ) . expect ( "failed to split Reader" ) ;
772
770
assert_eq ! ( reader. available_bytes( ) , 128 ) ;
@@ -794,7 +792,7 @@ mod tests {
794
792
0 ,
795
793
)
796
794
. expect ( "create_descriptor_chain failed" ) ;
797
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
795
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
798
796
799
797
let other = reader. split_at ( 0 ) . expect ( "failed to split Reader" ) ;
800
798
assert_eq ! ( reader. available_bytes( ) , 0 ) ;
@@ -822,7 +820,7 @@ mod tests {
822
820
0 ,
823
821
)
824
822
. expect ( "create_descriptor_chain failed" ) ;
825
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
823
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
826
824
827
825
if reader. split_at ( 256 ) . is_ok ( ) {
828
826
panic ! ( "successfully split Reader with out of bounds offset" ) ;
@@ -843,7 +841,7 @@ mod tests {
843
841
0 ,
844
842
)
845
843
. expect ( "create_descriptor_chain failed" ) ;
846
- let mut reader = Reader :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
844
+ let mut reader = Reader :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Reader" ) ;
847
845
848
846
let mut buf = [ 0u8 ; 64 ] ;
849
847
assert_eq ! (
@@ -866,7 +864,7 @@ mod tests {
866
864
0 ,
867
865
)
868
866
. expect ( "create_descriptor_chain failed" ) ;
869
- let mut writer = Writer :: new ( & memory, chain) . expect ( "failed to create Writer" ) ;
867
+ let mut writer = Writer :: < ( ) > :: new ( & memory, chain) . expect ( "failed to create Writer" ) ;
870
868
871
869
let buf = [ 0xdeu8 ; 64 ] ;
872
870
assert_eq ! (
0 commit comments