From e04656dcd907f514e836b53d4be1047484754412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kr=C3=B6ning?= Date: Mon, 27 Nov 2023 13:45:31 +0100 Subject: [PATCH] build(deps): upgrade to byte-unit 5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Kröning --- Cargo.lock | 21 +++++++++++++++++++-- Cargo.toml | 2 +- benches/vm/mod.rs | 2 +- src/params.rs | 28 ++++++++++++++++------------ tests/common.rs | 7 +++++-- 5 files changed, 42 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7cf4365f..b27bfd1c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -71,6 +71,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + [[package]] name = "assert_fs" version = "1.0.13" @@ -134,10 +140,11 @@ checksum = "2126f73a8916d144752737656d641afbcf2d2a0227ec457fc9e60151b27b54ab" [[package]] name = "byte-unit" -version = "4.0.19" +version = "5.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da78b32057b8fdfc352504708feeba7216dcd65a2c9ab02978cbd288d1279b6c" +checksum = "bc40af92e0f7f964b7ab1ebc81315cce78fc484802d534143321c956f58d7be3" dependencies = [ + "rust_decimal", "serde", "utf8-width", ] @@ -905,6 +912,16 @@ dependencies = [ "byteorder", ] +[[package]] +name = "rust_decimal" +version = "1.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" +dependencies = [ + "arrayvec", + "num-traits", +] + [[package]] name = "rustix" version = "0.37.11" diff --git a/Cargo.toml b/Cargo.toml index f1aaa8e3..0c04b8cb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ default = [] instrument = ["rftrace", "rftrace-frontend"] [dependencies] -byte-unit = { version = "4.0", default-features = false, features = ["std"] } +byte-unit = { version = "5", features = ["byte"] } clap = { version = "4.4", features = ["derive", "env"] } core_affinity = "0.8" either = "1.9" diff --git a/benches/vm/mod.rs b/benches/vm/mod.rs index b6f54e79..acb7ab39 100644 --- a/benches/vm/mod.rs +++ b/benches/vm/mod.rs @@ -7,7 +7,7 @@ pub fn load_vm_hello_world(c: &mut Criterion) { .iter() .collect(); let params = Params { - memory_size: Byte::from_bytes(1024 * 100000).try_into().unwrap(), + memory_size: Byte::from_u64(1024 * 100_000).try_into().unwrap(), ..Default::default() }; let mut vm = Uhyve::new(path, params).expect("Unable to create VM"); diff --git a/src/params.rs b/src/params.rs index b0a42950..78a2dc8a 100644 --- a/src/params.rs +++ b/src/params.rs @@ -5,7 +5,7 @@ use std::{ str::FromStr, }; -use byte_unit::{n_mib_bytes, AdjustedByte, Byte, ByteError}; +use byte_unit::{Byte, Unit}; use thiserror::Error; #[derive(Debug, Clone)] @@ -103,32 +103,38 @@ pub struct GuestMemorySize(Byte); impl GuestMemorySize { const fn minimum() -> Byte { - Byte::from_bytes(16 * 1024 * 1024) + let Some(byte) = Byte::from_u64_with_unit(16, Unit::MiB) else { + panic!() + }; + byte } pub fn get(self) -> usize { - self.0.get_bytes().try_into().unwrap() + self.0.as_u64().try_into().unwrap() } } impl Default for GuestMemorySize { fn default() -> Self { - Self(Byte::from_bytes(64 * 1024 * 1024)) + Self(Byte::from_u64_with_unit(64, Unit::MiB).unwrap()) } } impl fmt::Display for GuestMemorySize { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - self.0.get_appropriate_unit(true).fmt(f) + self.0.fmt(f) } } #[derive(Error, Debug)] pub enum InvalidGuestMemorySizeError { - #[error("Not enough guest memory. Must be at least {} (is {0})", GuestMemorySize::minimum().get_appropriate_unit(true))] - MemoryTooSmall(AdjustedByte), + #[error( + "Not enough guest memory. Must be at least {} (is {0})", + GuestMemorySize::minimum() + )] + MemoryTooSmall(Byte), #[error("Invalid amount of guest memory. Must be a multiple of 2 MiB (is {0})")] - NotAHugepage(AdjustedByte), + NotAHugepage(Byte), } impl TryFrom for GuestMemorySize { @@ -136,10 +142,8 @@ impl TryFrom for GuestMemorySize { fn try_from(value: Byte) -> Result { if value < Self::minimum() { - let value = value.get_appropriate_unit(true); Err(InvalidGuestMemorySizeError::MemoryTooSmall(value)) - } else if value.get_bytes() % n_mib_bytes!(2) != 0 { - let value = value.get_appropriate_unit(true); + } else if value.as_u64() % Byte::from_u64_with_unit(2, Unit::MiB).unwrap().as_u64() != 0 { Err(InvalidGuestMemorySizeError::NotAHugepage(value)) } else { Ok(Self(value)) @@ -150,7 +154,7 @@ impl TryFrom for GuestMemorySize { #[derive(Error, Debug)] pub enum ParseByteError { #[error(transparent)] - Parse(#[from] ByteError), + Parse(#[from] byte_unit::ParseError), #[error(transparent)] InvalidMemorySize(#[from] InvalidGuestMemorySizeError), diff --git a/tests/common.rs b/tests/common.rs index d590e047..173f1225 100644 --- a/tests/common.rs +++ b/tests/common.rs @@ -4,7 +4,7 @@ use std::{ process::Command, }; -use byte_unit::Byte; +use byte_unit::{Byte, Unit}; use uhyvelib::{params::Params, Uhyve}; /// Uses Cargo to build a kernel in the `tests/test-kernels` directory. @@ -42,7 +42,10 @@ pub fn run_simple_vm(kernel_path: PathBuf) { let params = Params { verbose: true, cpu_count: 2.try_into().unwrap(), - memory_size: Byte::from_bytes(32 * 1024 * 1024).try_into().unwrap(), + memory_size: Byte::from_u64_with_unit(32, Unit::MiB) + .unwrap() + .try_into() + .unwrap(), ..Default::default() }; let code = Uhyve::new(kernel_path, params).unwrap().run(None);