mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-11-05 11:31:14 +00:00
32 lines
796 B
Rust
32 lines
796 B
Rust
|
// Copyright © 2021 Intel Corporation
|
||
|
//
|
||
|
// SPDX-License-Identifier: Apache-2.0
|
||
|
|
||
|
use byteorder::{BigEndian, ByteOrder};
|
||
|
use std::result::Result;
|
||
|
use uuid::Uuid;
|
||
|
|
||
|
macro_rules! div_round_up {
|
||
|
($n:expr,$d:expr) => {
|
||
|
($n + $d - 1) / $d
|
||
|
};
|
||
|
}
|
||
|
|
||
|
pub mod vhdx;
|
||
|
mod vhdx_bat;
|
||
|
mod vhdx_header;
|
||
|
mod vhdx_io;
|
||
|
mod vhdx_metadata;
|
||
|
|
||
|
pub(crate) fn uuid_from_guid(buf: &[u8]) -> Result<Uuid, uuid::Error> {
|
||
|
// The first 3 fields of UUID are stored in Big Endian format, and
|
||
|
// the last 8 bytes are stored as byte array. Therefore, we read the
|
||
|
// first 3 fields in Big Endian format instead of Little Endian.
|
||
|
Uuid::from_fields_le(
|
||
|
BigEndian::read_u32(&buf[0..4]),
|
||
|
BigEndian::read_u16(&buf[4..6]),
|
||
|
BigEndian::read_u16(&buf[6..8]),
|
||
|
&buf[8..16],
|
||
|
)
|
||
|
}
|