@@ -11,6 +11,7 @@ use core::ptr;
11
11
use core:: sync:: atomic:: { fence, Ordering } ;
12
12
13
13
use align_address:: Align ;
14
+ use zerocopy:: AsBytes ;
14
15
15
16
use self :: error:: VqPackedError ;
16
17
use super :: super :: features:: Features ;
@@ -20,8 +21,8 @@ use super::super::transport::mmio::{ComCfg, NotifCfg, NotifCtrl};
20
21
use super :: super :: transport:: pci:: { ComCfg , NotifCfg , NotifCtrl } ;
21
22
use super :: error:: VirtqError ;
22
23
use super :: {
23
- AsSliceU8 , BuffSpec , Buffer , BufferToken , Bytes , DescrFlags , MemDescr , MemPool , Pinned ,
24
- Transfer , TransferState , TransferToken , Virtq , VqIndex , VqSize ,
24
+ BuffSpec , Buffer , BufferToken , Bytes , DescrFlags , MemDescr , MemPool , Pinned , Transfer ,
25
+ TransferState , TransferToken , Virtq , VqIndex , VqSize ,
25
26
} ;
26
27
use crate :: arch:: mm:: paging:: { BasePageSize , PageSize } ;
27
28
use crate :: arch:: mm:: { paging, VirtAddr } ;
@@ -1314,7 +1315,7 @@ impl PackedVq {
1314
1315
}
1315
1316
1316
1317
/// See `Virtq.prep_transfer_from_raw()` documentation.
1317
- pub fn prep_transfer_from_raw < T : AsSliceU8 + ' static , K : AsSliceU8 + ' static > (
1318
+ pub fn prep_transfer_from_raw < T : AsBytes + ' static , K : AsBytes + ' static > (
1318
1319
& self ,
1319
1320
master : Rc < Virtq > ,
1320
1321
send : Option < ( * mut T , BuffSpec < ' _ > ) > ,
@@ -1325,7 +1326,7 @@ impl PackedVq {
1325
1326
( Some ( ( send_data, send_spec) ) , None ) => {
1326
1327
match send_spec {
1327
1328
BuffSpec :: Single ( size) => {
1328
- let data_slice = unsafe { ( * send_data) . as_slice_u8 ( ) } ;
1329
+ let data_slice = unsafe { ( * send_data) . as_bytes ( ) } ;
1329
1330
1330
1331
// Buffer must have the right size
1331
1332
if data_slice. len ( ) != size. into ( ) {
@@ -1358,7 +1359,7 @@ impl PackedVq {
1358
1359
} )
1359
1360
}
1360
1361
BuffSpec :: Multiple ( size_lst) => {
1361
- let data_slice = unsafe { ( * send_data) . as_slice_u8 ( ) } ;
1362
+ let data_slice = unsafe { ( * send_data) . as_bytes ( ) } ;
1362
1363
let mut desc_lst: Vec < MemDescr > = Vec :: with_capacity ( size_lst. len ( ) ) ;
1363
1364
let mut index = 0usize ;
1364
1365
@@ -1399,7 +1400,7 @@ impl PackedVq {
1399
1400
} )
1400
1401
}
1401
1402
BuffSpec :: Indirect ( size_lst) => {
1402
- let data_slice = unsafe { ( * send_data) . as_slice_u8 ( ) } ;
1403
+ let data_slice = unsafe { ( * send_data) . as_bytes ( ) } ;
1403
1404
let mut desc_lst: Vec < MemDescr > = Vec :: with_capacity ( size_lst. len ( ) ) ;
1404
1405
let mut index = 0usize ;
1405
1406
@@ -1447,7 +1448,7 @@ impl PackedVq {
1447
1448
( None , Some ( ( recv_data, recv_spec) ) ) => {
1448
1449
match recv_spec {
1449
1450
BuffSpec :: Single ( size) => {
1450
- let data_slice = unsafe { ( * recv_data) . as_slice_u8 ( ) } ;
1451
+ let data_slice = unsafe { ( * recv_data) . as_bytes ( ) } ;
1451
1452
1452
1453
// Buffer must have the right size
1453
1454
if data_slice. len ( ) != size. into ( ) {
@@ -1480,7 +1481,7 @@ impl PackedVq {
1480
1481
} )
1481
1482
}
1482
1483
BuffSpec :: Multiple ( size_lst) => {
1483
- let data_slice = unsafe { ( * recv_data) . as_slice_u8 ( ) } ;
1484
+ let data_slice = unsafe { ( * recv_data) . as_bytes ( ) } ;
1484
1485
let mut desc_lst: Vec < MemDescr > = Vec :: with_capacity ( size_lst. len ( ) ) ;
1485
1486
let mut index = 0usize ;
1486
1487
@@ -1521,7 +1522,7 @@ impl PackedVq {
1521
1522
} )
1522
1523
}
1523
1524
BuffSpec :: Indirect ( size_lst) => {
1524
- let data_slice = unsafe { ( * recv_data) . as_slice_u8 ( ) } ;
1525
+ let data_slice = unsafe { ( * recv_data) . as_bytes ( ) } ;
1525
1526
let mut desc_lst: Vec < MemDescr > = Vec :: with_capacity ( size_lst. len ( ) ) ;
1526
1527
let mut index = 0usize ;
1527
1528
@@ -1569,7 +1570,7 @@ impl PackedVq {
1569
1570
( Some ( ( send_data, send_spec) ) , Some ( ( recv_data, recv_spec) ) ) => {
1570
1571
match ( send_spec, recv_spec) {
1571
1572
( BuffSpec :: Single ( send_size) , BuffSpec :: Single ( recv_size) ) => {
1572
- let send_data_slice = unsafe { ( * send_data) . as_slice_u8 ( ) } ;
1573
+ let send_data_slice = unsafe { ( * send_data) . as_bytes ( ) } ;
1573
1574
1574
1575
// Buffer must have the right size
1575
1576
if send_data_slice. len ( ) != send_size. into ( ) {
@@ -1584,7 +1585,7 @@ impl PackedVq {
1584
1585
Err ( vq_err) => return Err ( vq_err) ,
1585
1586
} ;
1586
1587
1587
- let recv_data_slice = unsafe { ( * recv_data) . as_slice_u8 ( ) } ;
1588
+ let recv_data_slice = unsafe { ( * recv_data) . as_bytes ( ) } ;
1588
1589
1589
1590
// Buffer must have the right size
1590
1591
if recv_data_slice. len ( ) != recv_size. into ( ) {
@@ -1621,7 +1622,7 @@ impl PackedVq {
1621
1622
} )
1622
1623
}
1623
1624
( BuffSpec :: Single ( send_size) , BuffSpec :: Multiple ( recv_size_lst) ) => {
1624
- let send_data_slice = unsafe { ( * send_data) . as_slice_u8 ( ) } ;
1625
+ let send_data_slice = unsafe { ( * send_data) . as_bytes ( ) } ;
1625
1626
1626
1627
// Buffer must have the right size
1627
1628
if send_data_slice. len ( ) != send_size. into ( ) {
@@ -1636,7 +1637,7 @@ impl PackedVq {
1636
1637
Err ( vq_err) => return Err ( vq_err) ,
1637
1638
} ;
1638
1639
1639
- let recv_data_slice = unsafe { ( * recv_data) . as_slice_u8 ( ) } ;
1640
+ let recv_data_slice = unsafe { ( * recv_data) . as_bytes ( ) } ;
1640
1641
let mut recv_desc_lst: Vec < MemDescr > =
1641
1642
Vec :: with_capacity ( recv_size_lst. len ( ) ) ;
1642
1643
let mut index = 0usize ;
@@ -1684,7 +1685,7 @@ impl PackedVq {
1684
1685
} )
1685
1686
}
1686
1687
( BuffSpec :: Multiple ( send_size_lst) , BuffSpec :: Multiple ( recv_size_lst) ) => {
1687
- let send_data_slice = unsafe { ( * send_data) . as_slice_u8 ( ) } ;
1688
+ let send_data_slice = unsafe { ( * send_data) . as_bytes ( ) } ;
1688
1689
let mut send_desc_lst: Vec < MemDescr > =
1689
1690
Vec :: with_capacity ( send_size_lst. len ( ) ) ;
1690
1691
let mut index = 0usize ;
@@ -1710,7 +1711,7 @@ impl PackedVq {
1710
1711
index += usize:: from ( * byte) ;
1711
1712
}
1712
1713
1713
- let recv_data_slice = unsafe { ( * recv_data) . as_slice_u8 ( ) } ;
1714
+ let recv_data_slice = unsafe { ( * recv_data) . as_bytes ( ) } ;
1714
1715
let mut recv_desc_lst: Vec < MemDescr > =
1715
1716
Vec :: with_capacity ( recv_size_lst. len ( ) ) ;
1716
1717
let mut index = 0usize ;
@@ -1758,7 +1759,7 @@ impl PackedVq {
1758
1759
} )
1759
1760
}
1760
1761
( BuffSpec :: Multiple ( send_size_lst) , BuffSpec :: Single ( recv_size) ) => {
1761
- let send_data_slice = unsafe { ( * send_data) . as_slice_u8 ( ) } ;
1762
+ let send_data_slice = unsafe { ( * send_data) . as_bytes ( ) } ;
1762
1763
let mut send_desc_lst: Vec < MemDescr > =
1763
1764
Vec :: with_capacity ( send_size_lst. len ( ) ) ;
1764
1765
let mut index = 0usize ;
@@ -1784,7 +1785,7 @@ impl PackedVq {
1784
1785
index += usize:: from ( * byte) ;
1785
1786
}
1786
1787
1787
- let recv_data_slice = unsafe { ( * recv_data) . as_slice_u8 ( ) } ;
1788
+ let recv_data_slice = unsafe { ( * recv_data) . as_bytes ( ) } ;
1788
1789
1789
1790
// Buffer must have the right size
1790
1791
if recv_data_slice. len ( ) != recv_size. into ( ) {
@@ -1821,7 +1822,7 @@ impl PackedVq {
1821
1822
} )
1822
1823
}
1823
1824
( BuffSpec :: Indirect ( send_size_lst) , BuffSpec :: Indirect ( recv_size_lst) ) => {
1824
- let send_data_slice = unsafe { ( * send_data) . as_slice_u8 ( ) } ;
1825
+ let send_data_slice = unsafe { ( * send_data) . as_bytes ( ) } ;
1825
1826
let mut send_desc_lst: Vec < MemDescr > =
1826
1827
Vec :: with_capacity ( send_size_lst. len ( ) ) ;
1827
1828
let mut index = 0usize ;
@@ -1844,7 +1845,7 @@ impl PackedVq {
1844
1845
index += usize:: from ( * byte) ;
1845
1846
}
1846
1847
1847
- let recv_data_slice = unsafe { ( * recv_data) . as_slice_u8 ( ) } ;
1848
+ let recv_data_slice = unsafe { ( * recv_data) . as_bytes ( ) } ;
1848
1849
let mut recv_desc_lst: Vec < MemDescr > =
1849
1850
Vec :: with_capacity ( recv_size_lst. len ( ) ) ;
1850
1851
let mut index = 0usize ;
0 commit comments