mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-07-16 14:17:16 +00:00
Issue from beta verion of clippy: Error: --> vm-virtio/src/queue.rs:700:59 | 700 | if let Some(used_event) = self.get_used_event(&mem) { | ^^^^ help: change this to: `mem` | = note: `-D clippy::needless-borrow` implied by `-D warnings` = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow Signed-off-by: Bo Chen <chen.bo@intel.com>
68 lines
1.5 KiB
Rust
68 lines
1.5 KiB
Rust
// Copyright © 2019 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
use vm_memory::ByteValued;
|
|
|
|
#[repr(packed)]
|
|
#[derive(Clone, Copy, Default)]
|
|
pub struct Rsdp {
|
|
pub signature: [u8; 8],
|
|
pub checksum: u8,
|
|
pub oem_id: [u8; 6],
|
|
pub revision: u8,
|
|
_rsdt_addr: u32,
|
|
pub length: u32,
|
|
pub xsdt_addr: u64,
|
|
pub extended_checksum: u8,
|
|
_reserved: [u8; 3],
|
|
}
|
|
|
|
unsafe impl ByteValued for Rsdp {}
|
|
|
|
impl Rsdp {
|
|
pub fn new(oem_id: [u8; 6], xsdt_addr: u64) -> Self {
|
|
let mut rsdp = Rsdp {
|
|
signature: *b"RSD PTR ",
|
|
checksum: 0,
|
|
oem_id,
|
|
revision: 2,
|
|
_rsdt_addr: 0,
|
|
length: std::mem::size_of::<Rsdp>() as u32,
|
|
xsdt_addr,
|
|
extended_checksum: 0,
|
|
_reserved: [0; 3],
|
|
};
|
|
|
|
rsdp.checksum = super::generate_checksum(&rsdp.as_slice()[0..19]);
|
|
rsdp.extended_checksum = super::generate_checksum(rsdp.as_slice());
|
|
rsdp
|
|
}
|
|
|
|
pub fn len() -> usize {
|
|
std::mem::size_of::<Rsdp>()
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::Rsdp;
|
|
use vm_memory::bytes::ByteValued;
|
|
|
|
#[test]
|
|
fn test_rsdp() {
|
|
let rsdp = Rsdp::new(*b"CHYPER", 0xdead_beef);
|
|
let sum = rsdp
|
|
.as_slice()
|
|
.iter()
|
|
.fold(0u8, |acc, x| acc.wrapping_add(*x));
|
|
assert_eq!(sum, 0);
|
|
let sum: u8 = rsdp
|
|
.as_slice()
|
|
.iter()
|
|
.fold(0u8, |acc, x| acc.wrapping_add(*x));
|
|
assert_eq!(sum, 0);
|
|
}
|
|
}
|