diff --git a/docs/tracing.md b/docs/tracing.md index ede82b148be..dd9f284c595 100644 --- a/docs/tracing.md +++ b/docs/tracing.md @@ -46,7 +46,7 @@ clippy-tracing \ --action fix \ --path ./src \ --exclude benches \ - --exclude virtio/gen,bindings.rs,net/gen \ + --exclude virtio/generated,bindings.rs,net/generated \ --exclude log-instrument-macros/,log-instrument/,clippy-tracing/ \ --exclude vmm_config/logger.rs,logger/,signal_handler.rs,time.rs ``` diff --git a/rust-toolchain.toml b/rust-toolchain.toml index af10d0da481..6bf302b6e1a 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -11,7 +11,7 @@ # allowlisted using a toolchain that requires it, causing the A/B-test to # always fail. [toolchain] -channel = "1.83.0" +channel = "1.85.0" targets = ["x86_64-unknown-linux-musl", "aarch64-unknown-linux-musl"] profile = "minimal" diff --git a/src/acpi-tables/Cargo.toml b/src/acpi-tables/Cargo.toml index 717ec5d44c5..d98e8b93ded 100644 --- a/src/acpi-tables/Cargo.toml +++ b/src/acpi-tables/Cargo.toml @@ -2,7 +2,7 @@ name = "acpi_tables" version = "0.1.0" authors = ["The Cloud Hypervisor Authors", "Amazon Firecracker team "] -edition = "2021" +edition = "2024" license = "Apache-2.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/src/acpi-tables/src/aml.rs b/src/acpi-tables/src/aml.rs index 69feb5b004f..5c7e91a2d6a 100644 --- a/src/acpi-tables/src/aml.rs +++ b/src/acpi-tables/src/aml.rs @@ -265,12 +265,12 @@ impl EisaName { let data = name.as_bytes(); - let value: u32 = (u32::from(data[0] - 0x40) << 26 - | u32::from(data[1] - 0x40) << 21 - | u32::from(data[2] - 0x40) << 16 - | name.chars().nth(3).unwrap().to_digit(16).unwrap() << 12 - | name.chars().nth(4).unwrap().to_digit(16).unwrap() << 8 - | name.chars().nth(5).unwrap().to_digit(16).unwrap() << 4 + let value: u32 = ((u32::from(data[0] - 0x40) << 26) + | (u32::from(data[1] - 0x40) << 21) + | (u32::from(data[2] - 0x40) << 16) + | (name.chars().nth(3).unwrap().to_digit(16).unwrap() << 12) + | (name.chars().nth(4).unwrap().to_digit(16).unwrap() << 8) + | (name.chars().nth(5).unwrap().to_digit(16).unwrap() << 4) | name.chars().nth(6).unwrap().to_digit(16).unwrap()) .swap_bytes(); @@ -439,7 +439,7 @@ where r#type: AddressSpaceType::Memory, min, max, - type_flags: (cacheable as u8) << 1 | u8::from(read_write), + type_flags: ((cacheable as u8) << 1) | u8::from(read_write), }) } @@ -471,7 +471,7 @@ where bytes.push(descriptor); // Word Address Space Descriptor bytes.extend_from_slice(&(TryInto::::try_into(length).unwrap()).to_le_bytes()); bytes.push(self.r#type as u8); // type - let generic_flags = 1 << 2 /* Min Fixed */ | 1 << 3; // Max Fixed + let generic_flags = (1 << 2) /* Min Fixed */ | (1 << 3); // Max Fixed bytes.push(generic_flags); bytes.push(self.type_flags); } @@ -591,9 +591,9 @@ impl Aml for Interrupt { fn append_aml_bytes(&self, bytes: &mut Vec) -> Result<(), AmlError> { bytes.push(0x89); // Extended IRQ Descriptor bytes.extend_from_slice(&6u16.to_le_bytes()); - let flags = u8::from(self.shared) << 3 - | u8::from(self.active_low) << 2 - | u8::from(self.edge_triggered) << 1 + let flags = (u8::from(self.shared) << 3) + | (u8::from(self.active_low) << 2) + | (u8::from(self.edge_triggered) << 1) | u8::from(self.consumer); bytes.push(flags); bytes.push(1u8); // count @@ -682,7 +682,7 @@ impl Aml for Method<'_> { fn append_aml_bytes(&self, bytes: &mut Vec) -> Result<(), AmlError> { let mut tmp = Vec::new(); self.path.append_aml_bytes(&mut tmp)?; - let flags: u8 = (self.args & 0x7) | u8::from(self.serialized) << 3; + let flags: u8 = (self.args & 0x7) | (u8::from(self.serialized) << 3); tmp.push(flags); for child in &self.children { child.append_aml_bytes(&mut tmp)?; @@ -766,7 +766,7 @@ impl Aml for Field { let mut tmp = Vec::new(); self.path.append_aml_bytes(&mut tmp)?; - let flags: u8 = self.access_type as u8 | (self.update_rule as u8) << 5; + let flags: u8 = self.access_type as u8 | ((self.update_rule as u8) << 5); tmp.push(flags); for field in self.fields.iter() { @@ -1263,15 +1263,17 @@ mod tests { assert_eq!( Scope::new( "_SB_.MBRD".try_into().unwrap(), - vec![&Name::new( - "_CRS".try_into().unwrap(), - &ResourceTemplate::new(vec![&Memory32Fixed::new( - true, - 0xE800_0000, - 0x1000_0000 - )]) - ) - .unwrap()] + vec![ + &Name::new( + "_CRS".try_into().unwrap(), + &ResourceTemplate::new(vec![&Memory32Fixed::new( + true, + 0xE800_0000, + 0x1000_0000 + )]) + ) + .unwrap() + ] ) .to_aml_bytes() .unwrap(), @@ -1438,13 +1440,15 @@ mod tests { assert_eq!( Name::new( "_CRS".try_into().unwrap(), - &ResourceTemplate::new(vec![&AddressSpace::new_memory( - AddressSpaceCacheable::Cacheable, - true, - 0x8_0000_0000u64, - 0xf_ffff_ffffu64 - ) - .unwrap()]) + &ResourceTemplate::new(vec![ + &AddressSpace::new_memory( + AddressSpaceCacheable::Cacheable, + true, + 0x8_0000_0000u64, + 0xf_ffff_ffffu64 + ) + .unwrap() + ]) ) .unwrap() .to_aml_bytes() @@ -1491,12 +1495,12 @@ mod tests { assert_eq!(create_pkg_length(&[0u8; 62], true), vec![63]); assert_eq!( create_pkg_length(&[0u8; 64], true), - vec![1 << 6 | (66 & 0xf), 66 >> 4] + vec![(1 << 6) | (66 & 0xf), 66 >> 4] ); assert_eq!( create_pkg_length(&[0u8; 4096], true), vec![ - 2 << 6 | (4099 & 0xf) as u8, + (2 << 6) | (4099 & 0xf) as u8, ((4099 >> 4) & 0xff).try_into().unwrap(), ((4099 >> 12) & 0xff).try_into().unwrap() ] @@ -1553,7 +1557,9 @@ mod tests { (&"_SB_.PCI0._HID".try_into().unwrap() as &Path) .to_aml_bytes() .unwrap(), - [0x2F, 0x03, 0x5F, 0x53, 0x42, 0x5F, 0x50, 0x43, 0x49, 0x30, 0x5F, 0x48, 0x49, 0x44] + [ + 0x2F, 0x03, 0x5F, 0x53, 0x42, 0x5F, 0x50, 0x43, 0x49, 0x30, 0x5F, 0x48, 0x49, 0x44 + ] ); } @@ -2007,13 +2013,15 @@ mod tests { vec![ &Name::new( "MR64".try_into().unwrap(), - &ResourceTemplate::new(vec![&AddressSpace::new_memory( - AddressSpaceCacheable::Cacheable, - true, - 0x0000_0000_0000_0000u64, - 0xFFFF_FFFF_FFFF_FFFEu64 - ) - .unwrap()]) + &ResourceTemplate::new(vec![ + &AddressSpace::new_memory( + AddressSpaceCacheable::Cacheable, + true, + 0x0000_0000_0000_0000u64, + 0xFFFF_FFFF_FFFF_FFFEu64 + ) + .unwrap() + ]) ) .unwrap(), &CreateField::::new( diff --git a/src/acpi-tables/src/dsdt.rs b/src/acpi-tables/src/dsdt.rs index 49b05918937..dfb7c9b1b84 100644 --- a/src/acpi-tables/src/dsdt.rs +++ b/src/acpi-tables/src/dsdt.rs @@ -6,7 +6,7 @@ use std::mem::size_of; use vm_memory::{Address, Bytes, GuestAddress, GuestMemory}; use zerocopy::IntoBytes; -use crate::{checksum, AcpiError, Result, Sdt, SdtHeader}; +use crate::{AcpiError, Result, Sdt, SdtHeader, checksum}; /// Differentiated System Description Table (DSDT) /// diff --git a/src/acpi-tables/src/fadt.rs b/src/acpi-tables/src/fadt.rs index 5a3a8e5694b..c14f62bf230 100644 --- a/src/acpi-tables/src/fadt.rs +++ b/src/acpi-tables/src/fadt.rs @@ -7,7 +7,7 @@ use vm_memory::{Bytes, GuestAddress, GuestMemory}; use zerocopy::little_endian::{U16, U32, U64}; use zerocopy::{Immutable, IntoBytes}; -use crate::{checksum, GenericAddressStructure, Result, Sdt, SdtHeader}; +use crate::{GenericAddressStructure, Result, Sdt, SdtHeader, checksum}; #[cfg(target_arch = "x86_64")] pub const IAPC_BOOT_ARG_FLAGS_VGA_NOT_PRESENT: u16 = 2; @@ -41,7 +41,7 @@ pub const FADT_F_HW_REDUCED_ACPI: u8 = 20; /// the pointer to the DSDT table. /// More information about this table can be found in the ACPI specification: /// https://uefi.org/specs/ACPI/6.5/05_ACPI_Software_Programming_Model.html#fixed-acpi-description-table-fadt -#[repr(packed)] +#[repr(C, packed)] #[derive(Debug, Copy, Clone, Default, IntoBytes, Immutable)] pub struct Fadt { header: SdtHeader, diff --git a/src/acpi-tables/src/lib.rs b/src/acpi-tables/src/lib.rs index 301a2d1cc95..321328047ed 100644 --- a/src/acpi-tables/src/lib.rs +++ b/src/acpi-tables/src/lib.rs @@ -49,7 +49,7 @@ pub enum AcpiError { pub type Result = std::result::Result; /// ACPI type representing memory addresses -#[repr(packed)] +#[repr(C, packed)] #[derive(IntoBytes, Immutable, Clone, Copy, Debug, Default)] pub struct GenericAddressStructure { pub address_space_id: u8, @@ -78,7 +78,7 @@ impl GenericAddressStructure { } /// Header included in all System Descriptor Tables -#[repr(packed)] +#[repr(C, packed)] #[derive(Clone, Debug, Copy, Default, IntoBytes, Immutable)] pub struct SdtHeader { pub signature: [u8; 4], diff --git a/src/acpi-tables/src/madt.rs b/src/acpi-tables/src/madt.rs index 28f5c108b40..eaef031e337 100644 --- a/src/acpi-tables/src/madt.rs +++ b/src/acpi-tables/src/madt.rs @@ -9,7 +9,7 @@ use vm_memory::{Address, Bytes, GuestAddress, GuestMemory}; use zerocopy::little_endian::U32; use zerocopy::{Immutable, IntoBytes}; -use crate::{checksum, AcpiError, Result, Sdt, SdtHeader}; +use crate::{AcpiError, Result, Sdt, SdtHeader, checksum}; const MADT_CPU_ENABLE_FLAG: u32 = 0; @@ -17,7 +17,7 @@ const MADT_CPU_ENABLE_FLAG: u32 = 0; // them as bytes in guest memory, so here we just ignore dead code to avoid having to name // everything with an underscore prefix #[allow(dead_code)] -#[repr(packed)] +#[repr(C, packed)] #[derive(Copy, Clone, Debug, Default, IntoBytes, Immutable)] pub struct LocalAPIC { r#type: u8, @@ -43,7 +43,7 @@ impl LocalAPIC { // them as bytes in guest memory, so here we just ignore dead code to avoid having to name // everything with an underscore prefix #[allow(dead_code)] -#[repr(packed)] +#[repr(C, packed)] #[derive(Copy, Clone, Debug, Default, IntoBytes, Immutable)] pub struct IoAPIC { r#type: u8, @@ -71,7 +71,7 @@ impl IoAPIC { // them as bytes in guest memory, so here we just ignore dead code to avoid having to name // everything with an underscore prefix #[allow(dead_code)] -#[repr(packed)] +#[repr(C, packed)] #[derive(Debug, IntoBytes, Immutable)] struct MadtHeader { sdt: SdtHeader, diff --git a/src/acpi-tables/src/rsdp.rs b/src/acpi-tables/src/rsdp.rs index aa413b3cdfb..06b3dfda4a3 100644 --- a/src/acpi-tables/src/rsdp.rs +++ b/src/acpi-tables/src/rsdp.rs @@ -8,7 +8,7 @@ use vm_memory::{Bytes, GuestAddress, GuestMemory}; use zerocopy::little_endian::{U32, U64}; use zerocopy::{Immutable, IntoBytes}; -use crate::{checksum, Result, Sdt}; +use crate::{Result, Sdt, checksum}; // clippy doesn't understand that we actually "use" the fields of this struct when we serialize // them as bytes in guest memory, so here we just ignore dead code to avoid having to name @@ -21,7 +21,7 @@ use crate::{checksum, Result, Sdt}; /// a pointer to XSDT /// More information about this structure can be found in the ACPI specification: /// https://uefi.org/specs/ACPI/6.5/05_ACPI_Software_Programming_Model.html#root-system-description-pointer-rsdp -#[repr(packed)] +#[repr(C, packed)] #[derive(Clone, Copy, Debug, Default, IntoBytes, Immutable)] pub struct Rsdp { signature: [u8; 8], diff --git a/src/acpi-tables/src/xsdt.rs b/src/acpi-tables/src/xsdt.rs index ed6798c1137..a11cadc6f75 100644 --- a/src/acpi-tables/src/xsdt.rs +++ b/src/acpi-tables/src/xsdt.rs @@ -8,7 +8,7 @@ use std::mem::size_of; use vm_memory::{Address, Bytes, GuestAddress, GuestMemory}; use zerocopy::IntoBytes; -use crate::{checksum, AcpiError, Result, Sdt, SdtHeader}; +use crate::{AcpiError, Result, Sdt, SdtHeader, checksum}; /// Extended System Description Table (XSDT) /// diff --git a/src/clippy-tracing/Cargo.toml b/src/clippy-tracing/Cargo.toml index 439f5730ee5..60bce291e42 100644 --- a/src/clippy-tracing/Cargo.toml +++ b/src/clippy-tracing/Cargo.toml @@ -2,7 +2,7 @@ name = "clippy-tracing" version = "0.1.0" authors = ["Amazon Firecracker team "] -edition = "2021" +edition = "2024" license = "Apache-2.0" [[bin]] diff --git a/src/clippy-tracing/src/main.rs b/src/clippy-tracing/src/main.rs index f39382f1324..c89fb6a5d37 100644 --- a/src/clippy-tracing/src/main.rs +++ b/src/clippy-tracing/src/main.rs @@ -271,7 +271,7 @@ fn exec() -> Result, ExecError> { // The file must not be a `build.rs` file. let not_build_file = !entry_path.ends_with("build.rs"); // The file must be a `.rs` file. - let is_rs_file = entry_path.extension().map_or(false, |ext| ext == "rs"); + let is_rs_file = entry_path.extension().is_some_and(|ext| ext == "rs"); if no_excluded_strings && not_build_file && is_rs_file { let file = OpenOptions::new() diff --git a/src/clippy-tracing/tests/integration_tests.rs b/src/clippy-tracing/tests/integration_tests.rs index 1a7af70dc7c..b62f08a1f2a 100644 --- a/src/clippy-tracing/tests/integration_tests.rs +++ b/src/clippy-tracing/tests/integration_tests.rs @@ -1,7 +1,7 @@ // Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -use std::fs::{remove_file, OpenOptions}; +use std::fs::{OpenOptions, remove_file}; use std::io::{Read, Write}; use std::process::Command; diff --git a/src/cpu-template-helper/Cargo.toml b/src/cpu-template-helper/Cargo.toml index 5bc7358d8e1..c3838faab86 100644 --- a/src/cpu-template-helper/Cargo.toml +++ b/src/cpu-template-helper/Cargo.toml @@ -2,7 +2,7 @@ name = "cpu-template-helper" version = "1.12.0-dev" authors = ["Amazon Firecracker team "] -edition = "2021" +edition = "2024" license = "Apache-2.0" [[bin]] diff --git a/src/cpu-template-helper/src/template/dump/aarch64.rs b/src/cpu-template-helper/src/template/dump/aarch64.rs index 8fd44ddcd14..3456298f521 100644 --- a/src/cpu-template-helper/src/template/dump/aarch64.rs +++ b/src/cpu-template-helper/src/template/dump/aarch64.rs @@ -1,7 +1,7 @@ // Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -use vmm::arch::aarch64::regs::{RegSize, PC, SYS_CNTPCT_EL0, SYS_CNTV_CVAL_EL0}; +use vmm::arch::aarch64::regs::{PC, RegSize, SYS_CNTPCT_EL0, SYS_CNTV_CVAL_EL0}; use vmm::cpu_config::aarch64::custom_cpu_template::RegisterModifier; use vmm::cpu_config::templates::{CpuConfiguration, CustomCpuTemplate, RegisterValueFilter}; use vmm::logger::warn; @@ -50,7 +50,7 @@ const REG_EXCLUSION_LIST: [u64; 3] = [ #[cfg(test)] mod tests { - use vmm::arch::aarch64::regs::{reg_size, Aarch64RegisterRef, Aarch64RegisterVec}; + use vmm::arch::aarch64::regs::{Aarch64RegisterRef, Aarch64RegisterVec, reg_size}; use super::*; diff --git a/src/cpu-template-helper/src/template/dump/x86_64.rs b/src/cpu-template-helper/src/template/dump/x86_64.rs index 75eae9d0a15..eaa2553a658 100644 --- a/src/cpu-template-helper/src/template/dump/x86_64.rs +++ b/src/cpu-template-helper/src/template/dump/x86_64.rs @@ -3,7 +3,8 @@ use std::collections::BTreeMap; -use vmm::arch::x86_64::gen::msr_index::*; +use vmm::MSR_RANGE; +use vmm::arch::x86_64::generated::msr_index::*; use vmm::arch::x86_64::msr::MsrRange; use vmm::cpu_config::templates::{CpuConfiguration, CustomCpuTemplate, RegisterValueFilter}; use vmm::cpu_config::x86_64::cpuid::common::get_vendor_id_from_host; @@ -11,7 +12,6 @@ use vmm::cpu_config::x86_64::cpuid::{Cpuid, VENDOR_ID_AMD}; use vmm::cpu_config::x86_64::custom_cpu_template::{ CpuidLeafModifier, CpuidRegister, CpuidRegisterModifier, RegisterModifier, }; -use vmm::MSR_RANGE; use crate::utils::x86_64::{cpuid_leaf_modifier, cpuid_reg_modifier, msr_modifier}; diff --git a/src/cpu-template-helper/src/template/strip/aarch64.rs b/src/cpu-template-helper/src/template/strip/aarch64.rs index 3465bc919ba..d22217e6077 100644 --- a/src/cpu-template-helper/src/template/strip/aarch64.rs +++ b/src/cpu-template-helper/src/template/strip/aarch64.rs @@ -4,7 +4,7 @@ use vmm::cpu_config::aarch64::custom_cpu_template::RegisterModifier; use vmm::cpu_config::templates::CustomCpuTemplate; -use crate::template::strip::{strip_common, StripError}; +use crate::template::strip::{StripError, strip_common}; use crate::utils::aarch64::RegModifierMap; #[allow(dead_code)] diff --git a/src/cpu-template-helper/src/template/strip/mod.rs b/src/cpu-template-helper/src/template/strip/mod.rs index 1777d1d571b..81e6539e098 100644 --- a/src/cpu-template-helper/src/template/strip/mod.rs +++ b/src/cpu-template-helper/src/template/strip/mod.rs @@ -86,7 +86,7 @@ where #[cfg(test)] mod tests { use super::*; - use crate::utils::tests::{mock_modifier, MockModifierMapKey}; + use crate::utils::tests::{MockModifierMapKey, mock_modifier}; #[test] fn test_strip_common_with_single_input() { diff --git a/src/cpu-template-helper/src/template/strip/x86_64.rs b/src/cpu-template-helper/src/template/strip/x86_64.rs index a9db18fc15b..69c93d3df81 100644 --- a/src/cpu-template-helper/src/template/strip/x86_64.rs +++ b/src/cpu-template-helper/src/template/strip/x86_64.rs @@ -4,7 +4,7 @@ use vmm::cpu_config::templates::CustomCpuTemplate; use vmm::cpu_config::x86_64::custom_cpu_template::{CpuidLeafModifier, RegisterModifier}; -use crate::template::strip::{strip_common, StripError}; +use crate::template::strip::{StripError, strip_common}; use crate::utils::x86_64::{CpuidModifierMap, MsrModifierMap}; #[allow(dead_code)] diff --git a/src/cpu-template-helper/src/template/verify/aarch64.rs b/src/cpu-template-helper/src/template/verify/aarch64.rs index 19a76fadcb0..48d50f10de3 100644 --- a/src/cpu-template-helper/src/template/verify/aarch64.rs +++ b/src/cpu-template-helper/src/template/verify/aarch64.rs @@ -3,7 +3,7 @@ use vmm::cpu_config::templates::CustomCpuTemplate; -use super::{verify_common, VerifyError}; +use super::{VerifyError, verify_common}; use crate::utils::aarch64::RegModifierMap; pub fn verify( diff --git a/src/cpu-template-helper/src/template/verify/mod.rs b/src/cpu-template-helper/src/template/verify/mod.rs index e168d2816c4..1a83f6ba1b2 100644 --- a/src/cpu-template-helper/src/template/verify/mod.rs +++ b/src/cpu-template-helper/src/template/verify/mod.rs @@ -62,7 +62,7 @@ where #[cfg(test)] mod tests { use super::*; - use crate::utils::tests::{mock_modifier, MockModifierMapKey}; + use crate::utils::tests::{MockModifierMapKey, mock_modifier}; #[test] fn test_verify_modifier_map_with_non_existing_key() { diff --git a/src/cpu-template-helper/src/template/verify/x86_64.rs b/src/cpu-template-helper/src/template/verify/x86_64.rs index 9885b16898f..12aa4f3a0cc 100644 --- a/src/cpu-template-helper/src/template/verify/x86_64.rs +++ b/src/cpu-template-helper/src/template/verify/x86_64.rs @@ -3,7 +3,7 @@ use vmm::cpu_config::templates::CustomCpuTemplate; -use super::{verify_common, VerifyError}; +use super::{VerifyError, verify_common}; use crate::utils::x86_64::{CpuidModifierMap, MsrModifierMap}; pub fn verify( @@ -34,8 +34,8 @@ mod tests { use super::*; use crate::utils::x86_64::{ - cpuid_leaf_modifier, cpuid_reg_modifier, msr_modifier, CpuidModifierMapKey, - MsrModifierMapKey, + CpuidModifierMapKey, MsrModifierMapKey, cpuid_leaf_modifier, cpuid_reg_modifier, + msr_modifier, }; macro_rules! cpuid_modifier_map { diff --git a/src/cpu-template-helper/src/utils/mod.rs b/src/cpu-template-helper/src/utils/mod.rs index b6d3465efd5..f23871df1a9 100644 --- a/src/cpu-template-helper/src/utils/mod.rs +++ b/src/cpu-template-helper/src/utils/mod.rs @@ -9,12 +9,12 @@ use std::io::Write; use std::path::{Path, PathBuf}; use std::sync::{Arc, Mutex}; -use vmm::builder::{build_microvm_for_boot, StartMicrovmError}; +use vmm::builder::{StartMicrovmError, build_microvm_for_boot}; use vmm::cpu_config::templates::{CustomCpuTemplate, Numeric}; use vmm::resources::VmResources; use vmm::seccomp::get_empty_filters; use vmm::vmm_config::instance_info::{InstanceInfo, VmState}; -use vmm::{EventManager, Vmm, HTTP_MAX_PAYLOAD_SIZE}; +use vmm::{EventManager, HTTP_MAX_PAYLOAD_SIZE, Vmm}; use vmm_sys_util::tempfile::TempFile; #[cfg(target_arch = "aarch64")] diff --git a/src/firecracker/Cargo.toml b/src/firecracker/Cargo.toml index ca0c6269252..17e1d8fcf2b 100644 --- a/src/firecracker/Cargo.toml +++ b/src/firecracker/Cargo.toml @@ -2,7 +2,7 @@ name = "firecracker" version = "1.12.0-dev" authors = ["Amazon Firecracker team "] -edition = "2021" +edition = "2024" build = "build.rs" description = "Firecracker enables you to deploy workloads in lightweight virtual machines, called microVMs, which provide enhanced security and workload isolation over traditional VMs, while enabling the speed and resource efficiency of containers." homepage = "https://firecracker-microvm.github.io/" diff --git a/src/firecracker/examples/seccomp/jailer.rs b/src/firecracker/examples/seccomp/jailer.rs index 47f4a667749..62e4b84ea52 100644 --- a/src/firecracker/examples/seccomp/jailer.rs +++ b/src/firecracker/examples/seccomp/jailer.rs @@ -18,7 +18,7 @@ fn main() { // Loads filters. apply_filter(map.get("main").unwrap()).unwrap(); - Command::new(exec_file) + let _ = Command::new(exec_file) .stdin(Stdio::inherit()) .stdout(Stdio::inherit()) .stderr(Stdio::inherit()) diff --git a/src/firecracker/examples/uffd/fault_all_handler.rs b/src/firecracker/examples/uffd/fault_all_handler.rs index 6711350497a..ca7601ebf25 100644 --- a/src/firecracker/examples/uffd/fault_all_handler.rs +++ b/src/firecracker/examples/uffd/fault_all_handler.rs @@ -11,7 +11,7 @@ use std::fs::File; use std::os::unix::net::UnixListener; use uffd_utils::{Runtime, UffdHandler}; -use utils::time::{get_time_us, ClockType}; +use utils::time::{ClockType, get_time_us}; fn main() { let mut args = std::env::args(); diff --git a/src/firecracker/examples/uffd/uffd_utils.rs b/src/firecracker/examples/uffd/uffd_utils.rs index dcc05151967..ccb4938ef01 100644 --- a/src/firecracker/examples/uffd/uffd_utils.rs +++ b/src/firecracker/examples/uffd/uffd_utils.rs @@ -5,6 +5,7 @@ #![allow(dead_code)] use std::collections::{HashMap, HashSet}; +use std::ffi::c_void; use std::fs::File; use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd}; use std::os::unix::net::UnixStream; @@ -148,7 +149,7 @@ impl UffdHandler { Err(Error::PartiallyCopied(bytes_copied)) if bytes_copied == 0 || bytes_copied == (-libc::EAGAIN) as usize => { - return false + return false; } Err(Error::CopyFailed(errno)) if std::io::Error::from(errno).raw_os_error().unwrap() == libc::EEXIST => @@ -227,8 +228,8 @@ impl Runtime { self.stream.as_raw_fd(), libc::SOL_SOCKET, libc::SO_PEERCRED, - &mut creds as *mut _ as *mut _, - &mut creds_size as *mut libc::socklen_t, + (&raw mut creds).cast::(), + &raw mut creds_size, ) }; if ret != 0 { diff --git a/src/firecracker/src/api_server/mod.rs b/src/firecracker/src/api_server/mod.rs index a2edce205cd..3dd9e417e71 100644 --- a/src/firecracker/src/api_server/mod.rs +++ b/src/firecracker/src/api_server/mod.rs @@ -15,9 +15,9 @@ use std::sync::mpsc; pub use micro_http::{Body, HttpServer, Request, Response, ServerError, StatusCode, Version}; use parsed_request::{ParsedRequest, RequestAction}; use serde_json::json; -use utils::time::{get_time_us, ClockType}; +use utils::time::{ClockType, get_time_us}; use vmm::logger::{ - debug, error, info, update_metric_with_elapsed_time, warn, ProcessTimeReporter, METRICS, + METRICS, ProcessTimeReporter, debug, error, info, update_metric_with_elapsed_time, warn, }; use vmm::rpc_interface::{ApiRequest, ApiResponse, VmmAction}; use vmm::seccomp::BpfProgramRef; diff --git a/src/firecracker/src/api_server/parsed_request.rs b/src/firecracker/src/api_server/parsed_request.rs index 41d625e9abe..10d5c3d97ea 100644 --- a/src/firecracker/src/api_server/parsed_request.rs +++ b/src/firecracker/src/api_server/parsed_request.rs @@ -6,9 +6,10 @@ use std::fmt::Debug; use micro_http::{Body, Method, Request, Response, StatusCode, Version}; use serde::ser::Serialize; use serde_json::Value; -use vmm::logger::{error, info, log_enabled, Level}; +use vmm::logger::{Level, error, info, log_enabled}; use vmm::rpc_interface::{VmmAction, VmmActionError, VmmData}; +use super::ApiServer; use super::request::actions::parse_put_actions; use super::request::balloon::{parse_get_balloon, parse_patch_balloon, parse_put_balloon}; use super::request::boot_source::parse_put_boot_source; @@ -26,7 +27,6 @@ use super::request::net::{parse_patch_net, parse_put_net}; use super::request::snapshot::{parse_patch_vm_state, parse_put_snapshot}; use super::request::version::parse_get_version; use super::request::vsock::parse_put_vsock; -use super::ApiServer; #[derive(Debug)] pub(crate) enum RequestAction { @@ -336,7 +336,7 @@ pub mod tests { } match (&self.action, &other.action) { - (RequestAction::Sync(ref sync_req), RequestAction::Sync(ref other_sync_req)) => { + (RequestAction::Sync(sync_req), RequestAction::Sync(other_sync_req)) => { sync_req == other_sync_req } } diff --git a/src/firecracker/src/api_server/request/cpu_configuration.rs b/src/firecracker/src/api_server/request/cpu_configuration.rs index 649182bdf7c..454df80be4b 100644 --- a/src/firecracker/src/api_server/request/cpu_configuration.rs +++ b/src/firecracker/src/api_server/request/cpu_configuration.rs @@ -23,7 +23,7 @@ pub(crate) fn parse_put_cpu_config(body: &Body) -> Result Result { diff --git a/src/firecracker/src/api_server/request/net.rs b/src/firecracker/src/api_server/request/net.rs index 5fced98635c..a0125add274 100644 --- a/src/firecracker/src/api_server/request/net.rs +++ b/src/firecracker/src/api_server/request/net.rs @@ -5,7 +5,7 @@ use vmm::logger::{IncMetric, METRICS}; use vmm::rpc_interface::VmmAction; use vmm::vmm_config::net::{NetworkInterfaceConfig, NetworkInterfaceUpdateConfig}; -use super::super::parsed_request::{checked_id, ParsedRequest, RequestError}; +use super::super::parsed_request::{ParsedRequest, RequestError, checked_id}; use super::{Body, StatusCode}; pub(crate) fn parse_put_net( diff --git a/src/firecracker/src/api_server/request/snapshot.rs b/src/firecracker/src/api_server/request/snapshot.rs index 8878c224b5c..37a66f80093 100644 --- a/src/firecracker/src/api_server/request/snapshot.rs +++ b/src/firecracker/src/api_server/request/snapshot.rs @@ -66,13 +66,13 @@ fn parse_put_snapshot_load(body: &Body) -> Result { (Some(_), Some(_)) => { return Err(RequestError::SerdeJson(serde_json::Error::custom( TOO_MANY_FIELDS, - ))) + ))); } // Ensure that one of `mem_file_path` or `mem_backend` fields is always specified. (None, None) => { return Err(RequestError::SerdeJson(serde_json::Error::custom( MISSING_FIELD, - ))) + ))); } _ => {} } @@ -183,10 +183,12 @@ mod tests { resume_vm: false, }; let mut parsed_request = parse_put_snapshot(&Body::new(body), Some("load")).unwrap(); - assert!(parsed_request - .parsing_info() - .take_deprecation_message() - .is_none()); + assert!( + parsed_request + .parsing_info() + .take_deprecation_message() + .is_none() + ); assert_eq!( vmm_action_from_request(parsed_request), VmmAction::LoadSnapshot(expected_config) @@ -210,10 +212,12 @@ mod tests { resume_vm: false, }; let mut parsed_request = parse_put_snapshot(&Body::new(body), Some("load")).unwrap(); - assert!(parsed_request - .parsing_info() - .take_deprecation_message() - .is_none()); + assert!( + parsed_request + .parsing_info() + .take_deprecation_message() + .is_none() + ); assert_eq!( vmm_action_from_request(parsed_request), VmmAction::LoadSnapshot(expected_config) @@ -237,10 +241,12 @@ mod tests { resume_vm: true, }; let mut parsed_request = parse_put_snapshot(&Body::new(body), Some("load")).unwrap(); - assert!(parsed_request - .parsing_info() - .take_deprecation_message() - .is_none()); + assert!( + parsed_request + .parsing_info() + .take_deprecation_message() + .is_none() + ); assert_eq!( vmm_action_from_request(parsed_request), VmmAction::LoadSnapshot(expected_config) @@ -348,16 +354,20 @@ mod tests { let body = r#"{ "state": "Paused" }"#; - assert!(parse_patch_vm_state(&Body::new(body)) - .unwrap() - .eq(&ParsedRequest::new_sync(VmmAction::Pause))); + assert!( + parse_patch_vm_state(&Body::new(body)) + .unwrap() + .eq(&ParsedRequest::new_sync(VmmAction::Pause)) + ); let body = r#"{ "state": "Resumed" }"#; - assert!(parse_patch_vm_state(&Body::new(body)) - .unwrap() - .eq(&ParsedRequest::new_sync(VmmAction::Resume))); + assert!( + parse_patch_vm_state(&Body::new(body)) + .unwrap() + .eq(&ParsedRequest::new_sync(VmmAction::Resume)) + ); let invalid_body = r#"{ "invalid": "Paused" diff --git a/src/firecracker/src/api_server_adapter.rs b/src/firecracker/src/api_server_adapter.rs index 776d03a4daa..b6178a8cbf7 100644 --- a/src/firecracker/src/api_server_adapter.rs +++ b/src/firecracker/src/api_server_adapter.rs @@ -3,12 +3,12 @@ use std::os::unix::io::AsRawFd; use std::path::PathBuf; -use std::sync::mpsc::{channel, Receiver, Sender, TryRecvError}; +use std::sync::mpsc::{Receiver, Sender, TryRecvError, channel}; use std::sync::{Arc, Mutex}; use std::thread; use event_manager::{EventOps, Events, MutEventSubscriber, SubscriberOps}; -use vmm::logger::{error, warn, ProcessTimeReporter}; +use vmm::logger::{ProcessTimeReporter, error, warn}; use vmm::resources::VmResources; use vmm::rpc_interface::{ ApiRequest, ApiResponse, BuildMicrovmFromRequestsError, PrebootApiController, diff --git a/src/firecracker/src/gen/mod.rs b/src/firecracker/src/generated/mod.rs similarity index 100% rename from src/firecracker/src/gen/mod.rs rename to src/firecracker/src/generated/mod.rs diff --git a/src/firecracker/src/gen/prctl.rs b/src/firecracker/src/generated/prctl.rs similarity index 81% rename from src/firecracker/src/gen/prctl.rs rename to src/firecracker/src/generated/prctl.rs index e46a41ce5e9..c4c15df92d3 100644 --- a/src/firecracker/src/gen/prctl.rs +++ b/src/firecracker/src/generated/prctl.rs @@ -1,4 +1,4 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -11,7 +11,8 @@ clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] pub const PR_SET_PDEATHSIG: u32 = 1; @@ -152,3 +153,29 @@ pub const PR_SCHED_CORE_CREATE: u32 = 1; pub const PR_SCHED_CORE_SHARE_TO: u32 = 2; pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3; pub const PR_SCHED_CORE_MAX: u32 = 4; +pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0; +pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1; +pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2; +pub const PR_SME_SET_VL: u32 = 63; +pub const PR_SME_SET_VL_ONEXEC: u32 = 262144; +pub const PR_SME_GET_VL: u32 = 64; +pub const PR_SME_VL_LEN_MASK: u32 = 65535; +pub const PR_SME_VL_INHERIT: u32 = 131072; +pub const PR_SET_MDWE: u32 = 65; +pub const PR_MDWE_REFUSE_EXEC_GAIN: u32 = 1; +pub const PR_MDWE_NO_INHERIT: u32 = 2; +pub const PR_GET_MDWE: u32 = 66; +pub const PR_SET_VMA: u32 = 1398164801; +pub const PR_SET_VMA_ANON_NAME: u32 = 0; +pub const PR_GET_AUXV: u32 = 1096112214; +pub const PR_SET_MEMORY_MERGE: u32 = 67; +pub const PR_GET_MEMORY_MERGE: u32 = 68; +pub const PR_RISCV_V_SET_CONTROL: u32 = 69; +pub const PR_RISCV_V_GET_CONTROL: u32 = 70; +pub const PR_RISCV_V_VSTATE_CTRL_DEFAULT: u32 = 0; +pub const PR_RISCV_V_VSTATE_CTRL_OFF: u32 = 1; +pub const PR_RISCV_V_VSTATE_CTRL_ON: u32 = 2; +pub const PR_RISCV_V_VSTATE_CTRL_INHERIT: u32 = 16; +pub const PR_RISCV_V_VSTATE_CTRL_CUR_MASK: u32 = 3; +pub const PR_RISCV_V_VSTATE_CTRL_NEXT_MASK: u32 = 12; +pub const PR_RISCV_V_VSTATE_CTRL_MASK: u32 = 31; diff --git a/src/firecracker/src/main.rs b/src/firecracker/src/main.rs index 27a9957d448..6b01f776729 100644 --- a/src/firecracker/src/main.rs +++ b/src/firecracker/src/main.rs @@ -3,7 +3,7 @@ mod api_server; mod api_server_adapter; -mod gen; +mod generated; mod metrics; mod seccomp; @@ -22,7 +22,7 @@ use utils::validators::validate_instance_id; use vmm::arch::host_page_size; use vmm::builder::StartMicrovmError; use vmm::logger::{ - debug, error, info, LoggerConfig, ProcessTimeReporter, StoreMetric, LOGGER, METRICS, + LOGGER, LoggerConfig, METRICS, ProcessTimeReporter, StoreMetric, debug, error, info, }; use vmm::persist::SNAPSHOT_VERSION; use vmm::resources::VmResources; @@ -30,7 +30,7 @@ use vmm::seccomp::BpfThreadMap; use vmm::signal_handler::register_signal_handlers; use vmm::snapshot::{Snapshot, SnapshotError}; use vmm::vmm_config::instance_info::{InstanceInfo, VmState}; -use vmm::vmm_config::metrics::{init_metrics, MetricsConfig, MetricsConfigError}; +use vmm::vmm_config::metrics::{MetricsConfig, MetricsConfigError, init_metrics}; use vmm::{EventManager, FcExitCode, HTTP_MAX_PAYLOAD_SIZE}; use vmm_sys_util::terminal::Terminal; @@ -501,9 +501,9 @@ pub fn enable_ssbd_mitigation() { // to leave the latter 2 as zero. let ret = unsafe { libc::prctl( - gen::prctl::PR_SET_SPECULATION_CTRL, - gen::prctl::PR_SPEC_STORE_BYPASS, - gen::prctl::PR_SPEC_FORCE_DISABLE, + generated::prctl::PR_SET_SPECULATION_CTRL, + generated::prctl::PR_SPEC_STORE_BYPASS, + generated::prctl::PR_SPEC_FORCE_DISABLE, 0, 0, ) diff --git a/src/firecracker/src/metrics.rs b/src/firecracker/src/metrics.rs index 9eaffd47811..80f21257107 100644 --- a/src/firecracker/src/metrics.rs +++ b/src/firecracker/src/metrics.rs @@ -6,7 +6,7 @@ use std::time::Duration; use event_manager::{EventOps, Events, MutEventSubscriber}; use timerfd::{ClockId, SetTimeFlags, TimerFd, TimerState}; -use vmm::logger::{error, warn, IncMetric, METRICS}; +use vmm::logger::{IncMetric, METRICS, error, warn}; use vmm_sys_util::epoll::EventSet; /// Metrics reporting period. diff --git a/src/firecracker/src/seccomp.rs b/src/firecracker/src/seccomp.rs index 2c7b3ddecd8..22069def685 100644 --- a/src/firecracker/src/seccomp.rs +++ b/src/firecracker/src/seccomp.rs @@ -5,7 +5,7 @@ use std::fs::File; use std::io::{BufReader, Read}; use std::path::Path; -use vmm::seccomp::{deserialize_binary, get_empty_filters, BpfThreadMap, DeserializationError}; +use vmm::seccomp::{BpfThreadMap, DeserializationError, deserialize_binary, get_empty_filters}; const THREAD_CATEGORIES: [&str; 3] = ["vmm", "api", "vcpu"]; diff --git a/src/jailer/Cargo.toml b/src/jailer/Cargo.toml index 935971c6d1a..7d83e0ed900 100644 --- a/src/jailer/Cargo.toml +++ b/src/jailer/Cargo.toml @@ -2,7 +2,7 @@ name = "jailer" version = "1.12.0-dev" authors = ["Amazon Firecracker team "] -edition = "2021" +edition = "2024" description = "Process for starting Firecracker in production scenarios; applies a cgroup/namespace isolation barrier and then drops privileges." homepage = "https://firecracker-microvm.github.io/" license = "Apache-2.0" diff --git a/src/jailer/src/cgroup.rs b/src/jailer/src/cgroup.rs index e49b1acb317..94098d3698f 100644 --- a/src/jailer/src/cgroup.rs +++ b/src/jailer/src/cgroup.rs @@ -11,7 +11,7 @@ use std::process; use regex::Regex; -use crate::{readln_special, writeln_special, JailerError}; +use crate::{JailerError, readln_special, writeln_special}; // Holds information on a cgroup mount point discovered on the system #[derive(Debug)] @@ -234,8 +234,8 @@ pub enum CgroupConfiguration { impl CgroupConfiguration { pub fn setup(&self) -> Result<(), JailerError> { match self { - Self::V1(ref conf) => setup_cgroup_conf(conf), - Self::V2(ref conf) => setup_cgroup_conf(conf), + Self::V1(conf) => setup_cgroup_conf(conf), + Self::V2(conf) => setup_cgroup_conf(conf), } } } @@ -817,9 +817,11 @@ mod tests { ); // check that the controller was enabled in all parent dirs - assert!(read_first_line(cg_root.join("cgroup.subtree_control")) - .unwrap() - .contains("cpuset")); + assert!( + read_first_line(cg_root.join("cgroup.subtree_control")) + .unwrap() + .contains("cpuset") + ); assert!( read_first_line(cg_root.join("fc_test_cgv2/cgroup.subtree_control")) .unwrap() diff --git a/src/jailer/src/chroot.rs b/src/jailer/src/chroot.rs index cad575227f4..56335c03a74 100644 --- a/src/jailer/src/chroot.rs +++ b/src/jailer/src/chroot.rs @@ -8,7 +8,7 @@ use std::ptr::null; use vmm_sys_util::syscall::SyscallReturnCode; -use super::{to_cstring, JailerError}; +use super::{JailerError, to_cstring}; const OLD_ROOT_DIR: &CStr = c"old_root"; const ROOT_DIR: &CStr = c"/"; diff --git a/src/jailer/src/env.rs b/src/jailer/src/env.rs index 83421b6d5d4..e337ea95f90 100644 --- a/src/jailer/src/env.rs +++ b/src/jailer/src/env.rs @@ -2,24 +2,24 @@ // SPDX-License-Identifier: Apache-2.0 use std::ffi::{CStr, CString, OsString}; -use std::fs::{self, canonicalize, read_to_string, File, OpenOptions, Permissions}; +use std::fs::{self, File, OpenOptions, Permissions, canonicalize, read_to_string}; use std::io; use std::io::Write; use std::os::unix::fs::PermissionsExt; use std::os::unix::io::AsRawFd; use std::os::unix::process::CommandExt; use std::path::{Component, Path, PathBuf}; -use std::process::{exit, id, Command, Stdio}; +use std::process::{Command, Stdio, exit, id}; use utils::arg_parser::UtilsArgParserError::MissingValue; -use utils::time::{get_time_us, ClockType}; +use utils::time::{ClockType, get_time_us}; use utils::{arg_parser, validators}; use vmm_sys_util::syscall::SyscallReturnCode; +use crate::JailerError; use crate::cgroup::{CgroupConfiguration, CgroupConfigurationBuilder}; use crate::chroot::chroot; -use crate::resource_limits::{ResourceLimits, FSIZE_ARG, NO_FILE_ARG}; -use crate::JailerError; +use crate::resource_limits::{FSIZE_ARG, NO_FILE_ARG, ResourceLimits}; pub const PROC_MOUNTS: &str = "/proc/mounts"; diff --git a/src/jailer/src/main.rs b/src/jailer/src/main.rs index f5ebd663b02..721531e49ba 100644 --- a/src/jailer/src/main.rs +++ b/src/jailer/src/main.rs @@ -8,7 +8,7 @@ use std::{env as p_env, fs, io}; use env::PROC_MOUNTS; use utils::arg_parser::{ArgParser, Argument, UtilsArgParserError as ParsingError}; -use utils::time::{get_time_us, ClockType}; +use utils::time::{ClockType, get_time_us}; use utils::validators; use vmm_sys_util::syscall::SyscallReturnCode; @@ -288,7 +288,10 @@ fn clean_env_vars() { // the parent process so there are no leaks // inside the jailer environment for (key, _) in p_env::vars() { - p_env::remove_var(key); + // SAFETY: the function is safe to call in a single-threaded program + unsafe { + p_env::remove_var(key); + } } } @@ -423,7 +426,10 @@ mod tests { // Set environment variables for env_var in env_vars.iter() { - env::set_var(env_var, "0"); + // SAFETY: the function is safe to call in a single-threaded program + unsafe { + env::set_var(env_var, "0"); + } } // Cleanup the environment diff --git a/src/log-instrument-macros/Cargo.toml b/src/log-instrument-macros/Cargo.toml index b8f6cac4ad1..0d2c564f668 100644 --- a/src/log-instrument-macros/Cargo.toml +++ b/src/log-instrument-macros/Cargo.toml @@ -2,7 +2,7 @@ name = "log-instrument-macros" version = "0.1.0" authors = ["Amazon Firecracker team "] -edition = "2021" +edition = "2024" description = "Offers an attribute procedural macro that adds `log::trace!` events at the start and end of attributed functions." license = "Apache-2.0" diff --git a/src/log-instrument/Cargo.toml b/src/log-instrument/Cargo.toml index f1b71fd1a60..d42b1a7a4dc 100644 --- a/src/log-instrument/Cargo.toml +++ b/src/log-instrument/Cargo.toml @@ -2,7 +2,7 @@ name = "log-instrument" version = "0.3.0" authors = ["Amazon Firecracker team "] -edition = "2021" +edition = "2024" description = "Offers an attribute procedural macro that adds `log::trace!` events at the start and end of attributed functions." license = "Apache-2.0" diff --git a/src/log-instrument/examples/five.rs b/src/log-instrument/examples/five.rs index e43064c18b5..07aa0951935 100644 --- a/src/log-instrument/examples/five.rs +++ b/src/log-instrument/examples/five.rs @@ -3,7 +3,7 @@ #![warn(clippy::pedantic)] -use log::{debug, info, warn, LevelFilter}; +use log::{LevelFilter, debug, info, warn}; fn main() { env_logger::builder() diff --git a/src/rebase-snap/Cargo.toml b/src/rebase-snap/Cargo.toml index f121c6e2cd0..2e333208a75 100644 --- a/src/rebase-snap/Cargo.toml +++ b/src/rebase-snap/Cargo.toml @@ -2,7 +2,7 @@ name = "rebase-snap" version = "1.12.0-dev" authors = ["Amazon Firecracker team "] -edition = "2021" +edition = "2024" license = "Apache-2.0" [[bin]] diff --git a/src/seccompiler/Cargo.toml b/src/seccompiler/Cargo.toml index 5e50a3b2615..f183573d84d 100644 --- a/src/seccompiler/Cargo.toml +++ b/src/seccompiler/Cargo.toml @@ -2,7 +2,7 @@ name = "seccompiler" version = "1.12.0-dev" authors = ["Amazon Firecracker team "] -edition = "2021" +edition = "2024" description = "Program that compiles multi-threaded seccomp-bpf filters expressed as JSON into raw BPF programs, serializing them and outputting them to a file." homepage = "https://firecracker-microvm.github.io/" license = "Apache-2.0" diff --git a/src/seccompiler/src/bin.rs b/src/seccompiler/src/bin.rs index 8fb9d0fd511..749d04b570d 100644 --- a/src/seccompiler/src/bin.rs +++ b/src/seccompiler/src/bin.rs @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 use clap::Parser; -use seccompiler::{compile_bpf, CompilationError}; +use seccompiler::{CompilationError, compile_bpf}; const DEFAULT_OUTPUT_FILENAME: &str = "seccomp_binary_filter.out"; diff --git a/src/snapshot-editor/Cargo.toml b/src/snapshot-editor/Cargo.toml index 372ea2d72bb..106a4074501 100644 --- a/src/snapshot-editor/Cargo.toml +++ b/src/snapshot-editor/Cargo.toml @@ -2,7 +2,7 @@ name = "snapshot-editor" version = "1.12.0-dev" authors = ["Amazon Firecracker team "] -edition = "2021" +edition = "2024" license = "Apache-2.0" [[bin]] diff --git a/src/snapshot-editor/src/edit_vmstate.rs b/src/snapshot-editor/src/edit_vmstate.rs index 1d35cc19760..a96f84db6a0 100644 --- a/src/snapshot-editor/src/edit_vmstate.rs +++ b/src/snapshot-editor/src/edit_vmstate.rs @@ -8,7 +8,7 @@ use clap_num::maybe_hex; use vmm::arch::aarch64::regs::Aarch64RegisterVec; use vmm::persist::MicrovmState; -use crate::utils::{open_vmstate, save_vmstate, UtilsError}; +use crate::utils::{UtilsError, open_vmstate, save_vmstate}; #[derive(Debug, thiserror::Error, displaydoc::Display)] pub enum EditVmStateError { diff --git a/src/snapshot-editor/src/main.rs b/src/snapshot-editor/src/main.rs index cc940b341f4..fbc4a2ab883 100644 --- a/src/snapshot-editor/src/main.rs +++ b/src/snapshot-editor/src/main.rs @@ -9,10 +9,10 @@ mod edit_vmstate; mod info; mod utils; -use edit_memory::{edit_memory_command, EditMemoryError, EditMemorySubCommand}; +use edit_memory::{EditMemoryError, EditMemorySubCommand, edit_memory_command}; #[cfg(target_arch = "aarch64")] -use edit_vmstate::{edit_vmstate_command, EditVmStateError, EditVmStateSubCommand}; -use info::{info_vmstate_command, InfoVmStateError, InfoVmStateSubCommand}; +use edit_vmstate::{EditVmStateError, EditVmStateSubCommand, edit_vmstate_command}; +use info::{InfoVmStateError, InfoVmStateSubCommand, info_vmstate_command}; #[derive(Debug, thiserror::Error, displaydoc::Display)] enum SnapEditorError { diff --git a/src/utils/Cargo.toml b/src/utils/Cargo.toml index 6d71fe47bf8..9db225fd610 100644 --- a/src/utils/Cargo.toml +++ b/src/utils/Cargo.toml @@ -2,7 +2,7 @@ name = "utils" version = "0.1.0" authors = ["Amazon Firecracker team "] -edition = "2021" +edition = "2024" license = "Apache-2.0" [lib] diff --git a/src/utils/src/arg_parser.rs b/src/utils/src/arg_parser.rs index 47dfe3a88a4..e76d38b7609 100644 --- a/src/utils/src/arg_parser.rs +++ b/src/utils/src/arg_parser.rs @@ -438,7 +438,7 @@ impl<'a> Arguments<'a> { _ => { return Err(UtilsArgParserError::UnexpectedArgument( argument.name.to_string(), - )) + )); } } } else { diff --git a/src/vmm/Cargo.toml b/src/vmm/Cargo.toml index 1224a00318a..34e35e2a4ef 100644 --- a/src/vmm/Cargo.toml +++ b/src/vmm/Cargo.toml @@ -2,7 +2,7 @@ name = "vmm" version = "0.1.0" authors = ["Amazon Firecracker team "] -edition = "2021" +edition = "2024" license = "Apache-2.0" [lib] diff --git a/src/vmm/benches/block_request.rs b/src/vmm/benches/block_request.rs index a616a48b5bf..1ccf3e7c3b6 100644 --- a/src/vmm/benches/block_request.rs +++ b/src/vmm/benches/block_request.rs @@ -6,7 +6,7 @@ // * `Queue.add_used` // * `DescriptorChain.next_descriptor` -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{Criterion, criterion_group, criterion_main}; use vm_memory::GuestAddress; use vmm::devices::virtio::block::virtio::test_utils::RequestDescriptorChain; use vmm::devices::virtio::block::virtio::{Request, RequestHeader, VIRTIO_BLK_T_IN}; diff --git a/src/vmm/benches/cpu_templates.rs b/src/vmm/benches/cpu_templates.rs index 75060a58675..e31ad7261aa 100644 --- a/src/vmm/benches/cpu_templates.rs +++ b/src/vmm/benches/cpu_templates.rs @@ -7,9 +7,9 @@ use std::mem::size_of_val; -use criterion::{criterion_group, criterion_main, Criterion}; -use vmm::cpu_config::templates::test_utils::{build_test_template, TEST_TEMPLATE_JSON}; +use criterion::{Criterion, criterion_group, criterion_main}; use vmm::cpu_config::templates::CustomCpuTemplate; +use vmm::cpu_config::templates::test_utils::{TEST_TEMPLATE_JSON, build_test_template}; #[inline] pub fn bench_serialize_cpu_template(cpu_template: &CustomCpuTemplate) { diff --git a/src/vmm/benches/memory_access.rs b/src/vmm/benches/memory_access.rs index 2a9f7974108..4dfb9dc9213 100644 --- a/src/vmm/benches/memory_access.rs +++ b/src/vmm/benches/memory_access.rs @@ -1,7 +1,7 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -use criterion::{criterion_group, criterion_main, BatchSize, Criterion}; +use criterion::{BatchSize, Criterion, criterion_group, criterion_main}; use vm_memory::GuestMemory; use vmm::resources::VmResources; use vmm::vmm_config::machine_config::{HugePageConfig, MachineConfig}; diff --git a/src/vmm/benches/queue.rs b/src/vmm/benches/queue.rs index 1d19bcd3973..b5536fa7ef1 100644 --- a/src/vmm/benches/queue.rs +++ b/src/vmm/benches/queue.rs @@ -8,7 +8,7 @@ use std::num::Wrapping; -use criterion::{criterion_group, criterion_main, Criterion}; +use criterion::{Criterion, criterion_group, criterion_main}; use vm_memory::GuestAddress; use vmm::devices::virtio::queue::{VIRTQ_DESC_F_NEXT, VIRTQ_DESC_F_WRITE}; use vmm::devices::virtio::test_utils::VirtQueue; diff --git a/src/vmm/src/acpi/mod.rs b/src/vmm/src/acpi/mod.rs index 9542fad3902..59bca9eadfd 100644 --- a/src/vmm/src/acpi/mod.rs +++ b/src/vmm/src/acpi/mod.rs @@ -2,10 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 use acpi_tables::fadt::{FADT_F_HW_REDUCED_ACPI, FADT_F_PWR_BUTTON, FADT_F_SLP_BUTTON}; -use acpi_tables::{aml, Aml, Dsdt, Fadt, Madt, Rsdp, Sdt, Xsdt}; +use acpi_tables::{Aml, Dsdt, Fadt, Madt, Rsdp, Sdt, Xsdt, aml}; use log::{debug, error}; use vm_allocator::AllocPolicy; +use crate::Vcpu; use crate::acpi::x86_64::{ apic_addr, rsdp_addr, setup_arch_dsdt, setup_arch_fadt, setup_interrupt_controllers, }; @@ -13,7 +14,6 @@ use crate::device_manager::acpi::ACPIDeviceManager; use crate::device_manager::mmio::MMIODeviceManager; use crate::device_manager::resources::ResourceAllocator; use crate::vstate::memory::{GuestAddress, GuestMemoryMmap}; -use crate::Vcpu; mod x86_64; @@ -105,7 +105,7 @@ impl AcpiTableWriter<'_> { fadt.set_hypervisor_vendor_id(HYPERVISOR_VENDOR_ID); fadt.set_x_dsdt(dsdt_addr); fadt.set_flags( - 1 << FADT_F_HW_REDUCED_ACPI | 1 << FADT_F_PWR_BUTTON | 1 << FADT_F_SLP_BUTTON, + (1 << FADT_F_HW_REDUCED_ACPI) | (1 << FADT_F_PWR_BUTTON) | (1 << FADT_F_SLP_BUTTON), ); setup_arch_fadt(&mut fadt); self.write_acpi_table(&mut fadt) diff --git a/src/vmm/src/acpi/x86_64.rs b/src/vmm/src/acpi/x86_64.rs index 7d2e9f0364a..de850a9989f 100644 --- a/src/vmm/src/acpi/x86_64.rs +++ b/src/vmm/src/acpi/x86_64.rs @@ -8,7 +8,7 @@ use acpi_tables::fadt::{ IAPC_BOOT_ARG_FLAGS_VGA_NOT_PRESENT, }; use acpi_tables::madt::{IoAPIC, LocalAPIC}; -use acpi_tables::{aml, Fadt}; +use acpi_tables::{Fadt, aml}; use vm_memory::GuestAddress; use zerocopy::IntoBytes; @@ -34,9 +34,9 @@ pub(crate) fn setup_arch_fadt(fadt: &mut Fadt) { // More info here: // https://uefi.org/specs/ACPI/6.5/05_ACPI_Software_Programming_Model.html?highlight=0a06#ia-pc-boot-architecture-flags fadt.setup_iapc_flags( - 1 << IAPC_BOOT_ARG_FLAGS_VGA_NOT_PRESENT - | 1 << IAPC_BOOT_ARG_FLAGS_PCI_ASPM - | 1 << IAPC_BOOT_ARG_FLAGS_MSI_NOT_PRESENT, + (1 << IAPC_BOOT_ARG_FLAGS_VGA_NOT_PRESENT) + | (1 << IAPC_BOOT_ARG_FLAGS_PCI_ASPM) + | (1 << IAPC_BOOT_ARG_FLAGS_MSI_NOT_PRESENT), ); } diff --git a/src/vmm/src/arch/aarch64/cache_info.rs b/src/vmm/src/arch/aarch64/cache_info.rs index fd7d6e0a2ea..8f8611fe440 100644 --- a/src/vmm/src/arch/aarch64/cache_info.rs +++ b/src/vmm/src/arch/aarch64/cache_info.rs @@ -320,7 +320,7 @@ mod tests { use super::*; use crate::arch::aarch64::cache_info::{ - read_cache_config, CacheEngine, CacheEntry, CacheStore, + CacheEngine, CacheEntry, CacheStore, read_cache_config, }; #[derive(Debug)] diff --git a/src/vmm/src/arch/aarch64/fdt.rs b/src/vmm/src/arch/aarch64/fdt.rs index ff8c561910a..2eb154a33b3 100644 --- a/src/vmm/src/arch/aarch64/fdt.rs +++ b/src/vmm/src/arch/aarch64/fdt.rs @@ -13,9 +13,9 @@ use vm_fdt::{Error as VmFdtError, FdtWriter, FdtWriterNode}; use vm_memory::GuestMemoryError; use super::super::{DeviceType, InitrdConfig}; -use super::cache_info::{read_cache_config, CacheEntry}; +use super::cache_info::{CacheEntry, read_cache_config}; use super::gic::GICDevice; -use crate::devices::acpi::vmgenid::{VmGenId, VMGENID_MEM_SIZE}; +use crate::devices::acpi::vmgenid::{VMGENID_MEM_SIZE, VmGenId}; use crate::vstate::memory::{Address, GuestMemory, GuestMemoryMmap}; // This is a value for uniquely identifying the FDT node declaring the interrupt controller. diff --git a/src/vmm/src/arch/aarch64/gic/gicv2/regs/dist_regs.rs b/src/vmm/src/arch/aarch64/gic/gicv2/regs/dist_regs.rs index a4179e895ae..21a404b302b 100644 --- a/src/vmm/src/arch/aarch64/gic/gicv2/regs/dist_regs.rs +++ b/src/vmm/src/arch/aarch64/gic/gicv2/regs/dist_regs.rs @@ -6,8 +6,8 @@ use std::ops::Range; use kvm_bindings::KVM_DEV_ARM_VGIC_GRP_DIST_REGS; use kvm_ioctls::DeviceFd; -use crate::arch::aarch64::gic::regs::{GicRegState, MmioReg, SimpleReg, VgicRegEngine}; use crate::arch::aarch64::gic::GicError; +use crate::arch::aarch64::gic::regs::{GicRegState, MmioReg, SimpleReg, VgicRegEngine}; use crate::arch::{IRQ_BASE, IRQ_MAX}; // Distributor registers as detailed at page 75 from @@ -133,7 +133,7 @@ mod tests { use kvm_ioctls::Kvm; use super::*; - use crate::arch::aarch64::gic::{create_gic, GICVersion, GicError}; + use crate::arch::aarch64::gic::{GICVersion, GicError, create_gic}; #[test] fn test_access_dist_regs() { diff --git a/src/vmm/src/arch/aarch64/gic/gicv2/regs/icc_regs.rs b/src/vmm/src/arch/aarch64/gic/gicv2/regs/icc_regs.rs index be963a8327e..d50b74a5fb4 100644 --- a/src/vmm/src/arch/aarch64/gic/gicv2/regs/icc_regs.rs +++ b/src/vmm/src/arch/aarch64/gic/gicv2/regs/icc_regs.rs @@ -4,8 +4,8 @@ use kvm_bindings::*; use kvm_ioctls::DeviceFd; -use crate::arch::aarch64::gic::regs::{SimpleReg, VgicRegEngine, VgicSysRegsState}; use crate::arch::aarch64::gic::GicError; +use crate::arch::aarch64::gic::regs::{SimpleReg, VgicRegEngine, VgicSysRegsState}; // CPU interface registers as detailed at page 76 from // https://developer.arm.com/documentation/ihi0048/latest/. @@ -86,7 +86,7 @@ mod tests { use kvm_ioctls::Kvm; use super::*; - use crate::arch::aarch64::gic::{create_gic, GICVersion, GicError}; + use crate::arch::aarch64::gic::{GICVersion, GicError, create_gic}; #[test] fn test_access_icc_regs() { diff --git a/src/vmm/src/arch/aarch64/gic/gicv2/regs/mod.rs b/src/vmm/src/arch/aarch64/gic/gicv2/regs/mod.rs index a0c0e2c8fac..8bb26ce2bcd 100644 --- a/src/vmm/src/arch/aarch64/gic/gicv2/regs/mod.rs +++ b/src/vmm/src/arch/aarch64/gic/gicv2/regs/mod.rs @@ -6,8 +6,8 @@ mod icc_regs; use kvm_ioctls::DeviceFd; -use crate::arch::aarch64::gic::regs::{GicState, GicVcpuState}; use crate::arch::aarch64::gic::GicError; +use crate::arch::aarch64::gic::regs::{GicState, GicVcpuState}; /// Save the state of the GIC device. pub fn save_state(fd: &DeviceFd, mpidrs: &[u64]) -> Result { @@ -46,7 +46,7 @@ mod tests { use kvm_ioctls::Kvm; use super::*; - use crate::arch::aarch64::gic::{create_gic, GICVersion}; + use crate::arch::aarch64::gic::{GICVersion, create_gic}; #[test] fn test_vm_save_restore_state() { diff --git a/src/vmm/src/arch/aarch64/gic/gicv3/mod.rs b/src/vmm/src/arch/aarch64/gic/gicv3/mod.rs index 50d2e5130db..558b47ab065 100644 --- a/src/vmm/src/arch/aarch64/gic/gicv3/mod.rs +++ b/src/vmm/src/arch/aarch64/gic/gicv3/mod.rs @@ -202,7 +202,7 @@ mod tests { use kvm_ioctls::Kvm; use super::*; - use crate::arch::aarch64::gic::{create_gic, GICVersion}; + use crate::arch::aarch64::gic::{GICVersion, create_gic}; #[test] fn test_save_pending_tables() { diff --git a/src/vmm/src/arch/aarch64/gic/gicv3/regs/dist_regs.rs b/src/vmm/src/arch/aarch64/gic/gicv3/regs/dist_regs.rs index 5af3e9215c0..96c617dcc17 100644 --- a/src/vmm/src/arch/aarch64/gic/gicv3/regs/dist_regs.rs +++ b/src/vmm/src/arch/aarch64/gic/gicv3/regs/dist_regs.rs @@ -6,8 +6,8 @@ use std::ops::Range; use kvm_bindings::KVM_DEV_ARM_VGIC_GRP_DIST_REGS; use kvm_ioctls::DeviceFd; -use crate::arch::aarch64::gic::regs::{GicRegState, MmioReg, SimpleReg, VgicRegEngine}; use crate::arch::aarch64::gic::GicError; +use crate::arch::aarch64::gic::regs::{GicRegState, MmioReg, SimpleReg, VgicRegEngine}; use crate::arch::{IRQ_BASE, IRQ_MAX}; // Distributor registers as detailed at page 456 from @@ -134,7 +134,7 @@ mod tests { use kvm_ioctls::Kvm; use super::*; - use crate::arch::aarch64::gic::{create_gic, GICVersion}; + use crate::arch::aarch64::gic::{GICVersion, create_gic}; #[test] fn test_access_dist_regs() { diff --git a/src/vmm/src/arch/aarch64/gic/gicv3/regs/icc_regs.rs b/src/vmm/src/arch/aarch64/gic/gicv3/regs/icc_regs.rs index d242bce8433..f79430e9a13 100644 --- a/src/vmm/src/arch/aarch64/gic/gicv3/regs/icc_regs.rs +++ b/src/vmm/src/arch/aarch64/gic/gicv3/regs/icc_regs.rs @@ -4,8 +4,8 @@ use kvm_bindings::*; use kvm_ioctls::DeviceFd; -use crate::arch::aarch64::gic::regs::{SimpleReg, VgicRegEngine, VgicSysRegsState}; use crate::arch::aarch64::gic::GicError; +use crate::arch::aarch64::gic::regs::{SimpleReg, VgicRegEngine, VgicSysRegsState}; const ICC_CTLR_EL1_PRIBITS_SHIFT: u64 = 8; const ICC_CTLR_EL1_PRIBITS_MASK: u64 = 7 << ICC_CTLR_EL1_PRIBITS_SHIFT; @@ -170,7 +170,7 @@ mod tests { use kvm_ioctls::Kvm; use super::*; - use crate::arch::aarch64::gic::{create_gic, GICVersion}; + use crate::arch::aarch64::gic::{GICVersion, create_gic}; #[test] fn test_access_icc_regs() { diff --git a/src/vmm/src/arch/aarch64/gic/gicv3/regs/mod.rs b/src/vmm/src/arch/aarch64/gic/gicv3/regs/mod.rs index 31261f647fc..0531766dc54 100644 --- a/src/vmm/src/arch/aarch64/gic/gicv3/regs/mod.rs +++ b/src/vmm/src/arch/aarch64/gic/gicv3/regs/mod.rs @@ -7,8 +7,8 @@ mod redist_regs; use kvm_ioctls::DeviceFd; -use crate::arch::aarch64::gic::regs::{GicState, GicVcpuState}; use crate::arch::aarch64::gic::GicError; +use crate::arch::aarch64::gic::regs::{GicState, GicVcpuState}; /// Save the state of the GIC device. pub fn save_state(fd: &DeviceFd, mpidrs: &[u64]) -> Result { @@ -51,7 +51,7 @@ mod tests { use kvm_ioctls::Kvm; use super::*; - use crate::arch::aarch64::gic::{create_gic, GICVersion}; + use crate::arch::aarch64::gic::{GICVersion, create_gic}; #[test] fn test_vm_save_restore_state() { diff --git a/src/vmm/src/arch/aarch64/gic/gicv3/regs/redist_regs.rs b/src/vmm/src/arch/aarch64/gic/gicv3/regs/redist_regs.rs index 88af82e3cb2..4d1ba3292c1 100644 --- a/src/vmm/src/arch/aarch64/gic/gicv3/regs/redist_regs.rs +++ b/src/vmm/src/arch/aarch64/gic/gicv3/regs/redist_regs.rs @@ -4,8 +4,8 @@ use kvm_bindings::*; use kvm_ioctls::DeviceFd; -use crate::arch::aarch64::gic::regs::{GicRegState, SimpleReg, VgicRegEngine}; use crate::arch::aarch64::gic::GicError; +use crate::arch::aarch64::gic::regs::{GicRegState, SimpleReg, VgicRegEngine}; // Relevant PPI redistributor registers that we want to save/restore. const GICR_CTLR: SimpleReg = SimpleReg::new(0x0000, 4); @@ -91,7 +91,7 @@ mod tests { use kvm_ioctls::Kvm; use super::*; - use crate::arch::aarch64::gic::{create_gic, GICVersion}; + use crate::arch::aarch64::gic::{GICVersion, create_gic}; #[test] fn test_access_redist_regs() { diff --git a/src/vmm/src/arch/mod.rs b/src/vmm/src/arch/mod.rs index 8fa7c2463bf..41530737089 100644 --- a/src/vmm/src/arch/mod.rs +++ b/src/vmm/src/arch/mod.rs @@ -14,9 +14,9 @@ pub mod aarch64; #[cfg(target_arch = "aarch64")] pub use aarch64::{ - arch_memory_regions, configure_system, get_kernel_start, initrd_load_addr, - layout::CMDLINE_MAX_SIZE, layout::IRQ_BASE, layout::IRQ_MAX, layout::SYSTEM_MEM_SIZE, - layout::SYSTEM_MEM_START, ConfigurationError, MMIO_MEM_SIZE, MMIO_MEM_START, + ConfigurationError, MMIO_MEM_SIZE, MMIO_MEM_START, arch_memory_regions, configure_system, + get_kernel_start, initrd_load_addr, layout::CMDLINE_MAX_SIZE, layout::IRQ_BASE, + layout::IRQ_MAX, layout::SYSTEM_MEM_SIZE, layout::SYSTEM_MEM_START, }; /// Module for x86_64 related functionality. @@ -25,10 +25,10 @@ pub mod x86_64; #[cfg(target_arch = "x86_64")] pub use crate::arch::x86_64::{ - arch_memory_regions, configure_system, get_kernel_start, initrd_load_addr, layout::APIC_ADDR, - layout::CMDLINE_MAX_SIZE, layout::IOAPIC_ADDR, layout::IRQ_BASE, layout::IRQ_MAX, - layout::SYSTEM_MEM_SIZE, layout::SYSTEM_MEM_START, ConfigurationError, MMIO_MEM_SIZE, - MMIO_MEM_START, + ConfigurationError, MMIO_MEM_SIZE, MMIO_MEM_START, arch_memory_regions, configure_system, + get_kernel_start, initrd_load_addr, layout::APIC_ADDR, layout::CMDLINE_MAX_SIZE, + layout::IOAPIC_ADDR, layout::IRQ_BASE, layout::IRQ_MAX, layout::SYSTEM_MEM_SIZE, + layout::SYSTEM_MEM_START, }; /// Types of devices that can get attached to this platform. diff --git a/src/vmm/src/arch/x86_64/cpu_model.rs b/src/vmm/src/arch/x86_64/cpu_model.rs index befaa3953bf..fd3399a736f 100644 --- a/src/vmm/src/arch/x86_64/cpu_model.rs +++ b/src/vmm/src/arch/x86_64/cpu_model.rs @@ -56,10 +56,10 @@ impl From<&u32> for CpuModel { impl From<&CpuModel> for u32 { fn from(cpu_model: &CpuModel) -> Self { - u32::from(cpu_model.extended_family) << 20 - | u32::from(cpu_model.extended_model) << 16 - | u32::from(cpu_model.family) << 8 - | u32::from(cpu_model.model) << 4 + (u32::from(cpu_model.extended_family) << 20) + | (u32::from(cpu_model.extended_model) << 16) + | (u32::from(cpu_model.family) << 8) + | (u32::from(cpu_model.model) << 4) | u32::from(cpu_model.stepping) } } diff --git a/src/vmm/src/arch/x86_64/gen/mpspec.rs b/src/vmm/src/arch/x86_64/gen/mpspec.rs deleted file mode 100644 index 93103e5bee6..00000000000 --- a/src/vmm/src/arch/x86_64/gen/mpspec.rs +++ /dev/null @@ -1,825 +0,0 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -// automatically generated by tools/bindgen.sh - -#![allow( - non_camel_case_types, - non_upper_case_globals, - dead_code, - non_snake_case, - clippy::ptr_as_ptr, - clippy::undocumented_unsafe_blocks, - missing_debug_implementations, - clippy::tests_outside_test_module -)] - -pub const MPC_SIGNATURE: &[u8; 5] = b"PCMP\0"; -pub const MP_PROCESSOR: u32 = 0; -pub const MP_BUS: u32 = 1; -pub const MP_IOAPIC: u32 = 2; -pub const MP_INTSRC: u32 = 3; -pub const MP_LINTSRC: u32 = 4; -pub const MP_TRANSLATION: u32 = 192; -pub const CPU_ENABLED: u32 = 1; -pub const CPU_BOOTPROCESSOR: u32 = 2; -pub const CPU_STEPPING_MASK: u32 = 15; -pub const CPU_MODEL_MASK: u32 = 240; -pub const CPU_FAMILY_MASK: u32 = 3840; -pub const BUSTYPE_EISA: &[u8; 5] = b"EISA\0"; -pub const BUSTYPE_ISA: &[u8; 4] = b"ISA\0"; -pub const BUSTYPE_INTERN: &[u8; 7] = b"INTERN\0"; -pub const BUSTYPE_MCA: &[u8; 4] = b"MCA\0"; -pub const BUSTYPE_VL: &[u8; 3] = b"VL\0"; -pub const BUSTYPE_PCI: &[u8; 4] = b"PCI\0"; -pub const BUSTYPE_PCMCIA: &[u8; 7] = b"PCMCIA\0"; -pub const BUSTYPE_CBUS: &[u8; 5] = b"CBUS\0"; -pub const BUSTYPE_CBUSII: &[u8; 7] = b"CBUSII\0"; -pub const BUSTYPE_FUTURE: &[u8; 7] = b"FUTURE\0"; -pub const BUSTYPE_MBI: &[u8; 4] = b"MBI\0"; -pub const BUSTYPE_MBII: &[u8; 5] = b"MBII\0"; -pub const BUSTYPE_MPI: &[u8; 4] = b"MPI\0"; -pub const BUSTYPE_MPSA: &[u8; 5] = b"MPSA\0"; -pub const BUSTYPE_NUBUS: &[u8; 6] = b"NUBUS\0"; -pub const BUSTYPE_TC: &[u8; 3] = b"TC\0"; -pub const BUSTYPE_VME: &[u8; 4] = b"VME\0"; -pub const BUSTYPE_XPRESS: &[u8; 7] = b"XPRESS\0"; -pub const MPC_APIC_USABLE: u32 = 1; -pub const MP_IRQPOL_DEFAULT: u32 = 0; -pub const MP_IRQPOL_ACTIVE_HIGH: u32 = 1; -pub const MP_IRQPOL_RESERVED: u32 = 2; -pub const MP_IRQPOL_ACTIVE_LOW: u32 = 3; -pub const MP_IRQPOL_MASK: u32 = 3; -pub const MP_IRQTRIG_DEFAULT: u32 = 0; -pub const MP_IRQTRIG_EDGE: u32 = 4; -pub const MP_IRQTRIG_RESERVED: u32 = 8; -pub const MP_IRQTRIG_LEVEL: u32 = 12; -pub const MP_IRQTRIG_MASK: u32 = 12; -pub const MP_APIC_ALL: u32 = 255; -pub const MPC_OEM_SIGNATURE: &[u8; 5] = b"_OEM\0"; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct mpf_intel { - pub signature: [::std::os::raw::c_char; 4usize], - pub physptr: ::std::os::raw::c_uint, - pub length: ::std::os::raw::c_uchar, - pub specification: ::std::os::raw::c_uchar, - pub checksum: ::std::os::raw::c_uchar, - pub feature1: ::std::os::raw::c_uchar, - pub feature2: ::std::os::raw::c_uchar, - pub feature3: ::std::os::raw::c_uchar, - pub feature4: ::std::os::raw::c_uchar, - pub feature5: ::std::os::raw::c_uchar, -} -#[test] -fn bindgen_test_layout_mpf_intel() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(mpf_intel)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(mpf_intel)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).signature) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(signature) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).physptr) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(physptr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(length) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).specification) as usize - ptr as usize }, - 9usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(specification) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).checksum) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(checksum) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).feature1) as usize - ptr as usize }, - 11usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(feature1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).feature2) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(feature2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).feature3) as usize - ptr as usize }, - 13usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(feature3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).feature4) as usize - ptr as usize }, - 14usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(feature4) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).feature5) as usize - ptr as usize }, - 15usize, - concat!( - "Offset of field: ", - stringify!(mpf_intel), - "::", - stringify!(feature5) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct mpc_table { - pub signature: [::std::os::raw::c_char; 4usize], - pub length: ::std::os::raw::c_ushort, - pub spec: ::std::os::raw::c_char, - pub checksum: ::std::os::raw::c_char, - pub oem: [::std::os::raw::c_char; 8usize], - pub productid: [::std::os::raw::c_char; 12usize], - pub oemptr: ::std::os::raw::c_uint, - pub oemsize: ::std::os::raw::c_ushort, - pub oemcount: ::std::os::raw::c_ushort, - pub lapic: ::std::os::raw::c_uint, - pub reserved: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_mpc_table() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 44usize, - concat!("Size of: ", stringify!(mpc_table)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(mpc_table)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).signature) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(signature) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(length) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).spec) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(spec) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).checksum) as usize - ptr as usize }, - 7usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(checksum) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).oem) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(oem) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).productid) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(productid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).oemptr) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(oemptr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).oemsize) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(oemsize) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).oemcount) as usize - ptr as usize }, - 34usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(oemcount) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lapic) as usize - ptr as usize }, - 36usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(lapic) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(mpc_table), - "::", - stringify!(reserved) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct mpc_cpu { - pub type_: ::std::os::raw::c_uchar, - pub apicid: ::std::os::raw::c_uchar, - pub apicver: ::std::os::raw::c_uchar, - pub cpuflag: ::std::os::raw::c_uchar, - pub cpufeature: ::std::os::raw::c_uint, - pub featureflag: ::std::os::raw::c_uint, - pub reserved: [::std::os::raw::c_uint; 2usize], -} -#[test] -fn bindgen_test_layout_mpc_cpu() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(mpc_cpu)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(mpc_cpu)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(type_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).apicid) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(apicid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).apicver) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(apicver) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cpuflag) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(cpuflag) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cpufeature) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(cpufeature) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).featureflag) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(featureflag) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).reserved) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(mpc_cpu), - "::", - stringify!(reserved) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct mpc_bus { - pub type_: ::std::os::raw::c_uchar, - pub busid: ::std::os::raw::c_uchar, - pub bustype: [::std::os::raw::c_uchar; 6usize], -} -#[test] -fn bindgen_test_layout_mpc_bus() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(mpc_bus)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(mpc_bus)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_bus), - "::", - stringify!(type_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).busid) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(mpc_bus), - "::", - stringify!(busid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).bustype) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(mpc_bus), - "::", - stringify!(bustype) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct mpc_ioapic { - pub type_: ::std::os::raw::c_uchar, - pub apicid: ::std::os::raw::c_uchar, - pub apicver: ::std::os::raw::c_uchar, - pub flags: ::std::os::raw::c_uchar, - pub apicaddr: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_mpc_ioapic() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(mpc_ioapic)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(mpc_ioapic)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_ioapic), - "::", - stringify!(type_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).apicid) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(mpc_ioapic), - "::", - stringify!(apicid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).apicver) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(mpc_ioapic), - "::", - stringify!(apicver) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(mpc_ioapic), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).apicaddr) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_ioapic), - "::", - stringify!(apicaddr) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct mpc_intsrc { - pub type_: ::std::os::raw::c_uchar, - pub irqtype: ::std::os::raw::c_uchar, - pub irqflag: ::std::os::raw::c_ushort, - pub srcbus: ::std::os::raw::c_uchar, - pub srcbusirq: ::std::os::raw::c_uchar, - pub dstapic: ::std::os::raw::c_uchar, - pub dstirq: ::std::os::raw::c_uchar, -} -#[test] -fn bindgen_test_layout_mpc_intsrc() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(mpc_intsrc)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(mpc_intsrc)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(type_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).irqtype) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(irqtype) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).irqflag) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(irqflag) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).srcbus) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(srcbus) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).srcbusirq) as usize - ptr as usize }, - 5usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(srcbusirq) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dstapic) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(dstapic) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dstirq) as usize - ptr as usize }, - 7usize, - concat!( - "Offset of field: ", - stringify!(mpc_intsrc), - "::", - stringify!(dstirq) - ) - ); -} -pub const mp_irq_source_types_mp_INT: mp_irq_source_types = 0; -pub const mp_irq_source_types_mp_NMI: mp_irq_source_types = 1; -pub const mp_irq_source_types_mp_SMI: mp_irq_source_types = 2; -pub const mp_irq_source_types_mp_ExtINT: mp_irq_source_types = 3; -pub type mp_irq_source_types = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct mpc_lintsrc { - pub type_: ::std::os::raw::c_uchar, - pub irqtype: ::std::os::raw::c_uchar, - pub irqflag: ::std::os::raw::c_ushort, - pub srcbusid: ::std::os::raw::c_uchar, - pub srcbusirq: ::std::os::raw::c_uchar, - pub destapic: ::std::os::raw::c_uchar, - pub destapiclint: ::std::os::raw::c_uchar, -} -#[test] -fn bindgen_test_layout_mpc_lintsrc() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(mpc_lintsrc)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(mpc_lintsrc)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(type_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).irqtype) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(irqtype) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).irqflag) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(irqflag) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).srcbusid) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(srcbusid) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).srcbusirq) as usize - ptr as usize }, - 5usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(srcbusirq) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).destapic) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(destapic) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).destapiclint) as usize - ptr as usize }, - 7usize, - concat!( - "Offset of field: ", - stringify!(mpc_lintsrc), - "::", - stringify!(destapiclint) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct mpc_oemtable { - pub signature: [::std::os::raw::c_char; 4usize], - pub length: ::std::os::raw::c_ushort, - pub rev: ::std::os::raw::c_char, - pub checksum: ::std::os::raw::c_char, - pub mpc: [::std::os::raw::c_char; 8usize], -} -#[test] -fn bindgen_test_layout_mpc_oemtable() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(mpc_oemtable)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(mpc_oemtable)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).signature) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(mpc_oemtable), - "::", - stringify!(signature) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).length) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(mpc_oemtable), - "::", - stringify!(length) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rev) as usize - ptr as usize }, - 6usize, - concat!( - "Offset of field: ", - stringify!(mpc_oemtable), - "::", - stringify!(rev) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).checksum) as usize - ptr as usize }, - 7usize, - concat!( - "Offset of field: ", - stringify!(mpc_oemtable), - "::", - stringify!(checksum) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mpc) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(mpc_oemtable), - "::", - stringify!(mpc) - ) - ); -} -pub const mp_bustype_MP_BUS_ISA: mp_bustype = 1; -pub const mp_bustype_MP_BUS_EISA: mp_bustype = 2; -pub const mp_bustype_MP_BUS_PCI: mp_bustype = 3; -pub type mp_bustype = ::std::os::raw::c_uint; diff --git a/src/vmm/src/arch/x86_64/gen/arch_prctl.rs b/src/vmm/src/arch/x86_64/generated/arch_prctl.rs similarity index 95% rename from src/vmm/src/arch/x86_64/gen/arch_prctl.rs rename to src/vmm/src/arch/x86_64/generated/arch_prctl.rs index 768964e494b..44f68883141 100644 --- a/src/vmm/src/arch/x86_64/gen/arch_prctl.rs +++ b/src/vmm/src/arch/x86_64/generated/arch_prctl.rs @@ -11,7 +11,8 @@ clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] pub const ARCH_SET_GS: u32 = 4097; diff --git a/src/vmm/src/arch/x86_64/gen/hyperv.rs b/src/vmm/src/arch/x86_64/generated/hyperv.rs similarity index 83% rename from src/vmm/src/arch/x86_64/gen/hyperv.rs rename to src/vmm/src/arch/x86_64/generated/hyperv.rs index 02ccc3adbcc..49dabeaca92 100644 --- a/src/vmm/src/arch/x86_64/gen/hyperv.rs +++ b/src/vmm/src/arch/x86_64/generated/hyperv.rs @@ -1,4 +1,4 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -11,7 +11,8 @@ clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] pub const HV_X64_MSR_SYNDBG_CONTROL: u32 = 0x400000f1; diff --git a/src/vmm/src/arch/x86_64/gen/hyperv_tlfs.rs b/src/vmm/src/arch/x86_64/generated/hyperv_tlfs.rs similarity index 96% rename from src/vmm/src/arch/x86_64/gen/hyperv_tlfs.rs rename to src/vmm/src/arch/x86_64/generated/hyperv_tlfs.rs index 84b770a5506..fae4d497142 100644 --- a/src/vmm/src/arch/x86_64/gen/hyperv_tlfs.rs +++ b/src/vmm/src/arch/x86_64/generated/hyperv_tlfs.rs @@ -1,4 +1,4 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -11,7 +11,8 @@ clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] pub const HV_X64_MSR_GUEST_OS_ID: u32 = 0x40000000; diff --git a/src/vmm/src/arch/x86_64/gen/mod.rs b/src/vmm/src/arch/x86_64/generated/mod.rs similarity index 100% rename from src/vmm/src/arch/x86_64/gen/mod.rs rename to src/vmm/src/arch/x86_64/generated/mod.rs diff --git a/src/vmm/src/arch/x86_64/generated/mpspec.rs b/src/vmm/src/arch/x86_64/generated/mpspec.rs new file mode 100644 index 00000000000..38252548367 --- /dev/null +++ b/src/vmm/src/arch/x86_64/generated/mpspec.rs @@ -0,0 +1,267 @@ +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// automatically generated by tools/bindgen.sh + +#![allow( + non_camel_case_types, + non_upper_case_globals, + dead_code, + non_snake_case, + clippy::ptr_as_ptr, + clippy::undocumented_unsafe_blocks, + missing_debug_implementations, + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn +)] + +pub const MPC_SIGNATURE: &[u8; 5] = b"PCMP\0"; +pub const MP_PROCESSOR: u32 = 0; +pub const MP_BUS: u32 = 1; +pub const MP_IOAPIC: u32 = 2; +pub const MP_INTSRC: u32 = 3; +pub const MP_LINTSRC: u32 = 4; +pub const MP_TRANSLATION: u32 = 192; +pub const CPU_ENABLED: u32 = 1; +pub const CPU_BOOTPROCESSOR: u32 = 2; +pub const CPU_STEPPING_MASK: u32 = 15; +pub const CPU_MODEL_MASK: u32 = 240; +pub const CPU_FAMILY_MASK: u32 = 3840; +pub const BUSTYPE_EISA: &[u8; 5] = b"EISA\0"; +pub const BUSTYPE_ISA: &[u8; 4] = b"ISA\0"; +pub const BUSTYPE_INTERN: &[u8; 7] = b"INTERN\0"; +pub const BUSTYPE_MCA: &[u8; 4] = b"MCA\0"; +pub const BUSTYPE_VL: &[u8; 3] = b"VL\0"; +pub const BUSTYPE_PCI: &[u8; 4] = b"PCI\0"; +pub const BUSTYPE_PCMCIA: &[u8; 7] = b"PCMCIA\0"; +pub const BUSTYPE_CBUS: &[u8; 5] = b"CBUS\0"; +pub const BUSTYPE_CBUSII: &[u8; 7] = b"CBUSII\0"; +pub const BUSTYPE_FUTURE: &[u8; 7] = b"FUTURE\0"; +pub const BUSTYPE_MBI: &[u8; 4] = b"MBI\0"; +pub const BUSTYPE_MBII: &[u8; 5] = b"MBII\0"; +pub const BUSTYPE_MPI: &[u8; 4] = b"MPI\0"; +pub const BUSTYPE_MPSA: &[u8; 5] = b"MPSA\0"; +pub const BUSTYPE_NUBUS: &[u8; 6] = b"NUBUS\0"; +pub const BUSTYPE_TC: &[u8; 3] = b"TC\0"; +pub const BUSTYPE_VME: &[u8; 4] = b"VME\0"; +pub const BUSTYPE_XPRESS: &[u8; 7] = b"XPRESS\0"; +pub const MPC_APIC_USABLE: u32 = 1; +pub const MP_IRQPOL_DEFAULT: u32 = 0; +pub const MP_IRQPOL_ACTIVE_HIGH: u32 = 1; +pub const MP_IRQPOL_RESERVED: u32 = 2; +pub const MP_IRQPOL_ACTIVE_LOW: u32 = 3; +pub const MP_IRQPOL_MASK: u32 = 3; +pub const MP_IRQTRIG_DEFAULT: u32 = 0; +pub const MP_IRQTRIG_EDGE: u32 = 4; +pub const MP_IRQTRIG_RESERVED: u32 = 8; +pub const MP_IRQTRIG_LEVEL: u32 = 12; +pub const MP_IRQTRIG_MASK: u32 = 12; +pub const MP_APIC_ALL: u32 = 255; +pub const MPC_OEM_SIGNATURE: &[u8; 5] = b"_OEM\0"; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct mpf_intel { + pub signature: [::std::os::raw::c_char; 4usize], + pub physptr: ::std::os::raw::c_uint, + pub length: ::std::os::raw::c_uchar, + pub specification: ::std::os::raw::c_uchar, + pub checksum: ::std::os::raw::c_uchar, + pub feature1: ::std::os::raw::c_uchar, + pub feature2: ::std::os::raw::c_uchar, + pub feature3: ::std::os::raw::c_uchar, + pub feature4: ::std::os::raw::c_uchar, + pub feature5: ::std::os::raw::c_uchar, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of mpf_intel"][::std::mem::size_of::() - 16usize]; + ["Alignment of mpf_intel"][::std::mem::align_of::() - 4usize]; + ["Offset of field: mpf_intel::signature"] + [::std::mem::offset_of!(mpf_intel, signature) - 0usize]; + ["Offset of field: mpf_intel::physptr"][::std::mem::offset_of!(mpf_intel, physptr) - 4usize]; + ["Offset of field: mpf_intel::length"][::std::mem::offset_of!(mpf_intel, length) - 8usize]; + ["Offset of field: mpf_intel::specification"] + [::std::mem::offset_of!(mpf_intel, specification) - 9usize]; + ["Offset of field: mpf_intel::checksum"][::std::mem::offset_of!(mpf_intel, checksum) - 10usize]; + ["Offset of field: mpf_intel::feature1"][::std::mem::offset_of!(mpf_intel, feature1) - 11usize]; + ["Offset of field: mpf_intel::feature2"][::std::mem::offset_of!(mpf_intel, feature2) - 12usize]; + ["Offset of field: mpf_intel::feature3"][::std::mem::offset_of!(mpf_intel, feature3) - 13usize]; + ["Offset of field: mpf_intel::feature4"][::std::mem::offset_of!(mpf_intel, feature4) - 14usize]; + ["Offset of field: mpf_intel::feature5"][::std::mem::offset_of!(mpf_intel, feature5) - 15usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct mpc_table { + pub signature: [::std::os::raw::c_char; 4usize], + pub length: ::std::os::raw::c_ushort, + pub spec: ::std::os::raw::c_char, + pub checksum: ::std::os::raw::c_char, + pub oem: [::std::os::raw::c_char; 8usize], + pub productid: [::std::os::raw::c_char; 12usize], + pub oemptr: ::std::os::raw::c_uint, + pub oemsize: ::std::os::raw::c_ushort, + pub oemcount: ::std::os::raw::c_ushort, + pub lapic: ::std::os::raw::c_uint, + pub reserved: ::std::os::raw::c_uint, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of mpc_table"][::std::mem::size_of::() - 44usize]; + ["Alignment of mpc_table"][::std::mem::align_of::() - 4usize]; + ["Offset of field: mpc_table::signature"] + [::std::mem::offset_of!(mpc_table, signature) - 0usize]; + ["Offset of field: mpc_table::length"][::std::mem::offset_of!(mpc_table, length) - 4usize]; + ["Offset of field: mpc_table::spec"][::std::mem::offset_of!(mpc_table, spec) - 6usize]; + ["Offset of field: mpc_table::checksum"][::std::mem::offset_of!(mpc_table, checksum) - 7usize]; + ["Offset of field: mpc_table::oem"][::std::mem::offset_of!(mpc_table, oem) - 8usize]; + ["Offset of field: mpc_table::productid"] + [::std::mem::offset_of!(mpc_table, productid) - 16usize]; + ["Offset of field: mpc_table::oemptr"][::std::mem::offset_of!(mpc_table, oemptr) - 28usize]; + ["Offset of field: mpc_table::oemsize"][::std::mem::offset_of!(mpc_table, oemsize) - 32usize]; + ["Offset of field: mpc_table::oemcount"][::std::mem::offset_of!(mpc_table, oemcount) - 34usize]; + ["Offset of field: mpc_table::lapic"][::std::mem::offset_of!(mpc_table, lapic) - 36usize]; + ["Offset of field: mpc_table::reserved"][::std::mem::offset_of!(mpc_table, reserved) - 40usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct mpc_cpu { + pub type_: ::std::os::raw::c_uchar, + pub apicid: ::std::os::raw::c_uchar, + pub apicver: ::std::os::raw::c_uchar, + pub cpuflag: ::std::os::raw::c_uchar, + pub cpufeature: ::std::os::raw::c_uint, + pub featureflag: ::std::os::raw::c_uint, + pub reserved: [::std::os::raw::c_uint; 2usize], +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of mpc_cpu"][::std::mem::size_of::() - 20usize]; + ["Alignment of mpc_cpu"][::std::mem::align_of::() - 4usize]; + ["Offset of field: mpc_cpu::type_"][::std::mem::offset_of!(mpc_cpu, type_) - 0usize]; + ["Offset of field: mpc_cpu::apicid"][::std::mem::offset_of!(mpc_cpu, apicid) - 1usize]; + ["Offset of field: mpc_cpu::apicver"][::std::mem::offset_of!(mpc_cpu, apicver) - 2usize]; + ["Offset of field: mpc_cpu::cpuflag"][::std::mem::offset_of!(mpc_cpu, cpuflag) - 3usize]; + ["Offset of field: mpc_cpu::cpufeature"][::std::mem::offset_of!(mpc_cpu, cpufeature) - 4usize]; + ["Offset of field: mpc_cpu::featureflag"] + [::std::mem::offset_of!(mpc_cpu, featureflag) - 8usize]; + ["Offset of field: mpc_cpu::reserved"][::std::mem::offset_of!(mpc_cpu, reserved) - 12usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct mpc_bus { + pub type_: ::std::os::raw::c_uchar, + pub busid: ::std::os::raw::c_uchar, + pub bustype: [::std::os::raw::c_uchar; 6usize], +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of mpc_bus"][::std::mem::size_of::() - 8usize]; + ["Alignment of mpc_bus"][::std::mem::align_of::() - 1usize]; + ["Offset of field: mpc_bus::type_"][::std::mem::offset_of!(mpc_bus, type_) - 0usize]; + ["Offset of field: mpc_bus::busid"][::std::mem::offset_of!(mpc_bus, busid) - 1usize]; + ["Offset of field: mpc_bus::bustype"][::std::mem::offset_of!(mpc_bus, bustype) - 2usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct mpc_ioapic { + pub type_: ::std::os::raw::c_uchar, + pub apicid: ::std::os::raw::c_uchar, + pub apicver: ::std::os::raw::c_uchar, + pub flags: ::std::os::raw::c_uchar, + pub apicaddr: ::std::os::raw::c_uint, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of mpc_ioapic"][::std::mem::size_of::() - 8usize]; + ["Alignment of mpc_ioapic"][::std::mem::align_of::() - 4usize]; + ["Offset of field: mpc_ioapic::type_"][::std::mem::offset_of!(mpc_ioapic, type_) - 0usize]; + ["Offset of field: mpc_ioapic::apicid"][::std::mem::offset_of!(mpc_ioapic, apicid) - 1usize]; + ["Offset of field: mpc_ioapic::apicver"][::std::mem::offset_of!(mpc_ioapic, apicver) - 2usize]; + ["Offset of field: mpc_ioapic::flags"][::std::mem::offset_of!(mpc_ioapic, flags) - 3usize]; + ["Offset of field: mpc_ioapic::apicaddr"] + [::std::mem::offset_of!(mpc_ioapic, apicaddr) - 4usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct mpc_intsrc { + pub type_: ::std::os::raw::c_uchar, + pub irqtype: ::std::os::raw::c_uchar, + pub irqflag: ::std::os::raw::c_ushort, + pub srcbus: ::std::os::raw::c_uchar, + pub srcbusirq: ::std::os::raw::c_uchar, + pub dstapic: ::std::os::raw::c_uchar, + pub dstirq: ::std::os::raw::c_uchar, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of mpc_intsrc"][::std::mem::size_of::() - 8usize]; + ["Alignment of mpc_intsrc"][::std::mem::align_of::() - 2usize]; + ["Offset of field: mpc_intsrc::type_"][::std::mem::offset_of!(mpc_intsrc, type_) - 0usize]; + ["Offset of field: mpc_intsrc::irqtype"][::std::mem::offset_of!(mpc_intsrc, irqtype) - 1usize]; + ["Offset of field: mpc_intsrc::irqflag"][::std::mem::offset_of!(mpc_intsrc, irqflag) - 2usize]; + ["Offset of field: mpc_intsrc::srcbus"][::std::mem::offset_of!(mpc_intsrc, srcbus) - 4usize]; + ["Offset of field: mpc_intsrc::srcbusirq"] + [::std::mem::offset_of!(mpc_intsrc, srcbusirq) - 5usize]; + ["Offset of field: mpc_intsrc::dstapic"][::std::mem::offset_of!(mpc_intsrc, dstapic) - 6usize]; + ["Offset of field: mpc_intsrc::dstirq"][::std::mem::offset_of!(mpc_intsrc, dstirq) - 7usize]; +}; +pub const mp_irq_source_types_mp_INT: mp_irq_source_types = 0; +pub const mp_irq_source_types_mp_NMI: mp_irq_source_types = 1; +pub const mp_irq_source_types_mp_SMI: mp_irq_source_types = 2; +pub const mp_irq_source_types_mp_ExtINT: mp_irq_source_types = 3; +pub type mp_irq_source_types = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct mpc_lintsrc { + pub type_: ::std::os::raw::c_uchar, + pub irqtype: ::std::os::raw::c_uchar, + pub irqflag: ::std::os::raw::c_ushort, + pub srcbusid: ::std::os::raw::c_uchar, + pub srcbusirq: ::std::os::raw::c_uchar, + pub destapic: ::std::os::raw::c_uchar, + pub destapiclint: ::std::os::raw::c_uchar, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of mpc_lintsrc"][::std::mem::size_of::() - 8usize]; + ["Alignment of mpc_lintsrc"][::std::mem::align_of::() - 2usize]; + ["Offset of field: mpc_lintsrc::type_"][::std::mem::offset_of!(mpc_lintsrc, type_) - 0usize]; + ["Offset of field: mpc_lintsrc::irqtype"] + [::std::mem::offset_of!(mpc_lintsrc, irqtype) - 1usize]; + ["Offset of field: mpc_lintsrc::irqflag"] + [::std::mem::offset_of!(mpc_lintsrc, irqflag) - 2usize]; + ["Offset of field: mpc_lintsrc::srcbusid"] + [::std::mem::offset_of!(mpc_lintsrc, srcbusid) - 4usize]; + ["Offset of field: mpc_lintsrc::srcbusirq"] + [::std::mem::offset_of!(mpc_lintsrc, srcbusirq) - 5usize]; + ["Offset of field: mpc_lintsrc::destapic"] + [::std::mem::offset_of!(mpc_lintsrc, destapic) - 6usize]; + ["Offset of field: mpc_lintsrc::destapiclint"] + [::std::mem::offset_of!(mpc_lintsrc, destapiclint) - 7usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct mpc_oemtable { + pub signature: [::std::os::raw::c_char; 4usize], + pub length: ::std::os::raw::c_ushort, + pub rev: ::std::os::raw::c_char, + pub checksum: ::std::os::raw::c_char, + pub mpc: [::std::os::raw::c_char; 8usize], +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of mpc_oemtable"][::std::mem::size_of::() - 16usize]; + ["Alignment of mpc_oemtable"][::std::mem::align_of::() - 2usize]; + ["Offset of field: mpc_oemtable::signature"] + [::std::mem::offset_of!(mpc_oemtable, signature) - 0usize]; + ["Offset of field: mpc_oemtable::length"] + [::std::mem::offset_of!(mpc_oemtable, length) - 4usize]; + ["Offset of field: mpc_oemtable::rev"][::std::mem::offset_of!(mpc_oemtable, rev) - 6usize]; + ["Offset of field: mpc_oemtable::checksum"] + [::std::mem::offset_of!(mpc_oemtable, checksum) - 7usize]; + ["Offset of field: mpc_oemtable::mpc"][::std::mem::offset_of!(mpc_oemtable, mpc) - 8usize]; +}; +pub const mp_bustype_MP_BUS_ISA: mp_bustype = 1; +pub const mp_bustype_MP_BUS_EISA: mp_bustype = 2; +pub const mp_bustype_MP_BUS_PCI: mp_bustype = 3; +pub type mp_bustype = ::std::os::raw::c_uint; diff --git a/src/vmm/src/arch/x86_64/gen/msr_index.rs b/src/vmm/src/arch/x86_64/generated/msr_index.rs similarity index 99% rename from src/vmm/src/arch/x86_64/gen/msr_index.rs rename to src/vmm/src/arch/x86_64/generated/msr_index.rs index 0acc88b6fd1..041bffe7ec3 100644 --- a/src/vmm/src/arch/x86_64/gen/msr_index.rs +++ b/src/vmm/src/arch/x86_64/generated/msr_index.rs @@ -1,4 +1,4 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -11,7 +11,8 @@ clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] pub const MSR_EFER: u32 = 0xc0000080; diff --git a/src/vmm/src/arch/x86_64/gen/perf_event.rs b/src/vmm/src/arch/x86_64/generated/perf_event.rs similarity index 85% rename from src/vmm/src/arch/x86_64/gen/perf_event.rs rename to src/vmm/src/arch/x86_64/generated/perf_event.rs index f00951e0c19..66b851e3451 100644 --- a/src/vmm/src/arch/x86_64/gen/perf_event.rs +++ b/src/vmm/src/arch/x86_64/generated/perf_event.rs @@ -1,4 +1,4 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -11,7 +11,8 @@ clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] pub const MSR_ARCH_PERFMON_PERFCTR0: u32 = 0xc1; diff --git a/src/vmm/src/arch/x86_64/mod.rs b/src/vmm/src/arch/x86_64/mod.rs index 973e7235c98..f10fd3446d8 100644 --- a/src/vmm/src/arch/x86_64/mod.rs +++ b/src/vmm/src/arch/x86_64/mod.rs @@ -23,7 +23,7 @@ pub mod regs; pub mod xstate; #[allow(missing_docs)] -pub mod gen; +pub mod generated; use linux_loader::configurator::linux::LinuxBootConfigurator; use linux_loader::configurator::pvh::PvhBootConfigurator; @@ -502,12 +502,14 @@ mod tests { // Exercise the scenario where the field storing the length of the e820 entry table is // is bigger than the allocated memory. params.e820_entries = u8::try_from(params.e820_table.len()).unwrap() + 1; - assert!(add_e820_entry( - &mut params, - e820_map[0].addr, - e820_map[0].size, - e820_map[0].type_ - ) - .is_err()); + assert!( + add_e820_entry( + &mut params, + e820_map[0].addr, + e820_map[0].size, + e820_map[0].type_ + ) + .is_err() + ); } } diff --git a/src/vmm/src/arch/x86_64/mptable.rs b/src/vmm/src/arch/x86_64/mptable.rs index 9944ecee8fb..6646c17e282 100644 --- a/src/vmm/src/arch/x86_64/mptable.rs +++ b/src/vmm/src/arch/x86_64/mptable.rs @@ -13,8 +13,8 @@ use libc::c_char; use log::debug; use vm_allocator::AllocPolicy; -use crate::arch::x86_64::gen::mpspec; use crate::arch::IRQ_MAX; +use crate::arch::x86_64::generated::mpspec; use crate::device_manager::resources::ResourceAllocator; use crate::vstate::memory::{ Address, ByteValued, Bytes, GuestAddress, GuestMemory, GuestMemoryMmap, diff --git a/src/vmm/src/arch/x86_64/msr.rs b/src/vmm/src/arch/x86_64/msr.rs index 325d6ed6b29..f8674c6c3a5 100644 --- a/src/vmm/src/arch/x86_64/msr.rs +++ b/src/vmm/src/arch/x86_64/msr.rs @@ -3,13 +3,13 @@ /// Model Specific Registers (MSRs) related functionality. use bitflags::bitflags; -use kvm_bindings::{kvm_msr_entry, MsrList, Msrs}; +use kvm_bindings::{MsrList, Msrs, kvm_msr_entry}; use kvm_ioctls::{Kvm, VcpuFd}; -use crate::arch::x86_64::gen::hyperv::*; -use crate::arch::x86_64::gen::hyperv_tlfs::*; -use crate::arch::x86_64::gen::msr_index::*; -use crate::arch::x86_64::gen::perf_event::*; +use crate::arch::x86_64::generated::hyperv::*; +use crate::arch::x86_64::generated::hyperv_tlfs::*; +use crate::arch::x86_64::generated::msr_index::*; +use crate::arch::x86_64::generated::perf_event::*; use crate::cpu_config::x86_64::cpuid::common::GetCpuidError; #[derive(Debug, PartialEq, Eq, thiserror::Error, displaydoc::Display)] diff --git a/src/vmm/src/arch/x86_64/xstate.rs b/src/vmm/src/arch/x86_64/xstate.rs index 91197d076ba..78e509dc819 100644 --- a/src/vmm/src/arch/x86_64/xstate.rs +++ b/src/vmm/src/arch/x86_64/xstate.rs @@ -3,7 +3,7 @@ use vmm_sys_util::syscall::SyscallReturnCode; -use crate::arch::x86_64::gen::arch_prctl; +use crate::arch::x86_64::generated::arch_prctl; const INTEL_AMX_MASK: u64 = 1u64 << arch_prctl::ARCH_XCOMP_TILEDATA; diff --git a/src/vmm/src/builder.rs b/src/vmm/src/builder.rs index 9e583f49cc1..476bbc365c9 100644 --- a/src/vmm/src/builder.rs +++ b/src/vmm/src/builder.rs @@ -14,13 +14,13 @@ use std::sync::{Arc, Mutex}; use event_manager::{MutEventSubscriber, SubscriberOps}; use libc::EFD_NONBLOCK; use linux_loader::cmdline::Cmdline as LoaderKernelCmdline; +use linux_loader::loader::KernelLoader; #[cfg(target_arch = "x86_64")] use linux_loader::loader::elf::Elf as Loader; #[cfg(target_arch = "x86_64")] use linux_loader::loader::elf::PvhBootCapability; #[cfg(target_arch = "aarch64")] use linux_loader::loader::pe::PE as Loader; -use linux_loader::loader::KernelLoader; use userfaultfd::Uffd; use utils::time::TimestampUs; use vm_memory::ReadVolatile; @@ -46,10 +46,11 @@ use crate::device_manager::persist::{ ACPIDeviceManagerConstructorArgs, ACPIDeviceManagerRestoreError, MMIODevManagerConstructorArgs, }; use crate::device_manager::resources::ResourceAllocator; +use crate::devices::BusDevice; use crate::devices::acpi::vmgenid::{VmGenId, VmGenIdError}; -use crate::devices::legacy::serial::SerialOut; #[cfg(target_arch = "aarch64")] use crate::devices::legacy::RTCDevice; +use crate::devices::legacy::serial::SerialOut; use crate::devices::legacy::{EventFdTrigger, SerialEventsWrapper, SerialWrapper}; use crate::devices::virtio::balloon::Balloon; use crate::devices::virtio::block::device::Block; @@ -58,7 +59,6 @@ use crate::devices::virtio::mmio::MmioTransport; use crate::devices::virtio::net::Net; use crate::devices::virtio::rng::Entropy; use crate::devices::virtio::vsock::{Vsock, VsockUnixBackend}; -use crate::devices::BusDevice; #[cfg(feature = "gdb")] use crate::gdb; use crate::logger::{debug, error}; @@ -74,7 +74,7 @@ use crate::vstate::kvm::Kvm; use crate::vstate::memory::{GuestAddress, GuestMemory, GuestMemoryMmap}; use crate::vstate::vcpu::{Vcpu, VcpuConfig, VcpuError}; use crate::vstate::vm::Vm; -use crate::{device_manager, EventManager, Vmm, VmmError}; +use crate::{EventManager, Vmm, VmmError, device_manager}; /// Errors associated with starting the instance. #[derive(Debug, thiserror::Error, displaydoc::Display)] @@ -655,17 +655,16 @@ where { use self::StartMicrovmError::{InitrdLoad, InitrdRead}; - let size: usize; // Get the image size - match image.seek(SeekFrom::End(0)) { + let size = match image.seek(SeekFrom::End(0)) { Err(err) => return Err(InitrdRead(err)), Ok(0) => { return Err(InitrdRead(io::Error::new( io::ErrorKind::InvalidData, "Initrd image seek returned a size of zero", - ))) + ))); } - Ok(s) => size = u64_to_usize(s), + Ok(s) => u64_to_usize(s), }; // Go back to the image start image.seek(SeekFrom::Start(0)).map_err(InitrdRead)?; @@ -961,9 +960,7 @@ fn attach_block_devices<'a, I: Iterator>> + Debug>( let locked = block.lock().expect("Poisoned lock"); if locked.root_device() { match locked.partuuid() { - Some(ref partuuid) => { - cmdline.insert_str(format!("root=PARTUUID={}", partuuid))? - } + Some(partuuid) => cmdline.insert_str(format!("root=PARTUUID={}", partuuid))?, None => cmdline.insert_str("root=/dev/vda")?, } match locked.read_only() { @@ -1053,7 +1050,7 @@ pub(crate) mod tests { use crate::mmds::data_store::{Mmds, MmdsVersion}; use crate::mmds::ns::MmdsNetworkStack; use crate::test_utils::{single_region_mem, single_region_mem_at}; - use crate::vmm_config::balloon::{BalloonBuilder, BalloonDeviceConfig, BALLOON_DEV_ID}; + use crate::vmm_config::balloon::{BALLOON_DEV_ID, BalloonBuilder, BalloonDeviceConfig}; use crate::vmm_config::boot_source::DEFAULT_KERNEL_CMDLINE; use crate::vmm_config::drive::{BlockBuilder, BlockDeviceConfig}; use crate::vmm_config::entropy::{EntropyDeviceBuilder, EntropyDeviceConfig}; @@ -1247,10 +1244,11 @@ pub(crate) mod tests { attach_unixsock_vsock_device(vmm, cmdline, &vsock, event_manager).unwrap(); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_VSOCK), &vsock_dev_id) - .is_some()); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_VSOCK), &vsock_dev_id) + .is_some() + ); } pub(crate) fn insert_entropy_device( @@ -1264,10 +1262,11 @@ pub(crate) mod tests { attach_entropy_device(vmm, cmdline, &entropy, event_manager).unwrap(); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_RNG), ENTROPY_DEV_ID) - .is_some()); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_RNG), ENTROPY_DEV_ID) + .is_some() + ); } #[cfg(target_arch = "x86_64")] @@ -1288,10 +1287,11 @@ pub(crate) mod tests { attach_balloon_device(vmm, cmdline, balloon, event_manager).unwrap(); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_BALLOON), BALLOON_DEV_ID) - .is_some()); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_BALLOON), BALLOON_DEV_ID) + .is_some() + ); } fn make_test_bin() -> Vec { @@ -1399,10 +1399,11 @@ pub(crate) mod tests { let mut cmdline = default_kernel_cmdline(); insert_block_devices(&mut vmm, &mut cmdline, &mut event_manager, block_configs); assert!(cmdline_contains(&cmdline, "root=/dev/vda ro")); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) - .is_some()); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) + .is_some() + ); } // Use case 2: root block device is specified through PARTUUID. @@ -1419,10 +1420,11 @@ pub(crate) mod tests { let mut cmdline = default_kernel_cmdline(); insert_block_devices(&mut vmm, &mut cmdline, &mut event_manager, block_configs); assert!(cmdline_contains(&cmdline, "root=PARTUUID=0eaa91a0-01 rw")); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) - .is_some()); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) + .is_some() + ); } // Use case 3: root block device is not added at all. @@ -1440,10 +1442,11 @@ pub(crate) mod tests { insert_block_devices(&mut vmm, &mut cmdline, &mut event_manager, block_configs); assert!(!cmdline_contains(&cmdline, "root=PARTUUID=")); assert!(!cmdline_contains(&cmdline, "root=/dev/vda")); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) - .is_some()); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) + .is_some() + ); } // Use case 4: rw root block device and other rw and ro drives. @@ -1476,18 +1479,21 @@ pub(crate) mod tests { insert_block_devices(&mut vmm, &mut cmdline, &mut event_manager, block_configs); assert!(cmdline_contains(&cmdline, "root=PARTUUID=0eaa91a0-01 rw")); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_BLOCK), "root") - .is_some()); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_BLOCK), "secondary") - .is_some()); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_BLOCK), "third") - .is_some()); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_BLOCK), "root") + .is_some() + ); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_BLOCK), "secondary") + .is_some() + ); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_BLOCK), "third") + .is_some() + ); // Check if these three block devices are inserted in kernel_cmdline. #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] @@ -1512,10 +1518,11 @@ pub(crate) mod tests { let mut cmdline = default_kernel_cmdline(); insert_block_devices(&mut vmm, &mut cmdline, &mut event_manager, block_configs); assert!(cmdline_contains(&cmdline, "root=/dev/vda rw")); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) - .is_some()); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) + .is_some() + ); } // Use case 6: root block device is ro, with PARTUUID. @@ -1532,10 +1539,11 @@ pub(crate) mod tests { let mut cmdline = default_kernel_cmdline(); insert_block_devices(&mut vmm, &mut cmdline, &mut event_manager, block_configs); assert!(cmdline_contains(&cmdline, "root=PARTUUID=0eaa91a0-01 ro")); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) - .is_some()); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) + .is_some() + ); } // Use case 7: root block device is rw with flush enabled @@ -1552,10 +1560,11 @@ pub(crate) mod tests { let mut cmdline = default_kernel_cmdline(); insert_block_devices(&mut vmm, &mut cmdline, &mut event_manager, block_configs); assert!(cmdline_contains(&cmdline, "root=/dev/vda rw")); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) - .is_some()); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::Virtio(TYPE_BLOCK), drive_id.as_str()) + .is_some() + ); } } @@ -1566,10 +1575,11 @@ pub(crate) mod tests { let res = attach_boot_timer_device(&mut vmm, request_ts); res.unwrap(); - assert!(vmm - .mmio_device_manager - .get_device(DeviceType::BootTimer, &DeviceType::BootTimer.to_string()) - .is_some()); + assert!( + vmm.mmio_device_manager + .get_device(DeviceType::BootTimer, &DeviceType::BootTimer.to_string()) + .is_some() + ); } #[test] diff --git a/src/vmm/src/cpu_config/aarch64/custom_cpu_template.rs b/src/vmm/src/cpu_config/aarch64/custom_cpu_template.rs index 8c51916bafc..2869f28ff4a 100644 --- a/src/vmm/src/cpu_config/aarch64/custom_cpu_template.rs +++ b/src/vmm/src/cpu_config/aarch64/custom_cpu_template.rs @@ -8,7 +8,7 @@ use std::borrow::Cow; use serde::de::Error; use serde::{Deserialize, Serialize}; -use crate::arch::aarch64::regs::{reg_size, RegSize}; +use crate::arch::aarch64::regs::{RegSize, reg_size}; use crate::cpu_config::aarch64::static_cpu_templates::v1n1; use crate::cpu_config::templates::{ CpuTemplateType, GetCpuTemplate, GetCpuTemplateError, KvmCapability, RegisterValueFilter, @@ -79,7 +79,7 @@ impl CustomCpuTemplate { "Invalid aarch64 register address: {:#x} - Only 32, 64 and 128 bit wide \ registers are supported", modifier.addr - ))) + ))); } } } @@ -116,7 +116,7 @@ mod tests { use serde_json::Value; use super::*; - use crate::cpu_config::templates::test_utils::{build_test_template, TEST_TEMPLATE_JSON}; + use crate::cpu_config::templates::test_utils::{TEST_TEMPLATE_JSON, build_test_template}; #[test] fn test_get_cpu_template_with_no_template() { @@ -231,10 +231,12 @@ mod tests { ] }"#, ); - assert!(cpu_config_result - .unwrap_err() - .to_string() - .contains("Failed to parse string [0bK] as a number for CPU template")); + assert!( + cpu_config_result + .unwrap_err() + .to_string() + .contains("Failed to parse string [0bK] as a number for CPU template") + ); // Malformed 64-bit bitmap - filter failed let cpu_config_result = serde_json::from_str::( @@ -262,10 +264,11 @@ mod tests { ] }"#, ); - assert!(cpu_config_result - .unwrap_err() - .to_string() - .contains("Failed to parse string [0bx00100x0x1xxxx05xxx1xxxxxxxxxxx1] as a bitmap")); + assert!( + cpu_config_result.unwrap_err().to_string().contains( + "Failed to parse string [0bx00100x0x1xxxx05xxx1xxxxxxxxxxx1] as a bitmap" + ) + ); } #[test] diff --git a/src/vmm/src/cpu_config/templates.rs b/src/vmm/src/cpu_config/templates.rs index fa883964ed8..559da632cc4 100644 --- a/src/vmm/src/cpu_config/templates.rs +++ b/src/vmm/src/cpu_config/templates.rs @@ -6,7 +6,7 @@ mod common_types { pub use crate::cpu_config::x86_64::custom_cpu_template::CustomCpuTemplate; pub use crate::cpu_config::x86_64::static_cpu_templates::StaticCpuTemplate; pub use crate::cpu_config::x86_64::{ - test_utils, CpuConfiguration, CpuConfigurationError as GuestConfigError, + CpuConfiguration, CpuConfigurationError as GuestConfigError, test_utils, }; } @@ -15,7 +15,7 @@ mod common_types { pub use crate::cpu_config::aarch64::custom_cpu_template::CustomCpuTemplate; pub use crate::cpu_config::aarch64::static_cpu_templates::StaticCpuTemplate; pub use crate::cpu_config::aarch64::{ - test_utils, CpuConfiguration, CpuConfigurationError as GuestConfigError, + CpuConfiguration, CpuConfigurationError as GuestConfigError, test_utils, }; } @@ -250,7 +250,7 @@ where return Err(D::Error::custom(format!( "Failed to parse string [{}] as a bitmap - unknown character: {}", original_str, c - ))) + ))); } } i += 1; diff --git a/src/vmm/src/cpu_config/templates_serde.rs b/src/vmm/src/cpu_config/templates_serde.rs index 11eb6062853..91bb37b29dc 100644 --- a/src/vmm/src/cpu_config/templates_serde.rs +++ b/src/vmm/src/cpu_config/templates_serde.rs @@ -51,8 +51,8 @@ deserialize_from_str!(deserialize_from_str_u64, u64); #[cfg(test)] mod tests { - use serde::de::value::{Error, StrDeserializer}; use serde::de::IntoDeserializer; + use serde::de::value::{Error, StrDeserializer}; use super::*; diff --git a/src/vmm/src/cpu_config/x86_64/cpuid/amd/normalize.rs b/src/vmm/src/cpu_config/x86_64/cpuid/amd/normalize.rs index f2f46b54c3d..111960db00a 100644 --- a/src/vmm/src/cpu_config/x86_64/cpuid/amd/normalize.rs +++ b/src/vmm/src/cpu_config/x86_64/cpuid/amd/normalize.rs @@ -1,13 +1,13 @@ // Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -use crate::cpu_config::x86_64::cpuid::common::{get_vendor_id_from_host, GetCpuidError}; +use crate::cpu_config::x86_64::cpuid::common::{GetCpuidError, get_vendor_id_from_host}; use crate::cpu_config::x86_64::cpuid::normalize::{ - get_range, set_bit, set_range, CheckedAssignError, + CheckedAssignError, get_range, set_bit, set_range, }; use crate::cpu_config::x86_64::cpuid::{ - cpuid, cpuid_count, CpuidEntry, CpuidKey, CpuidRegisters, CpuidTrait, KvmCpuidFlags, - MissingBrandStringLeaves, BRAND_STRING_LENGTH, VENDOR_ID_AMD, + BRAND_STRING_LENGTH, CpuidEntry, CpuidKey, CpuidRegisters, CpuidTrait, KvmCpuidFlags, + MissingBrandStringLeaves, VENDOR_ID_AMD, cpuid, cpuid_count, }; /// Error type for [`super::AmdCpuid::normalize`]. diff --git a/src/vmm/src/cpu_config/x86_64/cpuid/common.rs b/src/vmm/src/cpu_config/x86_64/cpuid/common.rs index 3b89183293c..4046346e125 100644 --- a/src/vmm/src/cpu_config/x86_64/cpuid/common.rs +++ b/src/vmm/src/cpu_config/x86_64/cpuid/common.rs @@ -98,7 +98,7 @@ pub(crate) fn msrs_to_save_by_cpuid(cpuid: &kvm_bindings::CpuId) -> Vec { 0, ebx, MPX_BITINDEX, - [crate::arch::x86_64::gen::msr_index::MSR_IA32_BNDCFGS] + [crate::arch::x86_64::generated::msr_index::MSR_IA32_BNDCFGS] ); // IA32_MTRR_PHYSBASEn, IA32_MTRR_PHYSMASKn diff --git a/src/vmm/src/cpu_config/x86_64/cpuid/intel/normalize.rs b/src/vmm/src/cpu_config/x86_64/cpuid/intel/normalize.rs index 74536e44241..41bc9d3f3f5 100644 --- a/src/vmm/src/cpu_config/x86_64/cpuid/intel/normalize.rs +++ b/src/vmm/src/cpu_config/x86_64/cpuid/intel/normalize.rs @@ -2,11 +2,11 @@ // SPDX-License-Identifier: Apache-2.0 use crate::cpu_config::x86_64::cpuid::normalize::{ - get_range, set_bit, set_range, CheckedAssignError, + CheckedAssignError, get_range, set_bit, set_range, }; use crate::cpu_config::x86_64::cpuid::{ - host_brand_string, CpuidKey, CpuidRegisters, CpuidTrait, MissingBrandStringLeaves, - BRAND_STRING_LENGTH, + BRAND_STRING_LENGTH, CpuidKey, CpuidRegisters, CpuidTrait, MissingBrandStringLeaves, + host_brand_string, }; /// Error type for [`super::IntelCpuid::normalize`]. diff --git a/src/vmm/src/cpu_config/x86_64/cpuid/mod.rs b/src/vmm/src/cpu_config/x86_64/cpuid/mod.rs index 2350d30479d..41a5409799a 100644 --- a/src/vmm/src/cpu_config/x86_64/cpuid/mod.rs +++ b/src/vmm/src/cpu_config/x86_64/cpuid/mod.rs @@ -720,12 +720,14 @@ mod tests { }), None ); - assert!(cpuid - .get(&CpuidKey { - leaf: 0x0, - subleaf: 0x0, - }) - .is_some()); + assert!( + cpuid + .get(&CpuidKey { + leaf: 0x0, + subleaf: 0x0, + }) + .is_some() + ); } #[test] @@ -738,12 +740,14 @@ mod tests { }), None ); - assert!(cpuid - .get_mut(&CpuidKey { - leaf: 0x0, - subleaf: 0x0, - }) - .is_some()); + assert!( + cpuid + .get_mut(&CpuidKey { + leaf: 0x0, + subleaf: 0x0, + }) + .is_some() + ); } #[test] diff --git a/src/vmm/src/cpu_config/x86_64/cpuid/normalize.rs b/src/vmm/src/cpu_config/x86_64/cpuid/normalize.rs index 2ac00b23a54..cec8aad2f4c 100644 --- a/src/vmm/src/cpu_config/x86_64/cpuid/normalize.rs +++ b/src/vmm/src/cpu_config/x86_64/cpuid/normalize.rs @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 use crate::cpu_config::x86_64::cpuid::{ - cpuid, CpuidEntry, CpuidKey, CpuidRegisters, CpuidTrait, KvmCpuidFlags, + CpuidEntry, CpuidKey, CpuidRegisters, CpuidTrait, KvmCpuidFlags, cpuid, }; /// Error type for [`super::Cpuid::normalize`]. diff --git a/src/vmm/src/cpu_config/x86_64/custom_cpu_template.rs b/src/vmm/src/cpu_config/x86_64/custom_cpu_template.rs index 0443d997ead..15ba76abbe4 100644 --- a/src/vmm/src/cpu_config/x86_64/custom_cpu_template.rs +++ b/src/vmm/src/cpu_config/x86_64/custom_cpu_template.rs @@ -15,7 +15,7 @@ use crate::cpu_config::templates::{ use crate::cpu_config::templates_serde::*; use crate::cpu_config::x86_64::cpuid::common::get_vendor_id_from_host; use crate::cpu_config::x86_64::cpuid::{KvmCpuidFlags, VENDOR_ID_AMD, VENDOR_ID_INTEL}; -use crate::cpu_config::x86_64::static_cpu_templates::{c3, t2, t2a, t2cl, t2s, StaticCpuTemplate}; +use crate::cpu_config::x86_64::static_cpu_templates::{StaticCpuTemplate, c3, t2, t2a, t2cl, t2s}; use crate::logger::warn; impl GetCpuTemplate for Option { @@ -192,7 +192,7 @@ where _ => { return Err(D::Error::custom( "Invalid CPUID register. Must be one of [eax, ebx, ecx, edx]", - )) + )); } }) } @@ -214,7 +214,7 @@ mod tests { use serde_json::Value; use super::*; - use crate::cpu_config::x86_64::test_utils::{build_test_template, TEST_TEMPLATE_JSON}; + use crate::cpu_config::x86_64::test_utils::{TEST_TEMPLATE_JSON, build_test_template}; #[test] fn test_get_cpu_template_with_no_template() { @@ -386,10 +386,12 @@ mod tests { ], }"#, ); - assert!(cpu_template_result - .unwrap_err() - .to_string() - .contains("Invalid CPUID register. Must be one of [eax, ebx, ecx, edx]")); + assert!( + cpu_template_result + .unwrap_err() + .to_string() + .contains("Invalid CPUID register. Must be one of [eax, ebx, ecx, edx]") + ); // Malformed MSR register address let cpu_template_result = serde_json::from_str::( @@ -460,10 +462,11 @@ mod tests { ] }"#, ); - assert!(cpu_template_result - .unwrap_err() - .to_string() - .contains("Failed to parse string [0bx00100x0x1xxxx05xxx1xxxxxxxxxxx1] as a bitmap")); + assert!( + cpu_template_result.unwrap_err().to_string().contains( + "Failed to parse string [0bx00100x0x1xxxx05xxx1xxxxxxxxxxx1] as a bitmap" + ) + ); } #[test] diff --git a/src/vmm/src/device_manager/acpi.rs b/src/vmm/src/device_manager/acpi.rs index 03315cbcc3c..78f1254d2fa 100644 --- a/src/vmm/src/device_manager/acpi.rs +++ b/src/vmm/src/device_manager/acpi.rs @@ -1,7 +1,7 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -use acpi_tables::{aml, Aml}; +use acpi_tables::{Aml, aml}; use kvm_ioctls::VmFd; use crate::devices::acpi::vmgenid::VmGenId; diff --git a/src/vmm/src/device_manager/legacy.rs b/src/vmm/src/device_manager/legacy.rs index eee2f86dc83..7ced10dbbe5 100644 --- a/src/vmm/src/device_manager/legacy.rs +++ b/src/vmm/src/device_manager/legacy.rs @@ -10,7 +10,7 @@ use std::fmt::Debug; use std::sync::{Arc, Mutex}; use acpi_tables::aml::AmlError; -use acpi_tables::{aml, Aml}; +use acpi_tables::{Aml, aml}; use kvm_ioctls::VmFd; use libc::EFD_NONBLOCK; use vm_superio::Serial; diff --git a/src/vmm/src/device_manager/mmio.rs b/src/vmm/src/device_manager/mmio.rs index dc814de9766..b4961623a15 100644 --- a/src/vmm/src/device_manager/mmio.rs +++ b/src/vmm/src/device_manager/mmio.rs @@ -11,7 +11,7 @@ use std::num::NonZeroU32; use std::sync::{Arc, Mutex}; #[cfg(target_arch = "x86_64")] -use acpi_tables::{aml, Aml}; +use acpi_tables::{Aml, aml}; use kvm_ioctls::{IoEventAddress, VmFd}; use linux_loader::cmdline as kernel_cmdline; #[cfg(target_arch = "x86_64")] @@ -21,11 +21,12 @@ use serde::{Deserialize, Serialize}; use vm_allocator::AllocPolicy; use super::resources::ResourceAllocator; -#[cfg(target_arch = "aarch64")] -use crate::arch::aarch64::DeviceInfoForFDT; use crate::arch::DeviceType; use crate::arch::DeviceType::Virtio; #[cfg(target_arch = "aarch64")] +use crate::arch::aarch64::DeviceInfoForFDT; +use crate::devices::BusDevice; +#[cfg(target_arch = "aarch64")] use crate::devices::legacy::RTCDevice; use crate::devices::pseudo::BootTimer; use crate::devices::virtio::balloon::Balloon; @@ -34,9 +35,8 @@ use crate::devices::virtio::device::VirtioDevice; use crate::devices::virtio::mmio::MmioTransport; use crate::devices::virtio::net::Net; use crate::devices::virtio::rng::Entropy; -use crate::devices::virtio::vsock::{Vsock, VsockUnixBackend, TYPE_VSOCK}; +use crate::devices::virtio::vsock::{TYPE_VSOCK, Vsock, VsockUnixBackend}; use crate::devices::virtio::{TYPE_BALLOON, TYPE_BLOCK, TYPE_NET, TYPE_RNG}; -use crate::devices::BusDevice; #[cfg(target_arch = "x86_64")] use crate::vstate::memory::GuestAddress; @@ -543,13 +543,13 @@ mod tests { use vmm_sys_util::eventfd::EventFd; use super::*; + use crate::Vm; + use crate::devices::virtio::ActivateError; use crate::devices::virtio::device::{IrqTrigger, VirtioDevice}; use crate::devices::virtio::queue::Queue; - use crate::devices::virtio::ActivateError; use crate::test_utils::multi_region_mem; use crate::vstate::kvm::Kvm; use crate::vstate::memory::{GuestAddress, GuestMemoryMmap}; - use crate::Vm; const QUEUE_SIZES: &[u16] = &[64]; @@ -780,9 +780,11 @@ mod tests { &id, ) .unwrap(); - assert!(device_manager - .get_device(DeviceType::Virtio(type_id), &id) - .is_some()); + assert!( + device_manager + .get_device(DeviceType::Virtio(type_id), &id) + .is_some() + ); assert_eq!( addr, device_manager.id_to_dev_info[&(DeviceType::Virtio(type_id), id.clone())].addr @@ -796,9 +798,11 @@ mod tests { ); let id = "bar"; - assert!(device_manager - .get_device(DeviceType::Virtio(type_id), id) - .is_none()); + assert!( + device_manager + .get_device(DeviceType::Virtio(type_id), id) + .is_none() + ); let dummy2 = Arc::new(Mutex::new(DummyDevice::new())); let id2 = String::from("foo2"); diff --git a/src/vmm/src/device_manager/persist.rs b/src/vmm/src/device_manager/persist.rs index bdf63409d68..ffab7b81bfd 100644 --- a/src/vmm/src/device_manager/persist.rs +++ b/src/vmm/src/device_manager/persist.rs @@ -15,30 +15,31 @@ use vm_allocator::AllocPolicy; use super::acpi::ACPIDeviceManager; use super::mmio::*; use super::resources::ResourceAllocator; +use crate::EventManager; #[cfg(target_arch = "aarch64")] use crate::arch::DeviceType; use crate::devices::acpi::vmgenid::{VMGenIDState, VMGenIdConstructorArgs, VmGenId, VmGenIdError}; use crate::devices::virtio::balloon::persist::{BalloonConstructorArgs, BalloonState}; use crate::devices::virtio::balloon::{Balloon, BalloonError}; +use crate::devices::virtio::block::BlockError; use crate::devices::virtio::block::device::Block; use crate::devices::virtio::block::persist::{BlockConstructorArgs, BlockState}; -use crate::devices::virtio::block::BlockError; use crate::devices::virtio::device::VirtioDevice; use crate::devices::virtio::mmio::MmioTransport; +use crate::devices::virtio::net::Net; use crate::devices::virtio::net::persist::{ NetConstructorArgs, NetPersistError as NetError, NetState, }; -use crate::devices::virtio::net::Net; use crate::devices::virtio::persist::{MmioTransportConstructorArgs, MmioTransportState}; +use crate::devices::virtio::rng::Entropy; use crate::devices::virtio::rng::persist::{ EntropyConstructorArgs, EntropyPersistError as EntropyError, EntropyState, }; -use crate::devices::virtio::rng::Entropy; use crate::devices::virtio::vsock::persist::{ VsockConstructorArgs, VsockState, VsockUdsConstructorArgs, }; use crate::devices::virtio::vsock::{ - Vsock, VsockError, VsockUnixBackend, VsockUnixBackendError, TYPE_VSOCK, + TYPE_VSOCK, Vsock, VsockError, VsockUnixBackend, VsockUnixBackendError, }; use crate::devices::virtio::{TYPE_BALLOON, TYPE_BLOCK, TYPE_NET, TYPE_RNG}; use crate::mmds::data_store::MmdsVersion; @@ -46,7 +47,6 @@ use crate::resources::{ResourcesError, VmResources}; use crate::snapshot::Persist; use crate::vmm_config::mmds::MmdsConfigError; use crate::vstate::memory::GuestMemoryMmap; -use crate::EventManager; /// Errors for (de)serialization of the MMIO device manager. #[derive(Debug, thiserror::Error, displaydoc::Display)] diff --git a/src/vmm/src/devices/acpi/vmgenid.rs b/src/vmm/src/devices/acpi/vmgenid.rs index 13dd19902df..31dbf64ec39 100644 --- a/src/vmm/src/devices/acpi/vmgenid.rs +++ b/src/vmm/src/devices/acpi/vmgenid.rs @@ -1,7 +1,7 @@ // Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -use acpi_tables::{aml, Aml}; +use acpi_tables::{Aml, aml}; use aws_lc_rs::error::Unspecified as RandError; use aws_lc_rs::rand; use log::{debug, error}; diff --git a/src/vmm/src/devices/legacy/i8042.rs b/src/vmm/src/devices/legacy/i8042.rs index 8f965cab912..bcf7bdd8c90 100644 --- a/src/vmm/src/devices/legacy/i8042.rs +++ b/src/vmm/src/devices/legacy/i8042.rs @@ -12,7 +12,7 @@ use log::warn; use serde::Serialize; use vmm_sys_util::eventfd::EventFd; -use crate::logger::{error, IncMetric, SharedIncMetric}; +use crate::logger::{IncMetric, SharedIncMetric, error}; /// Errors thrown by the i8042 device. #[derive(Debug, thiserror::Error, displaydoc::Display)] diff --git a/src/vmm/src/devices/legacy/mod.rs b/src/vmm/src/devices/legacy/mod.rs index 25f332b9617..b28ae7082fe 100644 --- a/src/vmm/src/devices/legacy/mod.rs +++ b/src/vmm/src/devices/legacy/mod.rs @@ -14,8 +14,8 @@ pub mod serial; use std::io; use std::ops::Deref; -use serde::ser::SerializeMap; use serde::Serializer; +use serde::ser::SerializeMap; use vm_superio::Trigger; use vmm_sys_util::eventfd::EventFd; @@ -23,7 +23,7 @@ pub use self::i8042::{I8042Device, I8042Error as I8042DeviceError}; #[cfg(target_arch = "aarch64")] pub use self::rtc_pl031::RTCDevice; pub use self::serial::{ - SerialDevice, SerialEventsWrapper, SerialWrapper, IER_RDA_BIT, IER_RDA_OFFSET, + IER_RDA_BIT, IER_RDA_OFFSET, SerialDevice, SerialEventsWrapper, SerialWrapper, }; /// Wrapper for implementing the trigger functionality for `EventFd`. diff --git a/src/vmm/src/devices/legacy/rtc_pl031.rs b/src/vmm/src/devices/legacy/rtc_pl031.rs index 15e20f81446..754899a23a4 100644 --- a/src/vmm/src/devices/legacy/rtc_pl031.rs +++ b/src/vmm/src/devices/legacy/rtc_pl031.rs @@ -6,7 +6,7 @@ use std::convert::TryInto; use serde::Serialize; use vm_superio::rtc_pl031::RtcEvents; -use crate::logger::{warn, IncMetric, SharedIncMetric}; +use crate::logger::{IncMetric, SharedIncMetric, warn}; /// Metrics specific to the RTC device. #[derive(Debug, Serialize, Default)] diff --git a/src/vmm/src/devices/virtio/balloon/device.rs b/src/vmm/src/devices/virtio/balloon/device.rs index f6be2536de5..9205808a7fd 100644 --- a/src/vmm/src/devices/virtio/balloon/device.rs +++ b/src/vmm/src/devices/virtio/balloon/device.rs @@ -16,7 +16,7 @@ use super::metrics::METRICS; use super::util::{compact_page_frame_numbers, remove_range}; use super::{ BALLOON_DEV_ID, BALLOON_NUM_QUEUES, BALLOON_QUEUE_SIZES, DEFLATE_INDEX, INFLATE_INDEX, - MAX_PAGES_IN_DESC, MAX_PAGE_COMPACT_BUFFER, MIB_TO_4K_PAGES, STATS_INDEX, + MAX_PAGE_COMPACT_BUFFER, MAX_PAGES_IN_DESC, MIB_TO_4K_PAGES, STATS_INDEX, VIRTIO_BALLOON_F_DEFLATE_ON_OOM, VIRTIO_BALLOON_F_STATS_VQ, VIRTIO_BALLOON_PFN_SHIFT, VIRTIO_BALLOON_S_AVAIL, VIRTIO_BALLOON_S_CACHES, VIRTIO_BALLOON_S_HTLB_PGALLOC, VIRTIO_BALLOON_S_HTLB_PGFAIL, VIRTIO_BALLOON_S_MAJFLT, VIRTIO_BALLOON_S_MEMFREE, @@ -25,7 +25,7 @@ use super::{ }; use crate::devices::virtio::balloon::BalloonError; use crate::devices::virtio::device::{IrqTrigger, IrqType}; -use crate::devices::virtio::gen::virtio_blk::VIRTIO_F_VERSION_1; +use crate::devices::virtio::generated::virtio_blk::VIRTIO_F_VERSION_1; use crate::logger::IncMetric; use crate::utils::u64_to_usize; use crate::vstate::memory::{Address, ByteValued, Bytes, GuestAddress, GuestMemoryMmap}; @@ -636,7 +636,7 @@ pub(crate) mod tests { check_request_completion, invoke_handler_for_queue_event, set_request, }; use crate::devices::virtio::queue::{VIRTQ_DESC_F_NEXT, VIRTQ_DESC_F_WRITE}; - use crate::devices::virtio::test_utils::{default_mem, VirtQueue}; + use crate::devices::virtio::test_utils::{VirtQueue, default_mem}; use crate::test_utils::single_region_mem; use crate::vstate::memory::GuestAddress; diff --git a/src/vmm/src/devices/virtio/balloon/event_handler.rs b/src/vmm/src/devices/virtio/balloon/event_handler.rs index 3019d6877de..56ff5c35047 100644 --- a/src/vmm/src/devices/virtio/balloon/event_handler.rs +++ b/src/vmm/src/devices/virtio/balloon/event_handler.rs @@ -4,7 +4,7 @@ use event_manager::{EventOps, Events, MutEventSubscriber}; use vmm_sys_util::epoll::EventSet; -use super::{report_balloon_event_fail, DEFLATE_INDEX, INFLATE_INDEX, STATS_INDEX}; +use super::{DEFLATE_INDEX, INFLATE_INDEX, STATS_INDEX, report_balloon_event_fail}; use crate::devices::virtio::balloon::device::Balloon; use crate::devices::virtio::device::VirtioDevice; use crate::logger::{error, warn}; @@ -136,7 +136,7 @@ pub mod tests { use super::*; use crate::devices::virtio::balloon::test_utils::set_request; - use crate::devices::virtio::test_utils::{default_mem, VirtQueue}; + use crate::devices::virtio::test_utils::{VirtQueue, default_mem}; use crate::vstate::memory::GuestAddress; #[test] diff --git a/src/vmm/src/devices/virtio/balloon/persist.rs b/src/vmm/src/devices/virtio/balloon/persist.rs index c1fb6865b5f..004fa27f8ca 100644 --- a/src/vmm/src/devices/virtio/balloon/persist.rs +++ b/src/vmm/src/devices/virtio/balloon/persist.rs @@ -3,19 +3,19 @@ //! Defines the structures needed for saving/restoring balloon devices. -use std::sync::atomic::AtomicU32; use std::sync::Arc; +use std::sync::atomic::AtomicU32; use std::time::Duration; use serde::{Deserialize, Serialize}; use timerfd::{SetTimeFlags, TimerState}; use super::*; +use crate::devices::virtio::TYPE_BALLOON; use crate::devices::virtio::balloon::device::{BalloonStats, ConfigSpace}; use crate::devices::virtio::device::DeviceState; use crate::devices::virtio::persist::VirtioDeviceState; use crate::devices::virtio::queue::FIRECRACKER_MAX_QUEUE_SIZE; -use crate::devices::virtio::TYPE_BALLOON; use crate::snapshot::Persist; use crate::vstate::memory::GuestMemoryMmap; @@ -181,9 +181,9 @@ mod tests { use std::sync::atomic::Ordering; use super::*; + use crate::devices::virtio::TYPE_BALLOON; use crate::devices::virtio::device::VirtioDevice; use crate::devices::virtio::test_utils::default_mem; - use crate::devices::virtio::TYPE_BALLOON; use crate::snapshot::Snapshot; #[test] diff --git a/src/vmm/src/devices/virtio/balloon/test_utils.rs b/src/vmm/src/devices/virtio/balloon/test_utils.rs index 8968aa70915..af0d7f5845e 100644 --- a/src/vmm/src/devices/virtio/balloon/test_utils.rs +++ b/src/vmm/src/devices/virtio/balloon/test_utils.rs @@ -5,7 +5,7 @@ use crate::devices::virtio::test_utils::VirtQueue; #[cfg(test)] -use crate::devices::virtio::{balloon::Balloon, balloon::BALLOON_NUM_QUEUES}; +use crate::devices::virtio::{balloon::BALLOON_NUM_QUEUES, balloon::Balloon}; #[cfg(test)] pub fn invoke_handler_for_queue_event(b: &mut Balloon, queue_index: usize) { diff --git a/src/vmm/src/devices/virtio/balloon/util.rs b/src/vmm/src/devices/virtio/balloon/util.rs index a9960540a60..35ef69f972f 100644 --- a/src/vmm/src/devices/virtio/balloon/util.rs +++ b/src/vmm/src/devices/virtio/balloon/util.rs @@ -3,7 +3,7 @@ use std::io; -use super::{RemoveRegionError, MAX_PAGE_COMPACT_BUFFER}; +use super::{MAX_PAGE_COMPACT_BUFFER, RemoveRegionError}; use crate::logger::error; use crate::utils::u64_to_usize; use crate::vstate::memory::{GuestAddress, GuestMemory, GuestMemoryMmap, GuestMemoryRegion}; @@ -125,9 +125,7 @@ mod tests { /// This asserts that $lhs matches $rhs. macro_rules! assert_match { - ($lhs:expr, $rhs:pat) => {{ - assert!(matches!($lhs, $rhs)) - }}; + ($lhs:expr, $rhs:pat) => {{ assert!(matches!($lhs, $rhs)) }}; } #[test] diff --git a/src/vmm/src/devices/virtio/block/device.rs b/src/vmm/src/devices/virtio/block/device.rs index 7399fe39a0b..bf3043bcdd4 100644 --- a/src/vmm/src/devices/virtio/block/device.rs +++ b/src/vmm/src/devices/virtio/block/device.rs @@ -4,10 +4,10 @@ use event_manager::{EventOps, Events, MutEventSubscriber}; use vmm_sys_util::eventfd::EventFd; +use super::BlockError; use super::persist::{BlockConstructorArgs, BlockState}; use super::vhost_user::device::{VhostUserBlock, VhostUserBlockConfig}; use super::virtio::device::{VirtioBlock, VirtioBlockConfig}; -use super::BlockError; use crate::devices::virtio::device::{IrqTrigger, VirtioDevice}; use crate::devices::virtio::queue::Queue; use crate::devices::virtio::{ActivateError, TYPE_BLOCK}; diff --git a/src/vmm/src/devices/virtio/block/vhost_user/device.rs b/src/vmm/src/devices/virtio/block/vhost_user/device.rs index cdd17e2ea98..34948035c6b 100644 --- a/src/vmm/src/devices/virtio/block/vhost_user/device.rs +++ b/src/vmm/src/devices/virtio/block/vhost_user/device.rs @@ -7,25 +7,25 @@ use std::sync::Arc; use log::error; -use utils::time::{get_time_us, ClockType}; -use vhost::vhost_user::message::*; +use utils::time::{ClockType, get_time_us}; use vhost::vhost_user::Frontend; +use vhost::vhost_user::message::*; use vmm_sys_util::eventfd::EventFd; -use super::{VhostUserBlockError, NUM_QUEUES, QUEUE_SIZE}; +use super::{NUM_QUEUES, QUEUE_SIZE, VhostUserBlockError}; use crate::devices::virtio::block::CacheType; use crate::devices::virtio::device::{DeviceState, IrqTrigger, IrqType, VirtioDevice}; -use crate::devices::virtio::gen::virtio_blk::{ +use crate::devices::virtio::generated::virtio_blk::{ VIRTIO_BLK_F_FLUSH, VIRTIO_BLK_F_RO, VIRTIO_F_VERSION_1, }; -use crate::devices::virtio::gen::virtio_ring::VIRTIO_RING_F_EVENT_IDX; +use crate::devices::virtio::generated::virtio_ring::VIRTIO_RING_F_EVENT_IDX; use crate::devices::virtio::queue::Queue; use crate::devices::virtio::vhost_user::{VhostUserHandleBackend, VhostUserHandleImpl}; use crate::devices::virtio::vhost_user_metrics::{ VhostUserDeviceMetrics, VhostUserMetricsPerDevice, }; use crate::devices::virtio::{ActivateError, TYPE_BLOCK}; -use crate::logger::{log_dev_preview_warning, IncMetric, StoreMetric}; +use crate::logger::{IncMetric, StoreMetric, log_dev_preview_warning}; use crate::utils::u64_to_usize; use crate::vmm_config::drive::BlockDeviceConfig; use crate::vstate::memory::GuestMemoryMmap; diff --git a/src/vmm/src/devices/virtio/block/vhost_user/persist.rs b/src/vmm/src/devices/virtio/block/vhost_user/persist.rs index abaa20e012c..d507fa9577b 100644 --- a/src/vmm/src/devices/virtio/block/vhost_user/persist.rs +++ b/src/vmm/src/devices/virtio/block/vhost_user/persist.rs @@ -5,10 +5,10 @@ use serde::{Deserialize, Serialize}; -use super::device::VhostUserBlock; use super::VhostUserBlockError; -use crate::devices::virtio::block::persist::BlockConstructorArgs; +use super::device::VhostUserBlock; use crate::devices::virtio::block::CacheType; +use crate::devices::virtio::block::persist::BlockConstructorArgs; use crate::devices::virtio::persist::VirtioDeviceState; use crate::snapshot::Persist; diff --git a/src/vmm/src/devices/virtio/block/virtio/device.rs b/src/vmm/src/devices/virtio/block/virtio/device.rs index 5854fd8598f..bb374bce5b9 100644 --- a/src/vmm/src/devices/virtio/block/virtio/device.rs +++ b/src/vmm/src/devices/virtio/block/virtio/device.rs @@ -20,21 +20,21 @@ use vmm_sys_util::eventfd::EventFd; use super::io::async_io; use super::request::*; -use super::{io as block_io, VirtioBlockError, BLOCK_QUEUE_SIZES, SECTOR_SHIFT, SECTOR_SIZE}; -use crate::devices::virtio::block::virtio::metrics::{BlockDeviceMetrics, BlockMetricsPerDevice}; +use super::{BLOCK_QUEUE_SIZES, SECTOR_SHIFT, SECTOR_SIZE, VirtioBlockError, io as block_io}; use crate::devices::virtio::block::CacheType; +use crate::devices::virtio::block::virtio::metrics::{BlockDeviceMetrics, BlockMetricsPerDevice}; use crate::devices::virtio::device::{DeviceState, IrqTrigger, IrqType, VirtioDevice}; -use crate::devices::virtio::gen::virtio_blk::{ +use crate::devices::virtio::generated::virtio_blk::{ VIRTIO_BLK_F_FLUSH, VIRTIO_BLK_F_RO, VIRTIO_BLK_ID_BYTES, VIRTIO_F_VERSION_1, }; -use crate::devices::virtio::gen::virtio_ring::VIRTIO_RING_F_EVENT_IDX; +use crate::devices::virtio::generated::virtio_ring::VIRTIO_RING_F_EVENT_IDX; use crate::devices::virtio::queue::Queue; use crate::devices::virtio::{ActivateError, TYPE_BLOCK}; -use crate::logger::{error, warn, IncMetric}; +use crate::logger::{IncMetric, error, warn}; use crate::rate_limiter::{BucketUpdate, RateLimiter}; use crate::utils::u64_to_usize; -use crate::vmm_config::drive::BlockDeviceConfig; use crate::vmm_config::RateLimiterConfig; +use crate::vmm_config::drive::BlockDeviceConfig; use crate::vstate::memory::GuestMemoryMmap; /// The engine file type, either Sync or Async (through io_uring). @@ -676,14 +676,14 @@ mod tests { use super::*; use crate::check_metric_after_block; + use crate::devices::virtio::block::virtio::IO_URING_NUM_ENTRIES; use crate::devices::virtio::block::virtio::test_utils::{ default_block, read_blk_req_descriptors, set_queue, set_rate_limiter, simulate_async_completion_event, simulate_queue_and_async_completion_events, simulate_queue_event, }; - use crate::devices::virtio::block::virtio::IO_URING_NUM_ENTRIES; use crate::devices::virtio::queue::{VIRTQ_DESC_F_NEXT, VIRTQ_DESC_F_WRITE}; - use crate::devices::virtio::test_utils::{default_mem, VirtQueue}; + use crate::devices::virtio::test_utils::{VirtQueue, default_mem}; use crate::rate_limiter::TokenType; use crate::vstate::memory::{Address, Bytes, GuestAddress}; diff --git a/src/vmm/src/devices/virtio/block/virtio/event_handler.rs b/src/vmm/src/devices/virtio/block/virtio/event_handler.rs index 8400766e06b..db69e23d7f0 100644 --- a/src/vmm/src/devices/virtio/block/virtio/event_handler.rs +++ b/src/vmm/src/devices/virtio/block/virtio/event_handler.rs @@ -124,7 +124,7 @@ mod tests { }; use crate::devices::virtio::block::virtio::{VIRTIO_BLK_S_OK, VIRTIO_BLK_T_OUT}; use crate::devices::virtio::queue::VIRTQ_DESC_F_NEXT; - use crate::devices::virtio::test_utils::{default_mem, VirtQueue}; + use crate::devices::virtio::test_utils::{VirtQueue, default_mem}; use crate::vstate::memory::{Bytes, GuestAddress}; #[test] diff --git a/src/vmm/src/devices/virtio/block/virtio/io/async_io.rs b/src/vmm/src/devices/virtio/block/virtio/io/async_io.rs index 515ff9ca32c..3073b55886a 100644 --- a/src/vmm/src/devices/virtio/block/virtio/io/async_io.rs +++ b/src/vmm/src/devices/virtio/block/virtio/io/async_io.rs @@ -9,8 +9,8 @@ use std::os::unix::io::AsRawFd; use vm_memory::GuestMemoryError; use vmm_sys_util::eventfd::EventFd; -use crate::devices::virtio::block::virtio::io::UserDataError; use crate::devices::virtio::block::virtio::IO_URING_NUM_ENTRIES; +use crate::devices::virtio::block::virtio::io::UserDataError; use crate::io_uring::operation::{Cqe, OpCode, Operation}; use crate::io_uring::restriction::Restriction; use crate::io_uring::{self, IoUring, IoUringError}; diff --git a/src/vmm/src/devices/virtio/block/virtio/io/mod.rs b/src/vmm/src/devices/virtio/block/virtio/io/mod.rs index cc49dae3eb7..a43ab1e3b4b 100644 --- a/src/vmm/src/devices/virtio/block/virtio/io/mod.rs +++ b/src/vmm/src/devices/virtio/block/virtio/io/mod.rs @@ -223,7 +223,7 @@ pub mod tests { } fn assert_async_execution(mem: &GuestMemoryMmap, engine: &mut FileEngine<()>, count: u32) { - if let FileEngine::Async(ref mut engine) = engine { + if let FileEngine::Async(engine) = engine { engine.drain(false).unwrap(); assert_eq!(engine.pop(mem).unwrap().unwrap().result().unwrap(), count); } diff --git a/src/vmm/src/devices/virtio/block/virtio/persist.rs b/src/vmm/src/devices/virtio/block/virtio/persist.rs index caab2c13a5f..8c6f2c2453d 100644 --- a/src/vmm/src/devices/virtio/block/virtio/persist.rs +++ b/src/vmm/src/devices/virtio/block/virtio/persist.rs @@ -3,8 +3,8 @@ //! Defines the structures needed for saving/restoring block devices. -use std::sync::atomic::AtomicU32; use std::sync::Arc; +use std::sync::atomic::AtomicU32; use device::ConfigSpace; use serde::{Deserialize, Serialize}; @@ -12,15 +12,15 @@ use vmm_sys_util::eventfd::EventFd; use super::device::DiskProperties; use super::*; +use crate::devices::virtio::TYPE_BLOCK; use crate::devices::virtio::block::persist::BlockConstructorArgs; use crate::devices::virtio::block::virtio::device::FileEngineType; use crate::devices::virtio::block::virtio::metrics::BlockMetricsPerDevice; use crate::devices::virtio::device::{DeviceState, IrqTrigger}; -use crate::devices::virtio::gen::virtio_blk::VIRTIO_BLK_F_RO; +use crate::devices::virtio::generated::virtio_blk::VIRTIO_BLK_F_RO; use crate::devices::virtio::persist::VirtioDeviceState; -use crate::devices::virtio::TYPE_BLOCK; -use crate::rate_limiter::persist::RateLimiterState; use crate::rate_limiter::RateLimiter; +use crate::rate_limiter::persist::RateLimiterState; use crate::snapshot::Persist; /// Holds info about block's file engine type. Gets saved in snapshot. diff --git a/src/vmm/src/devices/virtio/block/virtio/request.rs b/src/vmm/src/devices/virtio/block/virtio/request.rs index 27df7c1d675..f8b3172c5c4 100644 --- a/src/vmm/src/devices/virtio/block/virtio/request.rs +++ b/src/vmm/src/devices/virtio/block/virtio/request.rs @@ -9,15 +9,15 @@ use std::convert::From; use vm_memory::GuestMemoryError; -use super::{io as block_io, VirtioBlockError, SECTOR_SHIFT, SECTOR_SIZE}; +use super::{SECTOR_SHIFT, SECTOR_SIZE, VirtioBlockError, io as block_io}; use crate::devices::virtio::block::virtio::device::DiskProperties; use crate::devices::virtio::block::virtio::metrics::BlockDeviceMetrics; -pub use crate::devices::virtio::gen::virtio_blk::{ +pub use crate::devices::virtio::generated::virtio_blk::{ VIRTIO_BLK_ID_BYTES, VIRTIO_BLK_S_IOERR, VIRTIO_BLK_S_OK, VIRTIO_BLK_S_UNSUPP, VIRTIO_BLK_T_FLUSH, VIRTIO_BLK_T_GET_ID, VIRTIO_BLK_T_IN, VIRTIO_BLK_T_OUT, }; use crate::devices::virtio::queue::DescriptorChain; -use crate::logger::{error, IncMetric}; +use crate::logger::{IncMetric, error}; use crate::rate_limiter::{RateLimiter, TokenType}; use crate::vstate::memory::{ByteValued, Bytes, GuestAddress, GuestMemoryMmap}; @@ -421,7 +421,7 @@ mod tests { use super::*; use crate::devices::virtio::queue::{Queue, VIRTQ_DESC_F_NEXT, VIRTQ_DESC_F_WRITE}; - use crate::devices::virtio::test_utils::{default_mem, VirtQueue}; + use crate::devices::virtio::test_utils::{VirtQueue, default_mem}; use crate::vstate::memory::{Address, GuestAddress, GuestMemory}; const NUM_DISK_SECTORS: u64 = 1024; @@ -736,8 +736,8 @@ mod tests { } #[allow(clippy::let_with_type_underscore)] - fn random_request_parse( - ) -> impl Strategy, GuestMemoryMmap, Queue)> { + fn random_request_parse() + -> impl Strategy, GuestMemoryMmap, Queue)> { // In this strategy we are going to generate random Requests/Errors and map them // to an input descriptor chain. // diff --git a/src/vmm/src/devices/virtio/block/virtio/test_utils.rs b/src/vmm/src/devices/virtio/block/virtio/test_utils.rs index 106da8177cd..02dd34fbce9 100644 --- a/src/vmm/src/devices/virtio/block/virtio/test_utils.rs +++ b/src/vmm/src/devices/virtio/block/virtio/test_utils.rs @@ -10,8 +10,8 @@ use std::time::Duration; use vmm_sys_util::tempfile::TempFile; -use super::device::VirtioBlockConfig; use super::RequestHeader; +use super::device::VirtioBlockConfig; use crate::devices::virtio::block::virtio::device::FileEngineType; #[cfg(test)] use crate::devices::virtio::block::virtio::io::FileEngine; diff --git a/src/vmm/src/devices/virtio/device.rs b/src/vmm/src/devices/virtio/device.rs index 5adf4873dc6..62131e775f5 100644 --- a/src/vmm/src/devices/virtio/device.rs +++ b/src/vmm/src/devices/virtio/device.rs @@ -6,14 +6,14 @@ // found in the THIRD-PARTY file. use std::fmt; -use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::Arc; +use std::sync::atomic::{AtomicU32, Ordering}; use vmm_sys_util::eventfd::EventFd; +use super::ActivateError; use super::mmio::{VIRTIO_MMIO_INT_CONFIG, VIRTIO_MMIO_INT_VRING}; use super::queue::{Queue, QueueError}; -use super::ActivateError; use crate::devices::virtio::AsAny; use crate::logger::{error, warn}; use crate::vstate::memory::GuestMemoryMmap; @@ -38,7 +38,7 @@ impl DeviceState { /// Gets the memory attached to the device if it is activated. pub fn mem(&self) -> Option<&GuestMemoryMmap> { match self { - DeviceState::Activated(ref mem) => Some(mem), + DeviceState::Activated(mem) => Some(mem), DeviceState::Inactive => None, } } @@ -104,7 +104,7 @@ pub trait VirtioDevice: AsAny + Send { /// Check if virtio device has negotiated given feature. fn has_feature(&self, feature: u64) -> bool { - (self.acked_features() & 1 << feature) != 0 + (self.acked_features() & (1 << feature)) != 0 } /// The virtio device type. diff --git a/src/vmm/src/devices/virtio/gen/virtio_net.rs b/src/vmm/src/devices/virtio/gen/virtio_net.rs deleted file mode 100644 index 156e25497fe..00000000000 --- a/src/vmm/src/devices/virtio/gen/virtio_net.rs +++ /dev/null @@ -1,336 +0,0 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -// automatically generated by tools/bindgen.sh - -#![allow( - non_camel_case_types, - non_upper_case_globals, - dead_code, - non_snake_case, - clippy::ptr_as_ptr, - clippy::undocumented_unsafe_blocks, - missing_debug_implementations, - clippy::tests_outside_test_module -)] - -pub const VIRTIO_F_NOTIFY_ON_EMPTY: u32 = 24; -pub const VIRTIO_F_ANY_LAYOUT: u32 = 27; -pub const VIRTIO_F_VERSION_1: u32 = 32; -pub const VIRTIO_F_ACCESS_PLATFORM: u32 = 33; -pub const VIRTIO_F_IOMMU_PLATFORM: u32 = 33; -pub const VIRTIO_F_RING_PACKED: u32 = 34; -pub const VIRTIO_F_ORDER_PLATFORM: u32 = 36; -pub const VIRTIO_F_SR_IOV: u32 = 37; -pub const VIRTIO_NET_F_CSUM: u32 = 0; -pub const VIRTIO_NET_F_GUEST_CSUM: u32 = 1; -pub const VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: u32 = 2; -pub const VIRTIO_NET_F_MTU: u32 = 3; -pub const VIRTIO_NET_F_MAC: u32 = 5; -pub const VIRTIO_NET_F_GUEST_TSO4: u32 = 7; -pub const VIRTIO_NET_F_GUEST_TSO6: u32 = 8; -pub const VIRTIO_NET_F_GUEST_ECN: u32 = 9; -pub const VIRTIO_NET_F_GUEST_UFO: u32 = 10; -pub const VIRTIO_NET_F_HOST_TSO4: u32 = 11; -pub const VIRTIO_NET_F_HOST_TSO6: u32 = 12; -pub const VIRTIO_NET_F_HOST_ECN: u32 = 13; -pub const VIRTIO_NET_F_HOST_UFO: u32 = 14; -pub const VIRTIO_NET_F_MRG_RXBUF: u32 = 15; -pub const VIRTIO_NET_F_STATUS: u32 = 16; -pub const VIRTIO_NET_F_CTRL_VQ: u32 = 17; -pub const VIRTIO_NET_F_CTRL_RX: u32 = 18; -pub const VIRTIO_NET_F_CTRL_VLAN: u32 = 19; -pub const VIRTIO_NET_F_CTRL_RX_EXTRA: u32 = 20; -pub const VIRTIO_NET_F_GUEST_ANNOUNCE: u32 = 21; -pub const VIRTIO_NET_F_MQ: u32 = 22; -pub const VIRTIO_NET_F_CTRL_MAC_ADDR: u32 = 23; -pub const VIRTIO_NET_F_HASH_REPORT: u32 = 57; -pub const VIRTIO_NET_F_RSS: u32 = 60; -pub const VIRTIO_NET_F_RSC_EXT: u32 = 61; -pub const VIRTIO_NET_F_STANDBY: u32 = 62; -pub const VIRTIO_NET_F_SPEED_DUPLEX: u32 = 63; -pub const VIRTIO_NET_F_GSO: u32 = 6; -pub type __u8 = ::std::os::raw::c_uchar; -pub type __u16 = ::std::os::raw::c_ushort; -pub type __le16 = __u16; -pub type __virtio16 = __u16; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct virtio_net_hdr_v1 { - pub flags: __u8, - pub gso_type: __u8, - pub hdr_len: __virtio16, - pub gso_size: __virtio16, - pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1, - pub num_buffers: __virtio16, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union virtio_net_hdr_v1__bindgen_ty_1 { - pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1, - pub csum: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2, - pub rsc: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3, -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1 { - pub csum_start: __virtio16, - pub csum_offset: __virtio16, -} -#[test] -fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!( - "Size of: ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!( - "Alignment of ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).csum_start) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(csum_start) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).csum_offset) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1), - "::", - stringify!(csum_offset) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2 { - pub start: __virtio16, - pub offset: __virtio16, -} -#[test] -fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!( - "Size of: ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!( - "Alignment of ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).start) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(start) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2), - "::", - stringify!(offset) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3 { - pub segments: __le16, - pub dup_acks: __le16, -} -#[test] -fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!( - "Size of: ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!( - "Alignment of ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).segments) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(segments) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dup_acks) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3), - "::", - stringify!(dup_acks) - ) - ); -} -#[test] -fn bindgen_test_layout_virtio_net_hdr_v1__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(virtio_net_hdr_v1__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(virtio_net_hdr_v1__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).csum) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1), - "::", - stringify!(csum) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rsc) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1__bindgen_ty_1), - "::", - stringify!(rsc) - ) - ); -} -impl Default for virtio_net_hdr_v1__bindgen_ty_1 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[test] -fn bindgen_test_layout_virtio_net_hdr_v1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(virtio_net_hdr_v1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(virtio_net_hdr_v1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gso_type) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(gso_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hdr_len) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(hdr_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).gso_size) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(gso_size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).num_buffers) as usize - ptr as usize }, - 10usize, - concat!( - "Offset of field: ", - stringify!(virtio_net_hdr_v1), - "::", - stringify!(num_buffers) - ) - ); -} -impl Default for virtio_net_hdr_v1 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} diff --git a/src/vmm/src/devices/virtio/gen/mod.rs b/src/vmm/src/devices/virtio/generated/mod.rs similarity index 100% rename from src/vmm/src/devices/virtio/gen/mod.rs rename to src/vmm/src/devices/virtio/generated/mod.rs diff --git a/src/vmm/src/devices/virtio/gen/virtio_blk.rs b/src/vmm/src/devices/virtio/generated/virtio_blk.rs similarity index 53% rename from src/vmm/src/devices/virtio/gen/virtio_blk.rs rename to src/vmm/src/devices/virtio/generated/virtio_blk.rs index 7ef2b55ec21..635861506cf 100644 --- a/src/vmm/src/devices/virtio/gen/virtio_blk.rs +++ b/src/vmm/src/devices/virtio/generated/virtio_blk.rs @@ -1,4 +1,4 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -11,7 +11,8 @@ clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] pub const VIRTIO_F_NOTIFY_ON_EMPTY: u32 = 24; @@ -20,8 +21,13 @@ pub const VIRTIO_F_VERSION_1: u32 = 32; pub const VIRTIO_F_ACCESS_PLATFORM: u32 = 33; pub const VIRTIO_F_IOMMU_PLATFORM: u32 = 33; pub const VIRTIO_F_RING_PACKED: u32 = 34; +pub const VIRTIO_F_IN_ORDER: u32 = 35; pub const VIRTIO_F_ORDER_PLATFORM: u32 = 36; pub const VIRTIO_F_SR_IOV: u32 = 37; +pub const VIRTIO_F_NOTIFICATION_DATA: u32 = 38; +pub const VIRTIO_F_NOTIF_CONFIG_DATA: u32 = 39; +pub const VIRTIO_F_RING_RESET: u32 = 40; +pub const VIRTIO_F_ADMIN_VQ: u32 = 41; pub const VIRTIO_BLK_F_SIZE_MAX: u32 = 1; pub const VIRTIO_BLK_F_SEG_MAX: u32 = 2; pub const VIRTIO_BLK_F_GEOMETRY: u32 = 4; @@ -31,6 +37,8 @@ pub const VIRTIO_BLK_F_TOPOLOGY: u32 = 10; pub const VIRTIO_BLK_F_MQ: u32 = 12; pub const VIRTIO_BLK_F_DISCARD: u32 = 13; pub const VIRTIO_BLK_F_WRITE_ZEROES: u32 = 14; +pub const VIRTIO_BLK_F_SECURE_ERASE: u32 = 16; +pub const VIRTIO_BLK_F_ZONED: u32 = 17; pub const VIRTIO_BLK_F_BARRIER: u32 = 0; pub const VIRTIO_BLK_F_SCSI: u32 = 7; pub const VIRTIO_BLK_F_FLUSH: u32 = 9; @@ -44,8 +52,34 @@ pub const VIRTIO_BLK_T_FLUSH: u32 = 4; pub const VIRTIO_BLK_T_GET_ID: u32 = 8; pub const VIRTIO_BLK_T_DISCARD: u32 = 11; pub const VIRTIO_BLK_T_WRITE_ZEROES: u32 = 13; +pub const VIRTIO_BLK_T_SECURE_ERASE: u32 = 14; +pub const VIRTIO_BLK_T_ZONE_APPEND: u32 = 15; +pub const VIRTIO_BLK_T_ZONE_REPORT: u32 = 16; +pub const VIRTIO_BLK_T_ZONE_OPEN: u32 = 18; +pub const VIRTIO_BLK_T_ZONE_CLOSE: u32 = 20; +pub const VIRTIO_BLK_T_ZONE_FINISH: u32 = 22; +pub const VIRTIO_BLK_T_ZONE_RESET: u32 = 24; +pub const VIRTIO_BLK_T_ZONE_RESET_ALL: u32 = 26; pub const VIRTIO_BLK_T_BARRIER: u32 = 2147483648; +pub const VIRTIO_BLK_Z_NONE: u32 = 0; +pub const VIRTIO_BLK_Z_HM: u32 = 1; +pub const VIRTIO_BLK_Z_HA: u32 = 2; +pub const VIRTIO_BLK_ZT_CONV: u32 = 1; +pub const VIRTIO_BLK_ZT_SWR: u32 = 2; +pub const VIRTIO_BLK_ZT_SWP: u32 = 3; +pub const VIRTIO_BLK_ZS_NOT_WP: u32 = 0; +pub const VIRTIO_BLK_ZS_EMPTY: u32 = 1; +pub const VIRTIO_BLK_ZS_IOPEN: u32 = 2; +pub const VIRTIO_BLK_ZS_EOPEN: u32 = 3; +pub const VIRTIO_BLK_ZS_CLOSED: u32 = 4; +pub const VIRTIO_BLK_ZS_RDONLY: u32 = 13; +pub const VIRTIO_BLK_ZS_FULL: u32 = 14; +pub const VIRTIO_BLK_ZS_OFFLINE: u32 = 15; pub const VIRTIO_BLK_WRITE_ZEROES_FLAG_UNMAP: u32 = 1; pub const VIRTIO_BLK_S_OK: u32 = 0; pub const VIRTIO_BLK_S_IOERR: u32 = 1; pub const VIRTIO_BLK_S_UNSUPP: u32 = 2; +pub const VIRTIO_BLK_S_ZONE_INVALID_CMD: u32 = 3; +pub const VIRTIO_BLK_S_ZONE_UNALIGNED_WP: u32 = 4; +pub const VIRTIO_BLK_S_ZONE_OPEN_RESOURCE: u32 = 5; +pub const VIRTIO_BLK_S_ZONE_ACTIVE_RESOURCE: u32 = 6; diff --git a/src/vmm/src/devices/virtio/generated/virtio_net.rs b/src/vmm/src/devices/virtio/generated/virtio_net.rs new file mode 100644 index 00000000000..839cbd8b782 --- /dev/null +++ b/src/vmm/src/devices/virtio/generated/virtio_net.rs @@ -0,0 +1,184 @@ +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// automatically generated by tools/bindgen.sh + +#![allow( + non_camel_case_types, + non_upper_case_globals, + dead_code, + non_snake_case, + clippy::ptr_as_ptr, + clippy::undocumented_unsafe_blocks, + missing_debug_implementations, + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn +)] + +pub const VIRTIO_F_NOTIFY_ON_EMPTY: u32 = 24; +pub const VIRTIO_F_ANY_LAYOUT: u32 = 27; +pub const VIRTIO_F_VERSION_1: u32 = 32; +pub const VIRTIO_F_ACCESS_PLATFORM: u32 = 33; +pub const VIRTIO_F_IOMMU_PLATFORM: u32 = 33; +pub const VIRTIO_F_RING_PACKED: u32 = 34; +pub const VIRTIO_F_IN_ORDER: u32 = 35; +pub const VIRTIO_F_ORDER_PLATFORM: u32 = 36; +pub const VIRTIO_F_SR_IOV: u32 = 37; +pub const VIRTIO_F_NOTIFICATION_DATA: u32 = 38; +pub const VIRTIO_F_NOTIF_CONFIG_DATA: u32 = 39; +pub const VIRTIO_F_RING_RESET: u32 = 40; +pub const VIRTIO_F_ADMIN_VQ: u32 = 41; +pub const VIRTIO_NET_F_CSUM: u32 = 0; +pub const VIRTIO_NET_F_GUEST_CSUM: u32 = 1; +pub const VIRTIO_NET_F_CTRL_GUEST_OFFLOADS: u32 = 2; +pub const VIRTIO_NET_F_MTU: u32 = 3; +pub const VIRTIO_NET_F_MAC: u32 = 5; +pub const VIRTIO_NET_F_GUEST_TSO4: u32 = 7; +pub const VIRTIO_NET_F_GUEST_TSO6: u32 = 8; +pub const VIRTIO_NET_F_GUEST_ECN: u32 = 9; +pub const VIRTIO_NET_F_GUEST_UFO: u32 = 10; +pub const VIRTIO_NET_F_HOST_TSO4: u32 = 11; +pub const VIRTIO_NET_F_HOST_TSO6: u32 = 12; +pub const VIRTIO_NET_F_HOST_ECN: u32 = 13; +pub const VIRTIO_NET_F_HOST_UFO: u32 = 14; +pub const VIRTIO_NET_F_MRG_RXBUF: u32 = 15; +pub const VIRTIO_NET_F_STATUS: u32 = 16; +pub const VIRTIO_NET_F_CTRL_VQ: u32 = 17; +pub const VIRTIO_NET_F_CTRL_RX: u32 = 18; +pub const VIRTIO_NET_F_CTRL_VLAN: u32 = 19; +pub const VIRTIO_NET_F_CTRL_RX_EXTRA: u32 = 20; +pub const VIRTIO_NET_F_GUEST_ANNOUNCE: u32 = 21; +pub const VIRTIO_NET_F_MQ: u32 = 22; +pub const VIRTIO_NET_F_CTRL_MAC_ADDR: u32 = 23; +pub const VIRTIO_NET_F_VQ_NOTF_COAL: u32 = 52; +pub const VIRTIO_NET_F_NOTF_COAL: u32 = 53; +pub const VIRTIO_NET_F_GUEST_USO4: u32 = 54; +pub const VIRTIO_NET_F_GUEST_USO6: u32 = 55; +pub const VIRTIO_NET_F_HOST_USO: u32 = 56; +pub const VIRTIO_NET_F_HASH_REPORT: u32 = 57; +pub const VIRTIO_NET_F_GUEST_HDRLEN: u32 = 59; +pub const VIRTIO_NET_F_RSS: u32 = 60; +pub const VIRTIO_NET_F_RSC_EXT: u32 = 61; +pub const VIRTIO_NET_F_STANDBY: u32 = 62; +pub const VIRTIO_NET_F_SPEED_DUPLEX: u32 = 63; +pub const VIRTIO_NET_F_GSO: u32 = 6; +pub type __u8 = ::std::os::raw::c_uchar; +pub type __u16 = ::std::os::raw::c_ushort; +pub type __le16 = __u16; +pub type __virtio16 = __u16; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct virtio_net_hdr_v1 { + pub flags: __u8, + pub gso_type: __u8, + pub hdr_len: __virtio16, + pub gso_size: __virtio16, + pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1, + pub num_buffers: __virtio16, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union virtio_net_hdr_v1__bindgen_ty_1 { + pub __bindgen_anon_1: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1, + pub csum: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2, + pub rsc: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3, +} +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1 { + pub csum_start: __virtio16, + pub csum_offset: __virtio16, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1"] + [::std::mem::size_of::() - 4usize]; + ["Alignment of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1"] + [::std::mem::align_of::() - 2usize]; + ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1::csum_start"][::std::mem::offset_of!( + virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1, + csum_start + ) - 0usize]; + ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1::csum_offset"][::std::mem::offset_of!( + virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_1, + csum_offset + ) - 2usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2 { + pub start: __virtio16, + pub offset: __virtio16, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2"] + [::std::mem::size_of::() - 4usize]; + ["Alignment of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2"] + [::std::mem::align_of::() - 2usize]; + ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2::start"] + [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2, start) - 0usize]; + ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2::offset"] + [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_2, offset) - 2usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3 { + pub segments: __le16, + pub dup_acks: __le16, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3"] + [::std::mem::size_of::() - 4usize]; + ["Alignment of virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3"] + [::std::mem::align_of::() - 2usize]; + ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3::segments"] + [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3, segments) - 0usize]; + ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3::dup_acks"] + [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1__bindgen_ty_3, dup_acks) - 2usize]; +}; +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of virtio_net_hdr_v1__bindgen_ty_1"] + [::std::mem::size_of::() - 4usize]; + ["Alignment of virtio_net_hdr_v1__bindgen_ty_1"] + [::std::mem::align_of::() - 2usize]; + ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1::csum"] + [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1, csum) - 0usize]; + ["Offset of field: virtio_net_hdr_v1__bindgen_ty_1::rsc"] + [::std::mem::offset_of!(virtio_net_hdr_v1__bindgen_ty_1, rsc) - 0usize]; +}; +impl Default for virtio_net_hdr_v1__bindgen_ty_1 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of virtio_net_hdr_v1"][::std::mem::size_of::() - 12usize]; + ["Alignment of virtio_net_hdr_v1"][::std::mem::align_of::() - 2usize]; + ["Offset of field: virtio_net_hdr_v1::flags"] + [::std::mem::offset_of!(virtio_net_hdr_v1, flags) - 0usize]; + ["Offset of field: virtio_net_hdr_v1::gso_type"] + [::std::mem::offset_of!(virtio_net_hdr_v1, gso_type) - 1usize]; + ["Offset of field: virtio_net_hdr_v1::hdr_len"] + [::std::mem::offset_of!(virtio_net_hdr_v1, hdr_len) - 2usize]; + ["Offset of field: virtio_net_hdr_v1::gso_size"] + [::std::mem::offset_of!(virtio_net_hdr_v1, gso_size) - 4usize]; + ["Offset of field: virtio_net_hdr_v1::num_buffers"] + [::std::mem::offset_of!(virtio_net_hdr_v1, num_buffers) - 10usize]; +}; +impl Default for virtio_net_hdr_v1 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} diff --git a/src/vmm/src/devices/virtio/gen/virtio_ring.rs b/src/vmm/src/devices/virtio/generated/virtio_ring.rs similarity index 72% rename from src/vmm/src/devices/virtio/gen/virtio_ring.rs rename to src/vmm/src/devices/virtio/generated/virtio_ring.rs index 9d228ea9ee8..a0411fcc92b 100644 --- a/src/vmm/src/devices/virtio/gen/virtio_ring.rs +++ b/src/vmm/src/devices/virtio/generated/virtio_ring.rs @@ -1,4 +1,4 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -11,7 +11,8 @@ clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] pub const VIRTIO_RING_F_EVENT_IDX: u32 = 29; diff --git a/src/vmm/src/devices/virtio/gen/virtio_rng.rs b/src/vmm/src/devices/virtio/generated/virtio_rng.rs similarity index 65% rename from src/vmm/src/devices/virtio/gen/virtio_rng.rs rename to src/vmm/src/devices/virtio/generated/virtio_rng.rs index a0f43120693..e1ecc4fa38b 100644 --- a/src/vmm/src/devices/virtio/gen/virtio_rng.rs +++ b/src/vmm/src/devices/virtio/generated/virtio_rng.rs @@ -1,4 +1,4 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -11,7 +11,8 @@ clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] pub const VIRTIO_F_NOTIFY_ON_EMPTY: u32 = 24; @@ -20,5 +21,10 @@ pub const VIRTIO_F_VERSION_1: u32 = 32; pub const VIRTIO_F_ACCESS_PLATFORM: u32 = 33; pub const VIRTIO_F_IOMMU_PLATFORM: u32 = 33; pub const VIRTIO_F_RING_PACKED: u32 = 34; +pub const VIRTIO_F_IN_ORDER: u32 = 35; pub const VIRTIO_F_ORDER_PLATFORM: u32 = 36; pub const VIRTIO_F_SR_IOV: u32 = 37; +pub const VIRTIO_F_NOTIFICATION_DATA: u32 = 38; +pub const VIRTIO_F_NOTIF_CONFIG_DATA: u32 = 39; +pub const VIRTIO_F_RING_RESET: u32 = 40; +pub const VIRTIO_F_ADMIN_VQ: u32 = 41; diff --git a/src/vmm/src/devices/virtio/iov_deque.rs b/src/vmm/src/devices/virtio/iov_deque.rs index b28d7076f43..55587d83843 100644 --- a/src/vmm/src/devices/virtio/iov_deque.rs +++ b/src/vmm/src/devices/virtio/iov_deque.rs @@ -120,7 +120,8 @@ impl IovDeque { fd: c_int, offset: off_t, ) -> Result<*mut c_void, IovDequeError> { - let ptr = libc::mmap(addr, len, prot, flags, fd, offset); + // SAFETY: caller should ensure the parameters are valid + let ptr = unsafe { libc::mmap(addr, len, prot, flags, fd, offset) }; if ptr == libc::MAP_FAILED { return Err(IovDequeError::Mmap(std::io::Error::last_os_error())); } diff --git a/src/vmm/src/devices/virtio/iovec.rs b/src/vmm/src/devices/virtio/iovec.rs index c9893260d9e..3865cc7ecf2 100644 --- a/src/vmm/src/devices/virtio/iovec.rs +++ b/src/vmm/src/devices/virtio/iovec.rs @@ -100,7 +100,10 @@ impl IoVecBuffer { head: DescriptorChain, ) -> Result { let mut new_buffer = Self::default(); - new_buffer.load_descriptor_chain(mem, head)?; + // SAFETY: descriptor chain cannot be referencing the same memory location as another chain + unsafe { + new_buffer.load_descriptor_chain(mem, head)?; + } Ok(new_buffer) } @@ -194,7 +197,7 @@ impl IoVecBuffer { Err(VolatileMemoryError::IOError(err)) if err.kind() == ErrorKind::Interrupted => { - continue + continue; } Ok(bytes_read) => break bytes_read, Err(volatile_memory_error) => return Err(volatile_memory_error), @@ -328,7 +331,8 @@ impl IoVecBufferMut { head: DescriptorChain, ) -> Result<(), IoVecError> { self.clear(); - let _ = self.append_descriptor_chain(mem, head)?; + // SAFETY: descriptor chain cannot be referencing the same memory location as another chain + let _ = unsafe { self.append_descriptor_chain(mem, head)? }; Ok(()) } @@ -358,7 +362,10 @@ impl IoVecBufferMut { head: DescriptorChain, ) -> Result { let mut new_buffer = Self::new()?; - new_buffer.load_descriptor_chain(mem, head)?; + // SAFETY: descriptor chain cannot be referencing the same memory location as another chain + unsafe { + new_buffer.load_descriptor_chain(mem, head)?; + } Ok(new_buffer) } @@ -455,7 +462,7 @@ impl IoVecBufferMut { Err(VolatileMemoryError::IOError(err)) if err.kind() == ErrorKind::Interrupted => { - continue + continue; } Ok(bytes_read) => break bytes_read, Err(volatile_memory_error) => return Err(volatile_memory_error), @@ -486,7 +493,7 @@ mod tests { use crate::devices::virtio::iov_deque::IovDeque; use crate::devices::virtio::queue::{ - Queue, FIRECRACKER_MAX_QUEUE_SIZE, VIRTQ_DESC_F_NEXT, VIRTQ_DESC_F_WRITE, + FIRECRACKER_MAX_QUEUE_SIZE, Queue, VIRTQ_DESC_F_NEXT, VIRTQ_DESC_F_WRITE, }; use crate::devices::virtio::test_utils::VirtQueue; use crate::test_utils::multi_region_mem; @@ -811,8 +818,8 @@ mod verification { use std::mem::ManuallyDrop; use libc::{c_void, iovec}; - use vm_memory::bitmap::BitmapSlice; use vm_memory::VolatileSlice; + use vm_memory::bitmap::BitmapSlice; use super::IoVecBuffer; use crate::arch::GUEST_PAGE_SIZE; diff --git a/src/vmm/src/devices/virtio/mmio.rs b/src/vmm/src/devices/virtio/mmio.rs index 63d7a80d84d..12ee54bfb0a 100644 --- a/src/vmm/src/devices/virtio/mmio.rs +++ b/src/vmm/src/devices/virtio/mmio.rs @@ -368,9 +368,9 @@ pub(crate) mod tests { use vmm_sys_util::eventfd::EventFd; use super::*; + use crate::devices::virtio::ActivateError; use crate::devices::virtio::device::IrqTrigger; use crate::devices::virtio::device_status::DEVICE_NEEDS_RESET; - use crate::devices::virtio::ActivateError; use crate::test_utils::single_region_mem; use crate::utils::byte_order::{read_le_u32, write_le_u32}; use crate::utils::u64_to_usize; diff --git a/src/vmm/src/devices/virtio/mod.rs b/src/vmm/src/devices/virtio/mod.rs index 9931e1211d1..f298d28e9bd 100644 --- a/src/vmm/src/devices/virtio/mod.rs +++ b/src/vmm/src/devices/virtio/mod.rs @@ -15,7 +15,7 @@ use crate::devices::virtio::net::TapError; pub mod balloon; pub mod block; pub mod device; -pub mod gen; +pub mod generated; mod iov_deque; pub mod iovec; pub mod mmio; diff --git a/src/vmm/src/devices/virtio/net/device.rs b/src/vmm/src/devices/virtio/net/device.rs index 99941f5796a..38f6f7ee147 100755 --- a/src/vmm/src/devices/virtio/net/device.rs +++ b/src/vmm/src/devices/virtio/net/device.rs @@ -10,30 +10,30 @@ use std::mem::{self}; use std::net::Ipv4Addr; use std::sync::{Arc, Mutex}; -use libc::{iovec, EAGAIN}; +use libc::{EAGAIN, iovec}; use log::error; use vmm_sys_util::eventfd::EventFd; use super::NET_QUEUE_MAX_SIZE; use crate::devices::virtio::device::{DeviceState, IrqTrigger, IrqType, VirtioDevice}; -use crate::devices::virtio::gen::virtio_blk::VIRTIO_F_VERSION_1; -use crate::devices::virtio::gen::virtio_net::{ - virtio_net_hdr_v1, VIRTIO_NET_F_CSUM, VIRTIO_NET_F_GUEST_CSUM, VIRTIO_NET_F_GUEST_TSO4, - VIRTIO_NET_F_GUEST_TSO6, VIRTIO_NET_F_GUEST_UFO, VIRTIO_NET_F_HOST_TSO4, - VIRTIO_NET_F_HOST_TSO6, VIRTIO_NET_F_HOST_UFO, VIRTIO_NET_F_MAC, VIRTIO_NET_F_MRG_RXBUF, +use crate::devices::virtio::generated::virtio_blk::VIRTIO_F_VERSION_1; +use crate::devices::virtio::generated::virtio_net::{ + VIRTIO_NET_F_CSUM, VIRTIO_NET_F_GUEST_CSUM, VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6, + VIRTIO_NET_F_GUEST_UFO, VIRTIO_NET_F_HOST_TSO4, VIRTIO_NET_F_HOST_TSO6, VIRTIO_NET_F_HOST_UFO, + VIRTIO_NET_F_MAC, VIRTIO_NET_F_MRG_RXBUF, virtio_net_hdr_v1, }; -use crate::devices::virtio::gen::virtio_ring::VIRTIO_RING_F_EVENT_IDX; +use crate::devices::virtio::generated::virtio_ring::VIRTIO_RING_F_EVENT_IDX; use crate::devices::virtio::iovec::{ IoVecBuffer, IoVecBufferMut, IoVecError, ParsedDescriptorChain, }; use crate::devices::virtio::net::metrics::{NetDeviceMetrics, NetMetricsPerDevice}; use crate::devices::virtio::net::tap::Tap; use crate::devices::virtio::net::{ - gen, NetError, NetQueue, MAX_BUFFER_SIZE, NET_QUEUE_SIZES, RX_INDEX, TX_INDEX, + MAX_BUFFER_SIZE, NET_QUEUE_SIZES, NetError, NetQueue, RX_INDEX, TX_INDEX, generated, }; use crate::devices::virtio::queue::{DescriptorChain, Queue}; use crate::devices::virtio::{ActivateError, TYPE_NET}; -use crate::devices::{report_net_event_fail, DeviceError}; +use crate::devices::{DeviceError, report_net_event_fail}; use crate::dumbo::pdu::arp::ETH_IPV4_FRAME_LEN; use crate::dumbo::pdu::ethernet::{EthernetFrame, PAYLOAD_OFFSET}; use crate::logger::{IncMetric, METRICS}; @@ -135,7 +135,8 @@ impl RxBuffers { mem: &GuestMemoryMmap, head: DescriptorChain, ) -> Result<(), AddRxBufferError> { - let parsed_dc = self.iovec.append_descriptor_chain(mem, head)?; + // SAFETY: descriptor chain cannot be referencing the same memory location as another chain + let parsed_dc = unsafe { self.iovec.append_descriptor_chain(mem, head)? }; if parsed_dc.length < self.min_buffer_size { self.iovec.drop_chain_back(&parsed_dc); return Err(AddRxBufferError::BufferTooSmall); @@ -274,17 +275,17 @@ impl Net { rx_rate_limiter: RateLimiter, tx_rate_limiter: RateLimiter, ) -> Result { - let mut avail_features = 1 << VIRTIO_NET_F_GUEST_CSUM - | 1 << VIRTIO_NET_F_CSUM - | 1 << VIRTIO_NET_F_GUEST_TSO4 - | 1 << VIRTIO_NET_F_GUEST_TSO6 - | 1 << VIRTIO_NET_F_GUEST_UFO - | 1 << VIRTIO_NET_F_HOST_TSO4 - | 1 << VIRTIO_NET_F_HOST_TSO6 - | 1 << VIRTIO_NET_F_HOST_UFO - | 1 << VIRTIO_F_VERSION_1 - | 1 << VIRTIO_NET_F_MRG_RXBUF - | 1 << VIRTIO_RING_F_EVENT_IDX; + let mut avail_features = (1 << VIRTIO_NET_F_GUEST_CSUM) + | (1 << VIRTIO_NET_F_CSUM) + | (1 << VIRTIO_NET_F_GUEST_TSO4) + | (1 << VIRTIO_NET_F_GUEST_TSO6) + | (1 << VIRTIO_NET_F_GUEST_UFO) + | (1 << VIRTIO_NET_F_HOST_TSO4) + | (1 << VIRTIO_NET_F_HOST_TSO6) + | (1 << VIRTIO_NET_F_HOST_UFO) + | (1 << VIRTIO_F_VERSION_1) + | (1 << VIRTIO_NET_F_MRG_RXBUF) + | (1 << VIRTIO_RING_F_EVENT_IDX); let mut config_space = ConfigSpace::default(); if let Some(mac) = guest_mac { @@ -777,25 +778,25 @@ impl Net { add_if_supported( &mut tap_features, guest_supported_features, - gen::TUN_F_CSUM, + generated::TUN_F_CSUM, VIRTIO_NET_F_GUEST_CSUM, ); add_if_supported( &mut tap_features, guest_supported_features, - gen::TUN_F_UFO, + generated::TUN_F_UFO, VIRTIO_NET_F_GUEST_UFO, ); add_if_supported( &mut tap_features, guest_supported_features, - gen::TUN_F_TSO4, + generated::TUN_F_TSO4, VIRTIO_NET_F_GUEST_TSO4, ); add_if_supported( &mut tap_features, guest_supported_features, - gen::TUN_F_TSO6, + generated::TUN_F_TSO6, VIRTIO_NET_F_GUEST_TSO6, ); @@ -1039,26 +1040,26 @@ pub mod tests { use super::*; use crate::check_metric_after_block; - use crate::devices::virtio::gen::virtio_ring::VIRTIO_RING_F_EVENT_IDX; + use crate::devices::virtio::generated::virtio_ring::VIRTIO_RING_F_EVENT_IDX; use crate::devices::virtio::iovec::IoVecBuffer; + use crate::devices::virtio::net::NET_QUEUE_SIZES; use crate::devices::virtio::net::device::{ frame_bytes_from_buf, frame_bytes_from_buf_mut, frame_hdr_len, init_vnet_hdr, vnet_hdr_len, }; use crate::devices::virtio::net::test_utils::test::TestHelper; use crate::devices::virtio::net::test_utils::{ - default_net, if_index, inject_tap_tx_frame, set_mac, NetEvent, NetQueue, - TapTrafficSimulator, + NetEvent, NetQueue, TapTrafficSimulator, default_net, if_index, inject_tap_tx_frame, + set_mac, }; - use crate::devices::virtio::net::NET_QUEUE_SIZES; use crate::devices::virtio::queue::VIRTQ_DESC_F_WRITE; use crate::devices::virtio::test_utils::VirtQueue; - use crate::dumbo::pdu::arp::{EthIPv4ArpFrame, ETH_IPV4_FRAME_LEN}; - use crate::dumbo::pdu::ethernet::ETHERTYPE_ARP; use crate::dumbo::EthernetFrame; + use crate::dumbo::pdu::arp::{ETH_IPV4_FRAME_LEN, EthIPv4ArpFrame}; + use crate::dumbo::pdu::ethernet::ETHERTYPE_ARP; use crate::logger::IncMetric; use crate::rate_limiter::{BucketUpdate, RateLimiter, TokenBucket, TokenType}; use crate::test_utils::single_region_mem; - use crate::utils::net::mac::{MacAddr, MAC_ADDR_LEN}; + use crate::utils::net::mac::{MAC_ADDR_LEN, MacAddr}; use crate::vstate::memory::{Address, GuestMemory}; impl Net { @@ -1115,18 +1116,18 @@ pub mod tests { set_mac(&mut net, MacAddr::from_str("11:22:33:44:55:66").unwrap()); // Test `features()` and `ack_features()`. - let features = 1 << VIRTIO_NET_F_GUEST_CSUM - | 1 << VIRTIO_NET_F_CSUM - | 1 << VIRTIO_NET_F_GUEST_TSO4 - | 1 << VIRTIO_NET_F_GUEST_TSO6 - | 1 << VIRTIO_NET_F_MAC - | 1 << VIRTIO_NET_F_GUEST_UFO - | 1 << VIRTIO_NET_F_HOST_TSO4 - | 1 << VIRTIO_NET_F_HOST_TSO6 - | 1 << VIRTIO_NET_F_HOST_UFO - | 1 << VIRTIO_F_VERSION_1 - | 1 << VIRTIO_NET_F_MRG_RXBUF - | 1 << VIRTIO_RING_F_EVENT_IDX; + let features = (1 << VIRTIO_NET_F_GUEST_CSUM) + | (1 << VIRTIO_NET_F_CSUM) + | (1 << VIRTIO_NET_F_GUEST_TSO4) + | (1 << VIRTIO_NET_F_GUEST_TSO6) + | (1 << VIRTIO_NET_F_MAC) + | (1 << VIRTIO_NET_F_GUEST_UFO) + | (1 << VIRTIO_NET_F_HOST_TSO4) + | (1 << VIRTIO_NET_F_HOST_TSO6) + | (1 << VIRTIO_NET_F_HOST_UFO) + | (1 << VIRTIO_F_VERSION_1) + | (1 << VIRTIO_NET_F_MRG_RXBUF) + | (1 << VIRTIO_RING_F_EVENT_IDX); assert_eq!( net.avail_features_by_page(0), @@ -1148,12 +1149,14 @@ pub mod tests { // Test that `Net::build_tap_offload_features` creates the TAP offload features that we expect // it to do, based on the available guest features fn test_build_tap_offload_features_all() { - let supported_features = 1 << VIRTIO_NET_F_GUEST_CSUM - | 1 << VIRTIO_NET_F_GUEST_UFO - | 1 << VIRTIO_NET_F_GUEST_TSO4 - | 1 << VIRTIO_NET_F_GUEST_TSO6; - let expected_tap_features = - gen::TUN_F_CSUM | gen::TUN_F_UFO | gen::TUN_F_TSO4 | gen::TUN_F_TSO6; + let supported_features = (1 << VIRTIO_NET_F_GUEST_CSUM) + | (1 << VIRTIO_NET_F_GUEST_UFO) + | (1 << VIRTIO_NET_F_GUEST_TSO4) + | (1 << VIRTIO_NET_F_GUEST_TSO6); + let expected_tap_features = generated::TUN_F_CSUM + | generated::TUN_F_UFO + | generated::TUN_F_TSO4 + | generated::TUN_F_TSO6; let supported_flags = Net::build_tap_offload_features(supported_features); assert_eq!(supported_flags, expected_tap_features); @@ -1163,9 +1166,9 @@ pub mod tests { // Same as before, however, using each supported feature one by one. fn test_build_tap_offload_features_one_by_one() { let features = [ - (1 << VIRTIO_NET_F_GUEST_CSUM, gen::TUN_F_CSUM), - (1 << VIRTIO_NET_F_GUEST_UFO, gen::TUN_F_UFO), - (1 << VIRTIO_NET_F_GUEST_TSO4, gen::TUN_F_TSO4), + (1 << VIRTIO_NET_F_GUEST_CSUM, generated::TUN_F_CSUM), + (1 << VIRTIO_NET_F_GUEST_UFO, generated::TUN_F_UFO), + (1 << VIRTIO_NET_F_GUEST_TSO4, generated::TUN_F_TSO4), ]; for (virtio_flag, tap_flag) in features { let supported_flags = Net::build_tap_offload_features(virtio_flag); @@ -1919,16 +1922,18 @@ pub mod tests { check_metric_after_block!( &METRICS.mmds.rx_accepted, 1, - assert!(Net::write_to_mmds_or_tap( - net.mmds_ns.as_mut(), - &mut net.tx_rate_limiter, - &mut headers, - &buffer, - &mut net.tap, - Some(src_mac), - &net.metrics, + assert!( + Net::write_to_mmds_or_tap( + net.mmds_ns.as_mut(), + &mut net.tx_rate_limiter, + &mut headers, + &buffer, + &mut net.tap, + Some(src_mac), + &net.metrics, + ) + .unwrap() ) - .unwrap()) ); // Validate that MMDS has a response and we can retrieve it. diff --git a/src/vmm/src/devices/virtio/net/event_handler.rs b/src/vmm/src/devices/virtio/net/event_handler.rs index 1d8805e93fe..9d8c09a45f2 100644 --- a/src/vmm/src/devices/virtio/net/event_handler.rs +++ b/src/vmm/src/devices/virtio/net/event_handler.rs @@ -7,7 +7,7 @@ use vmm_sys_util::epoll::EventSet; use crate::devices::virtio::device::VirtioDevice; use crate::devices::virtio::net::device::Net; use crate::devices::virtio::net::{RX_INDEX, TX_INDEX}; -use crate::logger::{error, warn, IncMetric}; +use crate::logger::{IncMetric, error, warn}; impl Net { const PROCESS_ACTIVATE: u32 = 0; @@ -132,8 +132,8 @@ impl MutEventSubscriber for Net { #[cfg(test)] pub mod tests { - use crate::devices::virtio::net::test_utils::test::TestHelper; use crate::devices::virtio::net::test_utils::NetQueue; + use crate::devices::virtio::net::test_utils::test::TestHelper; use crate::devices::virtio::net::{MAX_BUFFER_SIZE, TX_INDEX}; use crate::test_utils::single_region_mem; diff --git a/src/vmm/src/devices/virtio/net/gen/iff.rs b/src/vmm/src/devices/virtio/net/gen/iff.rs deleted file mode 100644 index 868c61cda73..00000000000 --- a/src/vmm/src/devices/virtio/net/gen/iff.rs +++ /dev/null @@ -1,1187 +0,0 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -// automatically generated by tools/bindgen.sh - -#![allow( - non_camel_case_types, - non_upper_case_globals, - dead_code, - non_snake_case, - clippy::ptr_as_ptr, - clippy::undocumented_unsafe_blocks, - missing_debug_implementations, - clippy::tests_outside_test_module -)] - -pub const IFNAMSIZ: u32 = 16; -pub const IFALIASZ: u32 = 256; -pub const IF_GET_IFACE: u32 = 1; -pub const IF_GET_PROTO: u32 = 2; -pub const IF_IFACE_V35: u32 = 4096; -pub const IF_IFACE_V24: u32 = 4097; -pub const IF_IFACE_X21: u32 = 4098; -pub const IF_IFACE_T1: u32 = 4099; -pub const IF_IFACE_E1: u32 = 4100; -pub const IF_IFACE_SYNC_SERIAL: u32 = 4101; -pub const IF_IFACE_X21D: u32 = 4102; -pub const IF_PROTO_HDLC: u32 = 8192; -pub const IF_PROTO_PPP: u32 = 8193; -pub const IF_PROTO_CISCO: u32 = 8194; -pub const IF_PROTO_FR: u32 = 8195; -pub const IF_PROTO_FR_ADD_PVC: u32 = 8196; -pub const IF_PROTO_FR_DEL_PVC: u32 = 8197; -pub const IF_PROTO_X25: u32 = 8198; -pub const IF_PROTO_HDLC_ETH: u32 = 8199; -pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200; -pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201; -pub const IF_PROTO_FR_PVC: u32 = 8202; -pub const IF_PROTO_FR_ETH_PVC: u32 = 8203; -pub const IF_PROTO_RAW: u32 = 8204; -pub const IFHWADDRLEN: u32 = 6; -pub type sa_family_t = ::std::os::raw::c_ushort; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct sockaddr { - pub sa_family: sa_family_t, - pub sa_data: [::std::os::raw::c_char; 14usize], -} -#[test] -fn bindgen_test_layout_sockaddr() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sockaddr)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(sockaddr)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_family) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sockaddr), - "::", - stringify!(sa_family) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sa_data) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sockaddr), - "::", - stringify!(sa_data) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct sync_serial_settings { - pub clock_rate: ::std::os::raw::c_uint, - pub clock_type: ::std::os::raw::c_uint, - pub loopback: ::std::os::raw::c_ushort, -} -#[test] -fn bindgen_test_layout_sync_serial_settings() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 12usize, - concat!("Size of: ", stringify!(sync_serial_settings)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sync_serial_settings)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).clock_rate) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sync_serial_settings), - "::", - stringify!(clock_rate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).clock_type) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sync_serial_settings), - "::", - stringify!(clock_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).loopback) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sync_serial_settings), - "::", - stringify!(loopback) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct te1_settings { - pub clock_rate: ::std::os::raw::c_uint, - pub clock_type: ::std::os::raw::c_uint, - pub loopback: ::std::os::raw::c_ushort, - pub slot_map: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_te1_settings() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(te1_settings)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(te1_settings)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).clock_rate) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(te1_settings), - "::", - stringify!(clock_rate) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).clock_type) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(te1_settings), - "::", - stringify!(clock_type) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).loopback) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(te1_settings), - "::", - stringify!(loopback) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).slot_map) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(te1_settings), - "::", - stringify!(slot_map) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct raw_hdlc_proto { - pub encoding: ::std::os::raw::c_ushort, - pub parity: ::std::os::raw::c_ushort, -} -#[test] -fn bindgen_test_layout_raw_hdlc_proto() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(raw_hdlc_proto)) - ); - assert_eq!( - ::std::mem::align_of::(), - 2usize, - concat!("Alignment of ", stringify!(raw_hdlc_proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).encoding) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(raw_hdlc_proto), - "::", - stringify!(encoding) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).parity) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(raw_hdlc_proto), - "::", - stringify!(parity) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct fr_proto { - pub t391: ::std::os::raw::c_uint, - pub t392: ::std::os::raw::c_uint, - pub n391: ::std::os::raw::c_uint, - pub n392: ::std::os::raw::c_uint, - pub n393: ::std::os::raw::c_uint, - pub lmi: ::std::os::raw::c_ushort, - pub dce: ::std::os::raw::c_ushort, -} -#[test] -fn bindgen_test_layout_fr_proto() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(fr_proto)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(fr_proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).t391) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(t391) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).t392) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(t392) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).n391) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(n391) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).n392) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(n392) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).n393) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(n393) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).lmi) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(lmi) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dce) as usize - ptr as usize }, - 22usize, - concat!( - "Offset of field: ", - stringify!(fr_proto), - "::", - stringify!(dce) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct fr_proto_pvc { - pub dlci: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_fr_proto_pvc() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(fr_proto_pvc)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(fr_proto_pvc)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dlci) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(fr_proto_pvc), - "::", - stringify!(dlci) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct fr_proto_pvc_info { - pub dlci: ::std::os::raw::c_uint, - pub master: [::std::os::raw::c_char; 16usize], -} -#[test] -fn bindgen_test_layout_fr_proto_pvc_info() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 20usize, - concat!("Size of: ", stringify!(fr_proto_pvc_info)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(fr_proto_pvc_info)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dlci) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(fr_proto_pvc_info), - "::", - stringify!(dlci) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).master) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(fr_proto_pvc_info), - "::", - stringify!(master) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct cisco_proto { - pub interval: ::std::os::raw::c_uint, - pub timeout: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_cisco_proto() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(cisco_proto)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(cisco_proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).interval) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(cisco_proto), - "::", - stringify!(interval) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(cisco_proto), - "::", - stringify!(timeout) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct x25_hdlc_proto { - pub dce: ::std::os::raw::c_ushort, - pub modulo: ::std::os::raw::c_uint, - pub window: ::std::os::raw::c_uint, - pub t1: ::std::os::raw::c_uint, - pub t2: ::std::os::raw::c_uint, - pub n2: ::std::os::raw::c_uint, -} -#[test] -fn bindgen_test_layout_x25_hdlc_proto() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(x25_hdlc_proto)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(x25_hdlc_proto)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dce) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(x25_hdlc_proto), - "::", - stringify!(dce) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).modulo) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(x25_hdlc_proto), - "::", - stringify!(modulo) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).window) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(x25_hdlc_proto), - "::", - stringify!(window) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).t1) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(x25_hdlc_proto), - "::", - stringify!(t1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).t2) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(x25_hdlc_proto), - "::", - stringify!(t2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).n2) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(x25_hdlc_proto), - "::", - stringify!(n2) - ) - ); -} -pub const net_device_flags_IFF_UP: net_device_flags = 1; -pub const net_device_flags_IFF_BROADCAST: net_device_flags = 2; -pub const net_device_flags_IFF_DEBUG: net_device_flags = 4; -pub const net_device_flags_IFF_LOOPBACK: net_device_flags = 8; -pub const net_device_flags_IFF_POINTOPOINT: net_device_flags = 16; -pub const net_device_flags_IFF_NOTRAILERS: net_device_flags = 32; -pub const net_device_flags_IFF_RUNNING: net_device_flags = 64; -pub const net_device_flags_IFF_NOARP: net_device_flags = 128; -pub const net_device_flags_IFF_PROMISC: net_device_flags = 256; -pub const net_device_flags_IFF_ALLMULTI: net_device_flags = 512; -pub const net_device_flags_IFF_MASTER: net_device_flags = 1024; -pub const net_device_flags_IFF_SLAVE: net_device_flags = 2048; -pub const net_device_flags_IFF_MULTICAST: net_device_flags = 4096; -pub const net_device_flags_IFF_PORTSEL: net_device_flags = 8192; -pub const net_device_flags_IFF_AUTOMEDIA: net_device_flags = 16384; -pub const net_device_flags_IFF_DYNAMIC: net_device_flags = 32768; -pub const net_device_flags_IFF_LOWER_UP: net_device_flags = 65536; -pub const net_device_flags_IFF_DORMANT: net_device_flags = 131072; -pub const net_device_flags_IFF_ECHO: net_device_flags = 262144; -pub type net_device_flags = ::std::os::raw::c_uint; -pub const IF_OPER_UNKNOWN: _bindgen_ty_4 = 0; -pub const IF_OPER_NOTPRESENT: _bindgen_ty_4 = 1; -pub const IF_OPER_DOWN: _bindgen_ty_4 = 2; -pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_4 = 3; -pub const IF_OPER_TESTING: _bindgen_ty_4 = 4; -pub const IF_OPER_DORMANT: _bindgen_ty_4 = 5; -pub const IF_OPER_UP: _bindgen_ty_4 = 6; -pub type _bindgen_ty_4 = ::std::os::raw::c_uint; -pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_5 = 0; -pub const IF_LINK_MODE_DORMANT: _bindgen_ty_5 = 1; -pub const IF_LINK_MODE_TESTING: _bindgen_ty_5 = 2; -pub type _bindgen_ty_5 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct ifmap { - pub mem_start: ::std::os::raw::c_ulong, - pub mem_end: ::std::os::raw::c_ulong, - pub base_addr: ::std::os::raw::c_ushort, - pub irq: ::std::os::raw::c_uchar, - pub dma: ::std::os::raw::c_uchar, - pub port: ::std::os::raw::c_uchar, -} -#[test] -fn bindgen_test_layout_ifmap() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(ifmap)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifmap)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mem_start) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(mem_start) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).mem_end) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(mem_end) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).base_addr) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(base_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).irq) as usize - ptr as usize }, - 18usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(irq) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dma) as usize - ptr as usize }, - 19usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(dma) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).port) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(ifmap), - "::", - stringify!(port) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct if_settings { - pub type_: ::std::os::raw::c_uint, - pub size: ::std::os::raw::c_uint, - pub ifs_ifsu: if_settings__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union if_settings__bindgen_ty_1 { - pub raw_hdlc: *mut raw_hdlc_proto, - pub cisco: *mut cisco_proto, - pub fr: *mut fr_proto, - pub fr_pvc: *mut fr_proto_pvc, - pub fr_pvc_info: *mut fr_proto_pvc_info, - pub x25: *mut x25_hdlc_proto, - pub sync: *mut sync_serial_settings, - pub te1: *mut te1_settings, -} -#[test] -fn bindgen_test_layout_if_settings__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(if_settings__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_settings__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).raw_hdlc) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(raw_hdlc) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cisco) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(cisco) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(fr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fr_pvc) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(fr_pvc) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fr_pvc_info) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(fr_pvc_info) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).x25) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(x25) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sync) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(sync) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).te1) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings__bindgen_ty_1), - "::", - stringify!(te1) - ) - ); -} -impl Default for if_settings__bindgen_ty_1 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[test] -fn bindgen_test_layout_if_settings() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(if_settings)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(if_settings)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(if_settings), - "::", - stringify!(type_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(if_settings), - "::", - stringify!(size) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifs_ifsu) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(if_settings), - "::", - stringify!(ifs_ifsu) - ) - ); -} -impl Default for if_settings { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifreq { - pub ifr_ifrn: ifreq__bindgen_ty_1, - pub ifr_ifru: ifreq__bindgen_ty_2, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifreq__bindgen_ty_1 { - pub ifrn_name: [::std::os::raw::c_uchar; 16usize], -} -#[test] -fn bindgen_test_layout_ifreq__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifreq__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(ifreq__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifrn_name) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_1), - "::", - stringify!(ifrn_name) - ) - ); -} -impl Default for ifreq__bindgen_ty_1 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifreq__bindgen_ty_2 { - pub ifru_addr: sockaddr, - pub ifru_dstaddr: sockaddr, - pub ifru_broadaddr: sockaddr, - pub ifru_netmask: sockaddr, - pub ifru_hwaddr: sockaddr, - pub ifru_flags: ::std::os::raw::c_short, - pub ifru_ivalue: ::std::os::raw::c_int, - pub ifru_mtu: ::std::os::raw::c_int, - pub ifru_map: ifmap, - pub ifru_slave: [::std::os::raw::c_char; 16usize], - pub ifru_newname: [::std::os::raw::c_char; 16usize], - pub ifru_data: *mut ::std::os::raw::c_void, - pub ifru_settings: if_settings, -} -#[test] -fn bindgen_test_layout_ifreq__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(ifreq__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifreq__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_dstaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_dstaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_broadaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_broadaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_netmask) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_netmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_hwaddr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_hwaddr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_ivalue) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_ivalue) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_mtu) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_mtu) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_map) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_map) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_slave) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_slave) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_newname) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_newname) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_data) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifru_settings) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq__bindgen_ty_2), - "::", - stringify!(ifru_settings) - ) - ); -} -impl Default for ifreq__bindgen_ty_2 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[test] -fn bindgen_test_layout_ifreq() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(ifreq)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifreq)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifr_ifrn) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifreq), - "::", - stringify!(ifr_ifrn) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifr_ifru) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(ifreq), - "::", - stringify!(ifr_ifru) - ) - ); -} -impl Default for ifreq { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ifconf { - pub ifc_len: ::std::os::raw::c_int, - pub ifc_ifcu: ifconf__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union ifconf__bindgen_ty_1 { - pub ifcu_buf: *mut ::std::os::raw::c_char, - pub ifcu_req: *mut ifreq, -} -#[test] -fn bindgen_test_layout_ifconf__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ifconf__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifconf__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcu_buf) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifconf__bindgen_ty_1), - "::", - stringify!(ifcu_buf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifcu_req) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifconf__bindgen_ty_1), - "::", - stringify!(ifcu_req) - ) - ); -} -impl Default for ifconf__bindgen_ty_1 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[test] -fn bindgen_test_layout_ifconf() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ifconf)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ifconf)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifc_len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ifconf), - "::", - stringify!(ifc_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ifc_ifcu) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ifconf), - "::", - stringify!(ifc_ifcu) - ) - ); -} -impl Default for ifconf { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} diff --git a/src/vmm/src/devices/virtio/net/gen/if_tun.rs b/src/vmm/src/devices/virtio/net/generated/if_tun.rs similarity index 66% rename from src/vmm/src/devices/virtio/net/gen/if_tun.rs rename to src/vmm/src/devices/virtio/net/generated/if_tun.rs index 7b994a327c1..d08fe1b1ce7 100644 --- a/src/vmm/src/devices/virtio/net/gen/if_tun.rs +++ b/src/vmm/src/devices/virtio/net/generated/if_tun.rs @@ -1,4 +1,4 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -11,7 +11,8 @@ clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] pub const ETH_ALEN: u32 = 6; @@ -62,7 +63,10 @@ pub const ETH_P_PPP_SES: u32 = 34916; pub const ETH_P_LINK_CTL: u32 = 34924; pub const ETH_P_ATMFATE: u32 = 34948; pub const ETH_P_PAE: u32 = 34958; +pub const ETH_P_PROFINET: u32 = 34962; +pub const ETH_P_REALTEK: u32 = 34969; pub const ETH_P_AOE: u32 = 34978; +pub const ETH_P_ETHERCAT: u32 = 34980; pub const ETH_P_8021AD: u32 = 34984; pub const ETH_P_802_EX1: u32 = 34997; pub const ETH_P_PREAUTH: u32 = 35015; @@ -89,6 +93,7 @@ pub const ETH_P_QINQ2: u32 = 37376; pub const ETH_P_QINQ3: u32 = 37632; pub const ETH_P_EDSA: u32 = 56026; pub const ETH_P_DSA_8021Q: u32 = 56027; +pub const ETH_P_DSA_A5PSW: u32 = 57345; pub const ETH_P_IFE: u32 = 60734; pub const ETH_P_AF_IUCV: u32 = 64507; pub const ETH_P_802_3_MIN: u32 = 1536; @@ -103,6 +108,7 @@ pub const ETH_P_PPP_MP: u32 = 8; pub const ETH_P_LOCALTALK: u32 = 9; pub const ETH_P_CAN: u32 = 12; pub const ETH_P_CANFD: u32 = 13; +pub const ETH_P_CANXL: u32 = 14; pub const ETH_P_PPPTALK: u32 = 16; pub const ETH_P_TR_802_2: u32 = 17; pub const ETH_P_MOBITEX: u32 = 21; @@ -131,6 +137,8 @@ pub const TUN_F_TSO4: u32 = 2; pub const TUN_F_TSO6: u32 = 4; pub const TUN_F_TSO_ECN: u32 = 8; pub const TUN_F_UFO: u32 = 16; +pub const TUN_F_USO4: u32 = 32; +pub const TUN_F_USO6: u32 = 64; pub const TUN_PKT_STRIP: u32 = 1; pub const TUN_FLT_ALLMULTI: u32 = 1; pub type __u8 = ::std::os::raw::c_uchar; @@ -144,102 +152,28 @@ pub struct sock_filter { pub jf: __u8, pub k: __u32, } -#[test] -fn bindgen_test_layout_sock_filter() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(sock_filter)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(sock_filter)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).code) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sock_filter), - "::", - stringify!(code) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).jt) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(sock_filter), - "::", - stringify!(jt) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).jf) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(sock_filter), - "::", - stringify!(jf) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).k) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(sock_filter), - "::", - stringify!(k) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of sock_filter"][::std::mem::size_of::() - 8usize]; + ["Alignment of sock_filter"][::std::mem::align_of::() - 4usize]; + ["Offset of field: sock_filter::code"][::std::mem::offset_of!(sock_filter, code) - 0usize]; + ["Offset of field: sock_filter::jt"][::std::mem::offset_of!(sock_filter, jt) - 2usize]; + ["Offset of field: sock_filter::jf"][::std::mem::offset_of!(sock_filter, jf) - 3usize]; + ["Offset of field: sock_filter::k"][::std::mem::offset_of!(sock_filter, k) - 4usize]; +}; #[repr(C)] #[derive(Debug, Copy, Clone, PartialEq)] pub struct sock_fprog { pub len: ::std::os::raw::c_ushort, pub filter: *mut sock_filter, } -#[test] -fn bindgen_test_layout_sock_fprog() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(sock_fprog)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(sock_fprog)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(sock_fprog), - "::", - stringify!(len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).filter) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(sock_fprog), - "::", - stringify!(filter) - ) - ); -} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of sock_fprog"][::std::mem::size_of::() - 16usize]; + ["Alignment of sock_fprog"][::std::mem::align_of::() - 8usize]; + ["Offset of field: sock_fprog::len"][::std::mem::offset_of!(sock_fprog, len) - 0usize]; + ["Offset of field: sock_fprog::filter"][::std::mem::offset_of!(sock_fprog, filter) - 8usize]; +}; impl Default for sock_fprog { fn default() -> Self { let mut s = ::std::mem::MaybeUninit::::uninit(); diff --git a/src/vmm/src/devices/virtio/net/generated/iff.rs b/src/vmm/src/devices/virtio/net/generated/iff.rs new file mode 100644 index 00000000000..c805642a834 --- /dev/null +++ b/src/vmm/src/devices/virtio/net/generated/iff.rs @@ -0,0 +1,465 @@ +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// automatically generated by tools/bindgen.sh + +#![allow( + non_camel_case_types, + non_upper_case_globals, + dead_code, + non_snake_case, + clippy::ptr_as_ptr, + clippy::undocumented_unsafe_blocks, + missing_debug_implementations, + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn +)] + +pub const IFNAMSIZ: u32 = 16; +pub const IFALIASZ: u32 = 256; +pub const IF_GET_IFACE: u32 = 1; +pub const IF_GET_PROTO: u32 = 2; +pub const IF_IFACE_V35: u32 = 4096; +pub const IF_IFACE_V24: u32 = 4097; +pub const IF_IFACE_X21: u32 = 4098; +pub const IF_IFACE_T1: u32 = 4099; +pub const IF_IFACE_E1: u32 = 4100; +pub const IF_IFACE_SYNC_SERIAL: u32 = 4101; +pub const IF_IFACE_X21D: u32 = 4102; +pub const IF_PROTO_HDLC: u32 = 8192; +pub const IF_PROTO_PPP: u32 = 8193; +pub const IF_PROTO_CISCO: u32 = 8194; +pub const IF_PROTO_FR: u32 = 8195; +pub const IF_PROTO_FR_ADD_PVC: u32 = 8196; +pub const IF_PROTO_FR_DEL_PVC: u32 = 8197; +pub const IF_PROTO_X25: u32 = 8198; +pub const IF_PROTO_HDLC_ETH: u32 = 8199; +pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200; +pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201; +pub const IF_PROTO_FR_PVC: u32 = 8202; +pub const IF_PROTO_FR_ETH_PVC: u32 = 8203; +pub const IF_PROTO_RAW: u32 = 8204; +pub const IFHWADDRLEN: u32 = 6; +pub type sa_family_t = ::std::os::raw::c_ushort; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct sockaddr { + pub sa_family: sa_family_t, + pub sa_data: [::std::os::raw::c_char; 14usize], +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of sockaddr"][::std::mem::size_of::() - 16usize]; + ["Alignment of sockaddr"][::std::mem::align_of::() - 2usize]; + ["Offset of field: sockaddr::sa_family"][::std::mem::offset_of!(sockaddr, sa_family) - 0usize]; + ["Offset of field: sockaddr::sa_data"][::std::mem::offset_of!(sockaddr, sa_data) - 2usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct sync_serial_settings { + pub clock_rate: ::std::os::raw::c_uint, + pub clock_type: ::std::os::raw::c_uint, + pub loopback: ::std::os::raw::c_ushort, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of sync_serial_settings"][::std::mem::size_of::() - 12usize]; + ["Alignment of sync_serial_settings"][::std::mem::align_of::() - 4usize]; + ["Offset of field: sync_serial_settings::clock_rate"] + [::std::mem::offset_of!(sync_serial_settings, clock_rate) - 0usize]; + ["Offset of field: sync_serial_settings::clock_type"] + [::std::mem::offset_of!(sync_serial_settings, clock_type) - 4usize]; + ["Offset of field: sync_serial_settings::loopback"] + [::std::mem::offset_of!(sync_serial_settings, loopback) - 8usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct te1_settings { + pub clock_rate: ::std::os::raw::c_uint, + pub clock_type: ::std::os::raw::c_uint, + pub loopback: ::std::os::raw::c_ushort, + pub slot_map: ::std::os::raw::c_uint, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of te1_settings"][::std::mem::size_of::() - 16usize]; + ["Alignment of te1_settings"][::std::mem::align_of::() - 4usize]; + ["Offset of field: te1_settings::clock_rate"] + [::std::mem::offset_of!(te1_settings, clock_rate) - 0usize]; + ["Offset of field: te1_settings::clock_type"] + [::std::mem::offset_of!(te1_settings, clock_type) - 4usize]; + ["Offset of field: te1_settings::loopback"] + [::std::mem::offset_of!(te1_settings, loopback) - 8usize]; + ["Offset of field: te1_settings::slot_map"] + [::std::mem::offset_of!(te1_settings, slot_map) - 12usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct raw_hdlc_proto { + pub encoding: ::std::os::raw::c_ushort, + pub parity: ::std::os::raw::c_ushort, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of raw_hdlc_proto"][::std::mem::size_of::() - 4usize]; + ["Alignment of raw_hdlc_proto"][::std::mem::align_of::() - 2usize]; + ["Offset of field: raw_hdlc_proto::encoding"] + [::std::mem::offset_of!(raw_hdlc_proto, encoding) - 0usize]; + ["Offset of field: raw_hdlc_proto::parity"] + [::std::mem::offset_of!(raw_hdlc_proto, parity) - 2usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct fr_proto { + pub t391: ::std::os::raw::c_uint, + pub t392: ::std::os::raw::c_uint, + pub n391: ::std::os::raw::c_uint, + pub n392: ::std::os::raw::c_uint, + pub n393: ::std::os::raw::c_uint, + pub lmi: ::std::os::raw::c_ushort, + pub dce: ::std::os::raw::c_ushort, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of fr_proto"][::std::mem::size_of::() - 24usize]; + ["Alignment of fr_proto"][::std::mem::align_of::() - 4usize]; + ["Offset of field: fr_proto::t391"][::std::mem::offset_of!(fr_proto, t391) - 0usize]; + ["Offset of field: fr_proto::t392"][::std::mem::offset_of!(fr_proto, t392) - 4usize]; + ["Offset of field: fr_proto::n391"][::std::mem::offset_of!(fr_proto, n391) - 8usize]; + ["Offset of field: fr_proto::n392"][::std::mem::offset_of!(fr_proto, n392) - 12usize]; + ["Offset of field: fr_proto::n393"][::std::mem::offset_of!(fr_proto, n393) - 16usize]; + ["Offset of field: fr_proto::lmi"][::std::mem::offset_of!(fr_proto, lmi) - 20usize]; + ["Offset of field: fr_proto::dce"][::std::mem::offset_of!(fr_proto, dce) - 22usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct fr_proto_pvc { + pub dlci: ::std::os::raw::c_uint, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of fr_proto_pvc"][::std::mem::size_of::() - 4usize]; + ["Alignment of fr_proto_pvc"][::std::mem::align_of::() - 4usize]; + ["Offset of field: fr_proto_pvc::dlci"][::std::mem::offset_of!(fr_proto_pvc, dlci) - 0usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct fr_proto_pvc_info { + pub dlci: ::std::os::raw::c_uint, + pub master: [::std::os::raw::c_char; 16usize], +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of fr_proto_pvc_info"][::std::mem::size_of::() - 20usize]; + ["Alignment of fr_proto_pvc_info"][::std::mem::align_of::() - 4usize]; + ["Offset of field: fr_proto_pvc_info::dlci"] + [::std::mem::offset_of!(fr_proto_pvc_info, dlci) - 0usize]; + ["Offset of field: fr_proto_pvc_info::master"] + [::std::mem::offset_of!(fr_proto_pvc_info, master) - 4usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct cisco_proto { + pub interval: ::std::os::raw::c_uint, + pub timeout: ::std::os::raw::c_uint, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of cisco_proto"][::std::mem::size_of::() - 8usize]; + ["Alignment of cisco_proto"][::std::mem::align_of::() - 4usize]; + ["Offset of field: cisco_proto::interval"] + [::std::mem::offset_of!(cisco_proto, interval) - 0usize]; + ["Offset of field: cisco_proto::timeout"] + [::std::mem::offset_of!(cisco_proto, timeout) - 4usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct x25_hdlc_proto { + pub dce: ::std::os::raw::c_ushort, + pub modulo: ::std::os::raw::c_uint, + pub window: ::std::os::raw::c_uint, + pub t1: ::std::os::raw::c_uint, + pub t2: ::std::os::raw::c_uint, + pub n2: ::std::os::raw::c_uint, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of x25_hdlc_proto"][::std::mem::size_of::() - 24usize]; + ["Alignment of x25_hdlc_proto"][::std::mem::align_of::() - 4usize]; + ["Offset of field: x25_hdlc_proto::dce"][::std::mem::offset_of!(x25_hdlc_proto, dce) - 0usize]; + ["Offset of field: x25_hdlc_proto::modulo"] + [::std::mem::offset_of!(x25_hdlc_proto, modulo) - 4usize]; + ["Offset of field: x25_hdlc_proto::window"] + [::std::mem::offset_of!(x25_hdlc_proto, window) - 8usize]; + ["Offset of field: x25_hdlc_proto::t1"][::std::mem::offset_of!(x25_hdlc_proto, t1) - 12usize]; + ["Offset of field: x25_hdlc_proto::t2"][::std::mem::offset_of!(x25_hdlc_proto, t2) - 16usize]; + ["Offset of field: x25_hdlc_proto::n2"][::std::mem::offset_of!(x25_hdlc_proto, n2) - 20usize]; +}; +pub const net_device_flags_IFF_UP: net_device_flags = 1; +pub const net_device_flags_IFF_BROADCAST: net_device_flags = 2; +pub const net_device_flags_IFF_DEBUG: net_device_flags = 4; +pub const net_device_flags_IFF_LOOPBACK: net_device_flags = 8; +pub const net_device_flags_IFF_POINTOPOINT: net_device_flags = 16; +pub const net_device_flags_IFF_NOTRAILERS: net_device_flags = 32; +pub const net_device_flags_IFF_RUNNING: net_device_flags = 64; +pub const net_device_flags_IFF_NOARP: net_device_flags = 128; +pub const net_device_flags_IFF_PROMISC: net_device_flags = 256; +pub const net_device_flags_IFF_ALLMULTI: net_device_flags = 512; +pub const net_device_flags_IFF_MASTER: net_device_flags = 1024; +pub const net_device_flags_IFF_SLAVE: net_device_flags = 2048; +pub const net_device_flags_IFF_MULTICAST: net_device_flags = 4096; +pub const net_device_flags_IFF_PORTSEL: net_device_flags = 8192; +pub const net_device_flags_IFF_AUTOMEDIA: net_device_flags = 16384; +pub const net_device_flags_IFF_DYNAMIC: net_device_flags = 32768; +pub const net_device_flags_IFF_LOWER_UP: net_device_flags = 65536; +pub const net_device_flags_IFF_DORMANT: net_device_flags = 131072; +pub const net_device_flags_IFF_ECHO: net_device_flags = 262144; +pub type net_device_flags = ::std::os::raw::c_uint; +pub const IF_OPER_UNKNOWN: _bindgen_ty_4 = 0; +pub const IF_OPER_NOTPRESENT: _bindgen_ty_4 = 1; +pub const IF_OPER_DOWN: _bindgen_ty_4 = 2; +pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_4 = 3; +pub const IF_OPER_TESTING: _bindgen_ty_4 = 4; +pub const IF_OPER_DORMANT: _bindgen_ty_4 = 5; +pub const IF_OPER_UP: _bindgen_ty_4 = 6; +pub type _bindgen_ty_4 = ::std::os::raw::c_uint; +pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_5 = 0; +pub const IF_LINK_MODE_DORMANT: _bindgen_ty_5 = 1; +pub const IF_LINK_MODE_TESTING: _bindgen_ty_5 = 2; +pub type _bindgen_ty_5 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct ifmap { + pub mem_start: ::std::os::raw::c_ulong, + pub mem_end: ::std::os::raw::c_ulong, + pub base_addr: ::std::os::raw::c_ushort, + pub irq: ::std::os::raw::c_uchar, + pub dma: ::std::os::raw::c_uchar, + pub port: ::std::os::raw::c_uchar, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of ifmap"][::std::mem::size_of::() - 24usize]; + ["Alignment of ifmap"][::std::mem::align_of::() - 8usize]; + ["Offset of field: ifmap::mem_start"][::std::mem::offset_of!(ifmap, mem_start) - 0usize]; + ["Offset of field: ifmap::mem_end"][::std::mem::offset_of!(ifmap, mem_end) - 8usize]; + ["Offset of field: ifmap::base_addr"][::std::mem::offset_of!(ifmap, base_addr) - 16usize]; + ["Offset of field: ifmap::irq"][::std::mem::offset_of!(ifmap, irq) - 18usize]; + ["Offset of field: ifmap::dma"][::std::mem::offset_of!(ifmap, dma) - 19usize]; + ["Offset of field: ifmap::port"][::std::mem::offset_of!(ifmap, port) - 20usize]; +}; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct if_settings { + pub type_: ::std::os::raw::c_uint, + pub size: ::std::os::raw::c_uint, + pub ifs_ifsu: if_settings__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union if_settings__bindgen_ty_1 { + pub raw_hdlc: *mut raw_hdlc_proto, + pub cisco: *mut cisco_proto, + pub fr: *mut fr_proto, + pub fr_pvc: *mut fr_proto_pvc, + pub fr_pvc_info: *mut fr_proto_pvc_info, + pub x25: *mut x25_hdlc_proto, + pub sync: *mut sync_serial_settings, + pub te1: *mut te1_settings, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of if_settings__bindgen_ty_1"] + [::std::mem::size_of::() - 8usize]; + ["Alignment of if_settings__bindgen_ty_1"] + [::std::mem::align_of::() - 8usize]; + ["Offset of field: if_settings__bindgen_ty_1::raw_hdlc"] + [::std::mem::offset_of!(if_settings__bindgen_ty_1, raw_hdlc) - 0usize]; + ["Offset of field: if_settings__bindgen_ty_1::cisco"] + [::std::mem::offset_of!(if_settings__bindgen_ty_1, cisco) - 0usize]; + ["Offset of field: if_settings__bindgen_ty_1::fr"] + [::std::mem::offset_of!(if_settings__bindgen_ty_1, fr) - 0usize]; + ["Offset of field: if_settings__bindgen_ty_1::fr_pvc"] + [::std::mem::offset_of!(if_settings__bindgen_ty_1, fr_pvc) - 0usize]; + ["Offset of field: if_settings__bindgen_ty_1::fr_pvc_info"] + [::std::mem::offset_of!(if_settings__bindgen_ty_1, fr_pvc_info) - 0usize]; + ["Offset of field: if_settings__bindgen_ty_1::x25"] + [::std::mem::offset_of!(if_settings__bindgen_ty_1, x25) - 0usize]; + ["Offset of field: if_settings__bindgen_ty_1::sync"] + [::std::mem::offset_of!(if_settings__bindgen_ty_1, sync) - 0usize]; + ["Offset of field: if_settings__bindgen_ty_1::te1"] + [::std::mem::offset_of!(if_settings__bindgen_ty_1, te1) - 0usize]; +}; +impl Default for if_settings__bindgen_ty_1 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of if_settings"][::std::mem::size_of::() - 16usize]; + ["Alignment of if_settings"][::std::mem::align_of::() - 8usize]; + ["Offset of field: if_settings::type_"][::std::mem::offset_of!(if_settings, type_) - 0usize]; + ["Offset of field: if_settings::size"][::std::mem::offset_of!(if_settings, size) - 4usize]; + ["Offset of field: if_settings::ifs_ifsu"] + [::std::mem::offset_of!(if_settings, ifs_ifsu) - 8usize]; +}; +impl Default for if_settings { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ifreq { + pub ifr_ifrn: ifreq__bindgen_ty_1, + pub ifr_ifru: ifreq__bindgen_ty_2, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ifreq__bindgen_ty_1 { + pub ifrn_name: [::std::os::raw::c_uchar; 16usize], +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of ifreq__bindgen_ty_1"][::std::mem::size_of::() - 16usize]; + ["Alignment of ifreq__bindgen_ty_1"][::std::mem::align_of::() - 1usize]; + ["Offset of field: ifreq__bindgen_ty_1::ifrn_name"] + [::std::mem::offset_of!(ifreq__bindgen_ty_1, ifrn_name) - 0usize]; +}; +impl Default for ifreq__bindgen_ty_1 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ifreq__bindgen_ty_2 { + pub ifru_addr: sockaddr, + pub ifru_dstaddr: sockaddr, + pub ifru_broadaddr: sockaddr, + pub ifru_netmask: sockaddr, + pub ifru_hwaddr: sockaddr, + pub ifru_flags: ::std::os::raw::c_short, + pub ifru_ivalue: ::std::os::raw::c_int, + pub ifru_mtu: ::std::os::raw::c_int, + pub ifru_map: ifmap, + pub ifru_slave: [::std::os::raw::c_char; 16usize], + pub ifru_newname: [::std::os::raw::c_char; 16usize], + pub ifru_data: *mut ::std::os::raw::c_void, + pub ifru_settings: if_settings, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of ifreq__bindgen_ty_2"][::std::mem::size_of::() - 24usize]; + ["Alignment of ifreq__bindgen_ty_2"][::std::mem::align_of::() - 8usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_addr"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_addr) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_dstaddr"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_dstaddr) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_broadaddr"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_broadaddr) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_netmask"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_netmask) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_hwaddr"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_hwaddr) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_flags"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_flags) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_ivalue"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_ivalue) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_mtu"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_mtu) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_map"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_map) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_slave"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_slave) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_newname"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_newname) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_data"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_data) - 0usize]; + ["Offset of field: ifreq__bindgen_ty_2::ifru_settings"] + [::std::mem::offset_of!(ifreq__bindgen_ty_2, ifru_settings) - 0usize]; +}; +impl Default for ifreq__bindgen_ty_2 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of ifreq"][::std::mem::size_of::() - 40usize]; + ["Alignment of ifreq"][::std::mem::align_of::() - 8usize]; + ["Offset of field: ifreq::ifr_ifrn"][::std::mem::offset_of!(ifreq, ifr_ifrn) - 0usize]; + ["Offset of field: ifreq::ifr_ifru"][::std::mem::offset_of!(ifreq, ifr_ifru) - 16usize]; +}; +impl Default for ifreq { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ifconf { + pub ifc_len: ::std::os::raw::c_int, + pub ifc_ifcu: ifconf__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union ifconf__bindgen_ty_1 { + pub ifcu_buf: *mut ::std::os::raw::c_char, + pub ifcu_req: *mut ifreq, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of ifconf__bindgen_ty_1"][::std::mem::size_of::() - 8usize]; + ["Alignment of ifconf__bindgen_ty_1"][::std::mem::align_of::() - 8usize]; + ["Offset of field: ifconf__bindgen_ty_1::ifcu_buf"] + [::std::mem::offset_of!(ifconf__bindgen_ty_1, ifcu_buf) - 0usize]; + ["Offset of field: ifconf__bindgen_ty_1::ifcu_req"] + [::std::mem::offset_of!(ifconf__bindgen_ty_1, ifcu_req) - 0usize]; +}; +impl Default for ifconf__bindgen_ty_1 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of ifconf"][::std::mem::size_of::() - 16usize]; + ["Alignment of ifconf"][::std::mem::align_of::() - 8usize]; + ["Offset of field: ifconf::ifc_len"][::std::mem::offset_of!(ifconf, ifc_len) - 0usize]; + ["Offset of field: ifconf::ifc_ifcu"][::std::mem::offset_of!(ifconf, ifc_ifcu) - 8usize]; +}; +impl Default for ifconf { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} diff --git a/src/vmm/src/devices/virtio/net/gen/mod.rs b/src/vmm/src/devices/virtio/net/generated/mod.rs similarity index 100% rename from src/vmm/src/devices/virtio/net/gen/mod.rs rename to src/vmm/src/devices/virtio/net/generated/mod.rs diff --git a/src/vmm/src/devices/virtio/net/gen/sockios.rs b/src/vmm/src/devices/virtio/net/generated/sockios.rs similarity index 96% rename from src/vmm/src/devices/virtio/net/gen/sockios.rs rename to src/vmm/src/devices/virtio/net/generated/sockios.rs index d1ffd6af27c..8973c1cf877 100644 --- a/src/vmm/src/devices/virtio/net/gen/sockios.rs +++ b/src/vmm/src/devices/virtio/net/generated/sockios.rs @@ -1,4 +1,4 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // automatically generated by tools/bindgen.sh @@ -11,7 +11,8 @@ clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] pub const __BITS_PER_LONG: u32 = 64; diff --git a/src/vmm/src/devices/virtio/net/mod.rs b/src/vmm/src/devices/virtio/net/mod.rs index 4bc5b896601..31b0f8a178c 100644 --- a/src/vmm/src/devices/virtio/net/mod.rs +++ b/src/vmm/src/devices/virtio/net/mod.rs @@ -24,7 +24,7 @@ pub mod persist; mod tap; pub mod test_utils; -mod gen; +mod generated; pub use tap::{Tap, TapError}; use vm_memory::VolatileMemoryError; diff --git a/src/vmm/src/devices/virtio/net/persist.rs b/src/vmm/src/devices/virtio/net/persist.rs index fb62dcb0abe..66493f0f334 100644 --- a/src/vmm/src/devices/virtio/net/persist.rs +++ b/src/vmm/src/devices/virtio/net/persist.rs @@ -10,15 +10,15 @@ use std::sync::{Arc, Mutex}; use serde::{Deserialize, Serialize}; use super::device::{Net, RxBuffers}; -use super::{TapError, NET_NUM_QUEUES, NET_QUEUE_MAX_SIZE, RX_INDEX}; +use super::{NET_NUM_QUEUES, NET_QUEUE_MAX_SIZE, RX_INDEX, TapError}; +use crate::devices::virtio::TYPE_NET; use crate::devices::virtio::device::DeviceState; use crate::devices::virtio::persist::{PersistError as VirtioStateError, VirtioDeviceState}; -use crate::devices::virtio::TYPE_NET; use crate::mmds::data_store::Mmds; use crate::mmds::ns::MmdsNetworkStack; use crate::mmds::persist::MmdsNetworkStackState; -use crate::rate_limiter::persist::RateLimiterState; use crate::rate_limiter::RateLimiter; +use crate::rate_limiter::persist::RateLimiterState; use crate::snapshot::Persist; use crate::utils::net::mac::MacAddr; use crate::vstate::memory::GuestMemoryMmap; diff --git a/src/vmm/src/devices/virtio/net/tap.rs b/src/vmm/src/devices/virtio/net/tap.rs index 776b5ba960e..c516705af31 100644 --- a/src/vmm/src/devices/virtio/net/tap.rs +++ b/src/vmm/src/devices/virtio/net/tap.rs @@ -15,7 +15,7 @@ use vmm_sys_util::ioctl::{ioctl_with_mut_ref, ioctl_with_ref, ioctl_with_val}; use vmm_sys_util::{ioctl_ioc_nr, ioctl_iow_nr}; use crate::devices::virtio::iovec::IoVecBuffer; -use crate::devices::virtio::net::gen; +use crate::devices::virtio::net::generated; // As defined in the Linux UAPI: // https://elixir.bootlin.com/linux/v4.17/source/include/uapi/linux/if.h#L33 @@ -71,7 +71,7 @@ fn build_terminated_if_name(if_name: &str) -> Result<[u8; IFACE_NAME_MAX_LEN], T } #[derive(Copy, Clone)] -pub struct IfReqBuilder(gen::ifreq); +pub struct IfReqBuilder(generated::ifreq); impl fmt::Debug for IfReqBuilder { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { @@ -102,7 +102,7 @@ impl IfReqBuilder { mut self, socket: &F, ioctl: u64, - ) -> std::io::Result { + ) -> std::io::Result { // SAFETY: ioctl is safe. Called with a valid socket fd, and we check the return. if unsafe { ioctl_with_mut_ref(socket, ioctl, &mut self.0) } < 0 { return Err(IoError::last_os_error()); @@ -136,7 +136,10 @@ impl Tap { let terminated_if_name = build_terminated_if_name(if_name)?; let ifreq = IfReqBuilder::new() .if_name(&terminated_if_name) - .flags(i16::try_from(gen::IFF_TAP | gen::IFF_NO_PI | gen::IFF_VNET_HDR).unwrap()) + .flags( + i16::try_from(generated::IFF_TAP | generated::IFF_NO_PI | generated::IFF_VNET_HDR) + .unwrap(), + ) .execute(&tuntap, TUNSETIFF()) .map_err(|io_error| TapError::IfreqExecuteError(io_error, if_name.to_owned()))?; @@ -219,8 +222,8 @@ pub mod tests { use std::os::unix::ffi::OsStrExt; use super::*; - use crate::devices::virtio::net::gen; - use crate::devices::virtio::net::test_utils::{enable, if_index, TapTrafficSimulator}; + use crate::devices::virtio::net::generated; + use crate::devices::virtio::net::test_utils::{TapTrafficSimulator, enable, if_index}; // Redefine `IoVecBufferMut` with specific length. Otherwise // Rust will not know what to do. @@ -235,7 +238,7 @@ pub mod tests { fn test_tap_name() { // Sanity check that the assumed max iface name length is correct. assert_eq!(IFACE_NAME_MAX_LEN, unsafe { - gen::ifreq__bindgen_ty_1::default().ifrn_name.len() + generated::ifreq__bindgen_ty_1::default().ifrn_name.len() }); // Empty name - The tap should be named "tap0" by default @@ -292,8 +295,8 @@ pub mod tests { let tap_traffic_simulator = TapTrafficSimulator::new(if_index(&tap)); let mut fragment1 = vmm_sys_util::rand::rand_bytes(PAYLOAD_SIZE); - fragment1.as_mut_slice()[..gen::ETH_HLEN as usize] - .copy_from_slice(&[0; gen::ETH_HLEN as usize]); + fragment1.as_mut_slice()[..generated::ETH_HLEN as usize] + .copy_from_slice(&[0; generated::ETH_HLEN as usize]); let fragment2 = vmm_sys_util::rand::rand_bytes(PAYLOAD_SIZE); let fragment3 = vmm_sys_util::rand::rand_bytes(PAYLOAD_SIZE); diff --git a/src/vmm/src/devices/virtio/net/test_utils.rs b/src/vmm/src/devices/virtio/net/test_utils.rs index ffe7bbc7279..5762123be68 100644 --- a/src/vmm/src/devices/virtio/net/test_utils.rs +++ b/src/vmm/src/devices/virtio/net/test_utils.rs @@ -12,13 +12,13 @@ use std::str::FromStr; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::{Arc, Mutex}; +use crate::devices::DeviceError; +use crate::devices::virtio::net::Net; #[cfg(test)] use crate::devices::virtio::net::device::vnet_hdr_len; use crate::devices::virtio::net::tap::{IfReqBuilder, Tap}; -use crate::devices::virtio::net::Net; use crate::devices::virtio::queue::{Queue, QueueError}; use crate::devices::virtio::test_utils::VirtQueue; -use crate::devices::DeviceError; use crate::mmds::data_store::Mmds; use crate::mmds::ns::MmdsNetworkStack; use crate::rate_limiter::RateLimiter; @@ -211,7 +211,10 @@ pub fn if_index(tap: &Tap) -> i32 { let sock = create_socket(); let ifreq = IfReqBuilder::new() .if_name(&tap.if_name) - .execute(&sock, c_ulong::from(super::gen::sockios::SIOCGIFINDEX)) + .execute( + &sock, + c_ulong::from(super::generated::sockios::SIOCGIFINDEX), + ) .unwrap(); // SAFETY: Using this union variant is safe since `SIOCGIFINDEX` returns an integer. @@ -234,13 +237,16 @@ pub fn enable(tap: &Tap) { IfReqBuilder::new() .if_name(&tap.if_name) .flags( - (crate::devices::virtio::net::gen::net_device_flags_IFF_UP - | crate::devices::virtio::net::gen::net_device_flags_IFF_RUNNING - | crate::devices::virtio::net::gen::net_device_flags_IFF_NOARP) + (crate::devices::virtio::net::generated::net_device_flags_IFF_UP + | crate::devices::virtio::net::generated::net_device_flags_IFF_RUNNING + | crate::devices::virtio::net::generated::net_device_flags_IFF_NOARP) .try_into() .unwrap(), ) - .execute(&sock, c_ulong::from(super::gen::sockios::SIOCSIFFLAGS)) + .execute( + &sock, + c_ulong::from(super::generated::sockios::SIOCSIFFLAGS), + ) .unwrap(); } @@ -307,11 +313,11 @@ pub mod test { use crate::check_metric_after_block; use crate::devices::virtio::device::{IrqType, VirtioDevice}; use crate::devices::virtio::net::device::vnet_hdr_len; - use crate::devices::virtio::net::gen::ETH_HLEN; + use crate::devices::virtio::net::generated::ETH_HLEN; use crate::devices::virtio::net::test_utils::{ - assign_queues, default_net, inject_tap_tx_frame, NetEvent, NetQueue, + NetEvent, NetQueue, assign_queues, default_net, inject_tap_tx_frame, }; - use crate::devices::virtio::net::{Net, MAX_BUFFER_SIZE, RX_INDEX, TX_INDEX}; + use crate::devices::virtio::net::{MAX_BUFFER_SIZE, Net, RX_INDEX, TX_INDEX}; use crate::devices::virtio::queue::{VIRTQ_DESC_F_NEXT, VIRTQ_DESC_F_WRITE}; use crate::devices::virtio::test_utils::{VirtQueue, VirtqDesc}; use crate::logger::IncMetric; diff --git a/src/vmm/src/devices/virtio/persist.rs b/src/vmm/src/devices/virtio/persist.rs index 23293a25eab..7551921f4b0 100644 --- a/src/vmm/src/devices/virtio/persist.rs +++ b/src/vmm/src/devices/virtio/persist.rs @@ -11,7 +11,7 @@ use serde::{Deserialize, Serialize}; use super::queue::QueueError; use crate::devices::virtio::device::VirtioDevice; -use crate::devices::virtio::gen::virtio_ring::VIRTIO_RING_F_EVENT_IDX; +use crate::devices::virtio::generated::virtio_ring::VIRTIO_RING_F_EVENT_IDX; use crate::devices::virtio::mmio::MmioTransport; use crate::devices::virtio::queue::Queue; use crate::snapshot::Persist; @@ -160,7 +160,7 @@ impl VirtioDeviceState { return Err(PersistError::InvalidInput); } - let uses_notif_suppression = (self.acked_features & 1u64 << VIRTIO_RING_F_EVENT_IDX) != 0; + let uses_notif_suppression = (self.acked_features & (1u64 << VIRTIO_RING_F_EVENT_IDX)) != 0; let queue_construction_args = QueueConstructorArgs { mem: mem.clone(), is_activated: self.activated, @@ -258,12 +258,12 @@ mod tests { use vmm_sys_util::tempfile::TempFile; use super::*; + use crate::devices::virtio::block::virtio::VirtioBlock; use crate::devices::virtio::block::virtio::device::FileEngineType; use crate::devices::virtio::block::virtio::test_utils::default_block_with_path; - use crate::devices::virtio::block::virtio::VirtioBlock; use crate::devices::virtio::mmio::tests::DummyDevice; - use crate::devices::virtio::net::test_utils::default_net; use crate::devices::virtio::net::Net; + use crate::devices::virtio::net::test_utils::default_net; use crate::devices::virtio::test_utils::default_mem; use crate::devices::virtio::vsock::{Vsock, VsockUnixBackend}; use crate::snapshot::Snapshot; diff --git a/src/vmm/src/devices/virtio/queue.rs b/src/vmm/src/devices/virtio/queue.rs index d84c4988d62..efe42bfc3dc 100644 --- a/src/vmm/src/devices/virtio/queue.rs +++ b/src/vmm/src/devices/virtio/queue.rs @@ -7,7 +7,7 @@ use std::cmp::min; use std::num::Wrapping; -use std::sync::atomic::{fence, Ordering}; +use std::sync::atomic::{Ordering, fence}; use crate::logger::error; use crate::vstate::memory::{Address, Bitmap, ByteValued, GuestAddress, GuestMemory}; @@ -116,11 +116,7 @@ impl DescriptorChain { next: desc.next, }; - if chain.is_valid() { - Some(chain) - } else { - None - } + if chain.is_valid() { Some(chain) } else { None } } fn is_valid(&self) -> bool { @@ -955,8 +951,8 @@ mod verification { #[kani::proof] #[kani::unwind(0)] // There are no loops anywhere, but kani really enjoys getting stuck in std::ptr::drop_in_place. - // This is a compiler intrinsic that has a "dummy" implementation in stdlib that just - // recursively calls itself. Kani will generally unwind this recursion infinitely + // This is a compiler intrinsic that has a "dummy" implementation in stdlib that just + // recursively calls itself. Kani will generally unwind this recursion infinitely fn verify_spec_2_6_7_2() { // Section 2.6.7.2 deals with device-to-driver notification suppression. // It describes a mechanism by which the driver can tell the device that it does not @@ -1091,11 +1087,7 @@ mod verification { // Section 2.6: Alignment of descriptor table, available ring and used ring; size of // queue fn alignment_of(val: u64) -> u64 { - if val == 0 { - u64::MAX - } else { - val & (!val + 1) - } + if val == 0 { u64::MAX } else { val & (!val + 1) } } assert!(alignment_of(queue.desc_table_address.0) >= 16); @@ -1265,7 +1257,7 @@ mod tests { pub use super::*; use crate::devices::virtio::queue::QueueError::DescIndexOutOfBounds; - use crate::devices::virtio::test_utils::{default_mem, VirtQueue}; + use crate::devices::virtio::test_utils::{VirtQueue, default_mem}; use crate::test_utils::{multi_region_mem, single_region_mem}; use crate::vstate::memory::GuestAddress; diff --git a/src/vmm/src/devices/virtio/rng/device.rs b/src/vmm/src/devices/virtio/rng/device.rs index dca25999f3e..9c9021b66d9 100644 --- a/src/vmm/src/devices/virtio/rng/device.rs +++ b/src/vmm/src/devices/virtio/rng/device.rs @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 use std::io; -use std::sync::atomic::AtomicU32; use std::sync::Arc; +use std::sync::atomic::AtomicU32; use aws_lc_rs::rand; use vm_memory::GuestMemoryError; @@ -11,14 +11,14 @@ use vmm_sys_util::eventfd::EventFd; use super::metrics::METRICS; use super::{RNG_NUM_QUEUES, RNG_QUEUE}; +use crate::devices::DeviceError; use crate::devices::virtio::device::{DeviceState, IrqTrigger, IrqType, VirtioDevice}; -use crate::devices::virtio::gen::virtio_rng::VIRTIO_F_VERSION_1; +use crate::devices::virtio::generated::virtio_rng::VIRTIO_F_VERSION_1; use crate::devices::virtio::iov_deque::IovDequeError; use crate::devices::virtio::iovec::IoVecBufferMut; -use crate::devices::virtio::queue::{Queue, FIRECRACKER_MAX_QUEUE_SIZE}; +use crate::devices::virtio::queue::{FIRECRACKER_MAX_QUEUE_SIZE, Queue}; use crate::devices::virtio::{ActivateError, TYPE_RNG}; -use crate::devices::DeviceError; -use crate::logger::{debug, error, IncMetric}; +use crate::logger::{IncMetric, debug, error}; use crate::rate_limiter::{RateLimiter, TokenType}; use crate::vstate::memory::GuestMemoryMmap; @@ -314,7 +314,7 @@ mod tests { use crate::devices::virtio::device::VirtioDevice; use crate::devices::virtio::queue::VIRTQ_DESC_F_WRITE; use crate::devices::virtio::test_utils::test::{ - create_virtio_mem, VirtioTestDevice, VirtioTestHelper, + VirtioTestDevice, VirtioTestHelper, create_virtio_mem, }; impl VirtioTestDevice for Entropy { diff --git a/src/vmm/src/devices/virtio/rng/persist.rs b/src/vmm/src/devices/virtio/rng/persist.rs index 4aa9e449344..2f2519b4962 100644 --- a/src/vmm/src/devices/virtio/rng/persist.rs +++ b/src/vmm/src/devices/virtio/rng/persist.rs @@ -5,12 +5,12 @@ use serde::{Deserialize, Serialize}; +use crate::devices::virtio::TYPE_RNG; use crate::devices::virtio::persist::{PersistError as VirtioStateError, VirtioDeviceState}; use crate::devices::virtio::queue::FIRECRACKER_MAX_QUEUE_SIZE; use crate::devices::virtio::rng::{Entropy, EntropyError, RNG_NUM_QUEUES}; -use crate::devices::virtio::TYPE_RNG; -use crate::rate_limiter::persist::RateLimiterState; use crate::rate_limiter::RateLimiter; +use crate::rate_limiter::persist::RateLimiterState; use crate::snapshot::Persist; use crate::vstate::memory::GuestMemoryMmap; diff --git a/src/vmm/src/devices/virtio/vhost_user.rs b/src/vmm/src/devices/virtio/vhost_user.rs index cca506a57c2..59efcb1a653 100644 --- a/src/vmm/src/devices/virtio/vhost_user.rs +++ b/src/vmm/src/devices/virtio/vhost_user.rs @@ -373,7 +373,7 @@ impl VhostUserHandleImpl { None => { return Err(VhostUserError::VhostUserMemoryRegion( MmapError::NoMemoryRegion, - )) + )); } }; diff --git a/src/vmm/src/devices/virtio/vhost_user_metrics.rs b/src/vmm/src/devices/virtio/vhost_user_metrics.rs index 0a3c8cd3a6a..bb7f03b30a6 100644 --- a/src/vmm/src/devices/virtio/vhost_user_metrics.rs +++ b/src/vmm/src/devices/virtio/vhost_user_metrics.rs @@ -144,7 +144,7 @@ pub struct VhostUserDeviceMetrics { #[cfg(test)] pub mod tests { - use utils::time::{get_time_us, ClockType}; + use utils::time::{ClockType, get_time_us}; use super::*; use crate::logger::{IncMetric, StoreMetric}; diff --git a/src/vmm/src/devices/virtio/vsock/csm/connection.rs b/src/vmm/src/devices/virtio/vsock/csm/connection.rs index ad2340413f6..c9bd5b2c0f7 100644 --- a/src/vmm/src/devices/virtio/vsock/csm/connection.rs +++ b/src/vmm/src/devices/virtio/vsock/csm/connection.rs @@ -83,14 +83,14 @@ use std::os::unix::io::{AsRawFd, RawFd}; use std::time::{Duration, Instant}; use log::{debug, error, info, warn}; -use vm_memory::io::{ReadVolatile, WriteVolatile}; use vm_memory::GuestMemoryError; +use vm_memory::io::{ReadVolatile, WriteVolatile}; use vmm_sys_util::epoll::EventSet; use super::super::defs::uapi; use super::super::{VsockChannel, VsockEpollListener, VsockError}; use super::txbuf::TxBuf; -use super::{defs, ConnState, PendingRx, PendingRxSet, VsockCsmError}; +use super::{ConnState, PendingRx, PendingRxSet, VsockCsmError, defs}; use crate::devices::virtio::vsock::metrics::METRICS; use crate::devices::virtio::vsock::packet::{VsockPacketHeader, VsockPacketRx, VsockPacketTx}; use crate::logger::IncMetric; diff --git a/src/vmm/src/devices/virtio/vsock/csm/txbuf.rs b/src/vmm/src/devices/virtio/vsock/csm/txbuf.rs index 1742b02394f..d507491e8a0 100644 --- a/src/vmm/src/devices/virtio/vsock/csm/txbuf.rs +++ b/src/vmm/src/devices/virtio/vsock/csm/txbuf.rs @@ -8,7 +8,7 @@ use std::num::Wrapping; use vm_memory::{VolatileMemoryError, VolatileSlice, WriteVolatile}; -use super::{defs, VsockCsmError}; +use super::{VsockCsmError, defs}; use crate::utils::wrap_usize_to_u32; use crate::vstate::memory::{BitmapSlice, Bytes}; diff --git a/src/vmm/src/devices/virtio/vsock/device.rs b/src/vmm/src/devices/virtio/vsock/device.rs index eb7c144c4be..4626484ab2a 100644 --- a/src/vmm/src/devices/virtio/vsock/device.rs +++ b/src/vmm/src/devices/virtio/vsock/device.rs @@ -27,13 +27,13 @@ use vmm_sys_util::eventfd::EventFd; use super::super::super::DeviceError; use super::defs::uapi; -use super::packet::{VsockPacketRx, VsockPacketTx, VSOCK_PKT_HDR_SIZE}; -use super::{defs, VsockBackend}; +use super::packet::{VSOCK_PKT_HDR_SIZE, VsockPacketRx, VsockPacketTx}; +use super::{VsockBackend, defs}; +use crate::devices::virtio::ActivateError; use crate::devices::virtio::device::{DeviceState, IrqTrigger, IrqType, VirtioDevice}; use crate::devices::virtio::queue::Queue as VirtQueue; -use crate::devices::virtio::vsock::metrics::METRICS; use crate::devices::virtio::vsock::VsockError; -use crate::devices::virtio::ActivateError; +use crate::devices::virtio::vsock::metrics::METRICS; use crate::logger::IncMetric; use crate::utils::byte_order; use crate::vstate::memory::{Bytes, GuestMemoryMmap}; @@ -49,7 +49,7 @@ pub(crate) const VIRTIO_VSOCK_EVENT_TRANSPORT_RESET: u32 = 0; /// - VIRTIO_F_IN_ORDER: the device returns used buffers in the same order that the driver makes /// them available. pub(crate) const AVAIL_FEATURES: u64 = - 1 << uapi::VIRTIO_F_VERSION_1 as u64 | 1 << uapi::VIRTIO_F_IN_ORDER as u64; + (1 << uapi::VIRTIO_F_VERSION_1 as u64) | (1 << uapi::VIRTIO_F_IN_ORDER as u64); /// Structure representing the vsock device. #[derive(Debug)] diff --git a/src/vmm/src/devices/virtio/vsock/event_handler.rs b/src/vmm/src/devices/virtio/vsock/event_handler.rs index 59cf3fe0103..a16cff7dbfc 100755 --- a/src/vmm/src/devices/virtio/vsock/event_handler.rs +++ b/src/vmm/src/devices/virtio/vsock/event_handler.rs @@ -30,8 +30,8 @@ use event_manager::{EventOps, Events, MutEventSubscriber}; use log::{error, warn}; use vmm_sys_util::epoll::EventSet; -use super::device::{Vsock, EVQ_INDEX, RXQ_INDEX, TXQ_INDEX}; use super::VsockBackend; +use super::device::{EVQ_INDEX, RXQ_INDEX, TXQ_INDEX, Vsock}; use crate::devices::virtio::device::VirtioDevice; use crate::devices::virtio::vsock::metrics::METRICS; use crate::logger::IncMetric; diff --git a/src/vmm/src/devices/virtio/vsock/mod.rs b/src/vmm/src/devices/virtio/vsock/mod.rs index 8ffaaa8db0d..fe338e95763 100644 --- a/src/vmm/src/devices/virtio/vsock/mod.rs +++ b/src/vmm/src/devices/virtio/vsock/mod.rs @@ -25,8 +25,8 @@ use std::os::unix::io::AsRawFd; use vm_memory::GuestMemoryError; use vmm_sys_util::epoll::EventSet; -pub use self::defs::uapi::VIRTIO_ID_VSOCK as TYPE_VSOCK; pub use self::defs::VSOCK_DEV_ID; +pub use self::defs::uapi::VIRTIO_ID_VSOCK as TYPE_VSOCK; pub use self::device::Vsock; use self::packet::{VsockPacketRx, VsockPacketTx}; pub use self::unix::{VsockUnixBackend, VsockUnixBackendError}; diff --git a/src/vmm/src/devices/virtio/vsock/packet.rs b/src/vmm/src/devices/virtio/vsock/packet.rs index fb79c76292f..78130af4b12 100644 --- a/src/vmm/src/devices/virtio/vsock/packet.rs +++ b/src/vmm/src/devices/virtio/vsock/packet.rs @@ -21,7 +21,7 @@ use std::fmt::Debug; use vm_memory::volatile_memory::Error; use vm_memory::{GuestMemoryError, ReadVolatile, WriteVolatile}; -use super::{defs, VsockError}; +use super::{VsockError, defs}; use crate::devices::virtio::iovec::{IoVecBuffer, IoVecBufferMut}; use crate::devices::virtio::queue::DescriptorChain; use crate::vstate::memory::{ByteValued, GuestMemoryMmap}; @@ -45,7 +45,7 @@ use crate::vstate::memory::{ByteValued, GuestMemoryMmap}; // The mirroring struct is only used privately by `VsockPacket`, that offers getter and setter // methods, for each struct field, that will also handle the correct endianess. -#[repr(packed)] +#[repr(C, packed)] #[derive(Copy, Clone, Debug, Default)] pub struct VsockPacketHeader { // Source CID. @@ -223,7 +223,7 @@ impl VsockPacketTx { match self.buffer.read_exact_volatile_at(hdr.as_mut_slice(), 0) { Ok(()) => (), Err(Error::PartialBuffer { completed, .. }) => { - return Err(VsockError::DescChainTooShortForHeader(completed)) + return Err(VsockError::DescChainTooShortForHeader(completed)); } Err(err) => return Err(VsockError::GuestMemoryMmap(err.into())), } diff --git a/src/vmm/src/devices/virtio/vsock/persist.rs b/src/vmm/src/devices/virtio/vsock/persist.rs index dce545fd68d..fce6affae69 100644 --- a/src/vmm/src/devices/virtio/vsock/persist.rs +++ b/src/vmm/src/devices/virtio/vsock/persist.rs @@ -4,8 +4,8 @@ //! Defines state and support structures for persisting Vsock devices and backends. use std::fmt::Debug; -use std::sync::atomic::AtomicU32; use std::sync::Arc; +use std::sync::atomic::AtomicU32; use serde::{Deserialize, Serialize}; diff --git a/src/vmm/src/devices/virtio/vsock/unix/muxer.rs b/src/vmm/src/devices/virtio/vsock/unix/muxer.rs index 84273f45aba..478d5c7318d 100644 --- a/src/vmm/src/devices/virtio/vsock/unix/muxer.rs +++ b/src/vmm/src/devices/virtio/vsock/unix/muxer.rs @@ -44,7 +44,7 @@ use super::super::defs::uapi; use super::super::{VsockBackend, VsockChannel, VsockEpollListener, VsockError}; use super::muxer_killq::MuxerKillQ; use super::muxer_rxq::MuxerRxQ; -use super::{defs, MuxerConnection, VsockUnixBackendError}; +use super::{MuxerConnection, VsockUnixBackendError, defs}; use crate::devices::virtio::vsock::metrics::METRICS; use crate::devices::virtio::vsock::packet::{VsockPacketRx, VsockPacketTx}; use crate::logger::IncMetric; diff --git a/src/vmm/src/devices/virtio/vsock/unix/muxer_killq.rs b/src/vmm/src/devices/virtio/vsock/unix/muxer_killq.rs index 360dfdf49e9..dc94b38fe36 100644 --- a/src/vmm/src/devices/virtio/vsock/unix/muxer_killq.rs +++ b/src/vmm/src/devices/virtio/vsock/unix/muxer_killq.rs @@ -28,7 +28,7 @@ use std::collections::{HashMap, VecDeque}; use std::time::Instant; use super::muxer::ConnMapKey; -use super::{defs, MuxerConnection}; +use super::{MuxerConnection, defs}; /// A kill queue item, holding the connection key and the scheduled time for termination. #[derive(Debug, Clone, Copy)] diff --git a/src/vmm/src/devices/virtio/vsock/unix/muxer_rxq.rs b/src/vmm/src/devices/virtio/vsock/unix/muxer_rxq.rs index 77f7670af7d..1b888dfa453 100644 --- a/src/vmm/src/devices/virtio/vsock/unix/muxer_rxq.rs +++ b/src/vmm/src/devices/virtio/vsock/unix/muxer_rxq.rs @@ -19,7 +19,7 @@ use std::collections::{HashMap, VecDeque}; use super::super::VsockChannel; use super::muxer::{ConnMapKey, MuxerRx}; -use super::{defs, MuxerConnection}; +use super::{MuxerConnection, defs}; /// The muxer RX queue. #[derive(Debug)] diff --git a/src/vmm/src/dumbo/mod.rs b/src/vmm/src/dumbo/mod.rs index e1286c74e93..d39b06d0411 100644 --- a/src/vmm/src/dumbo/mod.rs +++ b/src/vmm/src/dumbo/mod.rs @@ -8,12 +8,12 @@ pub mod tcp; use std::ops::Index; -pub use crate::dumbo::pdu::arp::{EthIPv4ArpFrame, ETH_IPV4_FRAME_LEN}; +pub use crate::dumbo::pdu::arp::{ETH_IPV4_FRAME_LEN, EthIPv4ArpFrame}; pub use crate::dumbo::pdu::ethernet::{ - EthernetFrame, ETHERTYPE_ARP, ETHERTYPE_IPV4, PAYLOAD_OFFSET as ETHERNET_PAYLOAD_OFFSET, + ETHERTYPE_ARP, ETHERTYPE_IPV4, EthernetFrame, PAYLOAD_OFFSET as ETHERNET_PAYLOAD_OFFSET, }; pub use crate::dumbo::pdu::ipv4::{IPv4Packet, PROTOCOL_TCP, PROTOCOL_UDP}; -pub use crate::dumbo::pdu::udp::{UdpDatagram, UDP_HEADER_SIZE}; +pub use crate::dumbo::pdu::udp::{UDP_HEADER_SIZE, UdpDatagram}; use crate::utils::net::mac::MacAddr; /// Represents a generalization of a borrowed `[u8]` slice. diff --git a/src/vmm/src/dumbo/pdu/arp.rs b/src/vmm/src/dumbo/pdu/arp.rs index 54286d281b7..7beef7e4d37 100644 --- a/src/vmm/src/dumbo/pdu/arp.rs +++ b/src/vmm/src/dumbo/pdu/arp.rs @@ -14,7 +14,7 @@ use std::result::Result; use super::bytes::{InnerBytes, NetworkBytes, NetworkBytesMut}; use super::ethernet::{self, ETHERTYPE_IPV4}; -use crate::utils::net::mac::{MacAddr, MAC_ADDR_LEN}; +use crate::utils::net::mac::{MAC_ADDR_LEN, MacAddr}; /// ARP Request operation pub const OPER_REQUEST: u16 = 0x0001; diff --git a/src/vmm/src/dumbo/pdu/ethernet.rs b/src/vmm/src/dumbo/pdu/ethernet.rs index bec283bbd56..6b7112e36ea 100644 --- a/src/vmm/src/dumbo/pdu/ethernet.rs +++ b/src/vmm/src/dumbo/pdu/ethernet.rs @@ -7,8 +7,8 @@ use std::fmt::Debug; use std::result::Result; -use super::bytes::{InnerBytes, NetworkBytes, NetworkBytesMut}; use super::Incomplete; +use super::bytes::{InnerBytes, NetworkBytes, NetworkBytesMut}; use crate::dumbo::MacAddr; const DST_MAC_OFFSET: usize = 0; diff --git a/src/vmm/src/dumbo/pdu/ipv4.rs b/src/vmm/src/dumbo/pdu/ipv4.rs index f3da2b7b298..fab5b88eb49 100644 --- a/src/vmm/src/dumbo/pdu/ipv4.rs +++ b/src/vmm/src/dumbo/pdu/ipv4.rs @@ -13,7 +13,7 @@ use std::net::Ipv4Addr; use std::result::Result; use crate::dumbo::pdu::bytes::{InnerBytes, NetworkBytes, NetworkBytesMut}; -use crate::dumbo::pdu::{ethernet, Incomplete}; +use crate::dumbo::pdu::{Incomplete, ethernet}; const VERSION_AND_IHL_OFFSET: usize = 0; const DSCP_AND_ECN_OFFSET: usize = 1; diff --git a/src/vmm/src/dumbo/pdu/tcp.rs b/src/vmm/src/dumbo/pdu/tcp.rs index d5eade0c644..2ac01227142 100644 --- a/src/vmm/src/dumbo/pdu/tcp.rs +++ b/src/vmm/src/dumbo/pdu/tcp.rs @@ -15,10 +15,10 @@ use std::result::Result; use bitflags::bitflags; -use super::bytes::{InnerBytes, NetworkBytes, NetworkBytesMut}; use super::Incomplete; -use crate::dumbo::pdu::ChecksumProto; +use super::bytes::{InnerBytes, NetworkBytes, NetworkBytesMut}; use crate::dumbo::ByteBuffer; +use crate::dumbo::pdu::ChecksumProto; const SOURCE_PORT_OFFSET: usize = 0; const DESTINATION_PORT_OFFSET: usize = 2; diff --git a/src/vmm/src/dumbo/tcp/connection.rs b/src/vmm/src/dumbo/tcp/connection.rs index e17be1063af..016a44477a7 100644 --- a/src/vmm/src/dumbo/tcp/connection.rs +++ b/src/vmm/src/dumbo/tcp/connection.rs @@ -12,13 +12,13 @@ use std::num::{NonZeroU16, NonZeroU64, NonZeroUsize, Wrapping}; use bitflags::bitflags; use vmm_sys_util::rand::xor_pseudo_rng_u32; +use crate::dumbo::ByteBuffer; +use crate::dumbo::pdu::Incomplete; use crate::dumbo::pdu::bytes::NetworkBytes; use crate::dumbo::pdu::tcp::{Flags as TcpFlags, TcpError as TcpSegmentError, TcpSegment}; -use crate::dumbo::pdu::Incomplete; use crate::dumbo::tcp::{ - seq_after, seq_at_or_after, NextSegmentStatus, RstConfig, MAX_WINDOW_SIZE, MSS_DEFAULT, + MAX_WINDOW_SIZE, MSS_DEFAULT, NextSegmentStatus, RstConfig, seq_after, seq_at_or_after, }; -use crate::dumbo::ByteBuffer; bitflags! { // We use a set of flags, instead of a state machine, to represent the connection status. Some diff --git a/src/vmm/src/dumbo/tcp/endpoint.rs b/src/vmm/src/dumbo/tcp/endpoint.rs index 15fb10e10f9..2fbb8466564 100644 --- a/src/vmm/src/dumbo/tcp/endpoint.rs +++ b/src/vmm/src/dumbo/tcp/endpoint.rs @@ -17,11 +17,11 @@ use std::num::{NonZeroU16, NonZeroU64, Wrapping}; use micro_http::{Body, Request, RequestError, Response, StatusCode, Version}; use utils::time::timestamp_cycles; +use crate::dumbo::pdu::Incomplete; use crate::dumbo::pdu::bytes::NetworkBytes; use crate::dumbo::pdu::tcp::TcpSegment; -use crate::dumbo::pdu::Incomplete; use crate::dumbo::tcp::connection::{Connection, PassiveOpenError, RecvStatusFlags}; -use crate::dumbo::tcp::{seq_after, NextSegmentStatus, MAX_WINDOW_SIZE}; +use crate::dumbo::tcp::{MAX_WINDOW_SIZE, NextSegmentStatus, seq_after}; use crate::logger::{IncMetric, METRICS}; // TODO: These are currently expressed in cycles. Normally, they would be the equivalent of a @@ -629,9 +629,11 @@ mod tests { Expect: 100-continue\r\n\ Transfer-Encoding: identity; q=0\r\n\ Content-Length: 26\r\n\r\nthis is not\n\r\na json \nbody"; - assert!(parse_request_bytes(request_bytes, mock_callback) - .body() - .is_none()); + assert!( + parse_request_bytes(request_bytes, mock_callback) + .body() + .is_none() + ); let request_bytes = b"PATCH http://localhost/home HTTP/1.1\r\n\ Expect: 100-continue\r\n\ diff --git a/src/vmm/src/gdb/arch/aarch64.rs b/src/vmm/src/gdb/arch/aarch64.rs index eec7cfa9df8..efd5ad8ae01 100644 --- a/src/vmm/src/gdb/arch/aarch64.rs +++ b/src/vmm/src/gdb/arch/aarch64.rs @@ -5,18 +5,18 @@ use std::mem::offset_of; use gdbstub_arch::aarch64::reg::AArch64CoreRegs as CoreRegs; use kvm_bindings::{ - kvm_guest_debug, kvm_regs, user_pt_regs, KVM_GUESTDBG_ENABLE, KVM_GUESTDBG_SINGLESTEP, - KVM_GUESTDBG_USE_HW, KVM_GUESTDBG_USE_SW_BP, KVM_REG_ARM64, KVM_REG_ARM_CORE, KVM_REG_SIZE_U64, + KVM_GUESTDBG_ENABLE, KVM_GUESTDBG_SINGLESTEP, KVM_GUESTDBG_USE_HW, KVM_GUESTDBG_USE_SW_BP, + KVM_REG_ARM_CORE, KVM_REG_ARM64, KVM_REG_SIZE_U64, kvm_guest_debug, kvm_regs, user_pt_regs, }; use kvm_ioctls::VcpuFd; use vm_memory::{Bytes, GuestAddress}; +use crate::Vmm; use crate::arch::aarch64::regs::{ - arm64_core_reg_id, Aarch64RegisterVec, ID_AA64MMFR0_EL1, TCR_EL1, TTBR1_EL1, + Aarch64RegisterVec, ID_AA64MMFR0_EL1, TCR_EL1, TTBR1_EL1, arm64_core_reg_id, }; use crate::arch::aarch64::vcpu::get_registers; use crate::gdb::target::GdbTargetError; -use crate::Vmm; /// Configures the number of bytes required for a software breakpoint. /// diff --git a/src/vmm/src/gdb/arch/x86.rs b/src/vmm/src/gdb/arch/x86.rs index 16d6789b100..f8df58bedef 100644 --- a/src/vmm/src/gdb/arch/x86.rs +++ b/src/vmm/src/gdb/arch/x86.rs @@ -6,9 +6,9 @@ use kvm_bindings::*; use kvm_ioctls::VcpuFd; use vm_memory::GuestAddress; +use crate::Vmm; use crate::gdb::target::GdbTargetError; use crate::logger::error; -use crate::Vmm; /// Sets the 9th (Global Exact Breakpoint enable) and the 10th (always 1) bits for the DR7 debug /// control register diff --git a/src/vmm/src/gdb/event_loop.rs b/src/vmm/src/gdb/event_loop.rs index ae4de0e64d7..35fe2039f77 100644 --- a/src/vmm/src/gdb/event_loop.rs +++ b/src/vmm/src/gdb/event_loop.rs @@ -14,9 +14,9 @@ use gdbstub::target::Target; use kvm_ioctls::VcpuFd; use vm_memory::GuestAddress; -use super::target::{vcpuid_to_tid, FirecrackerTarget, GdbTargetError}; -use crate::logger::{error, trace}; +use super::target::{FirecrackerTarget, GdbTargetError, vcpuid_to_tid}; use crate::Vmm; +use crate::logger::{error, trace}; /// Starts the GDB event loop which acts as a proxy between the Vcpus and GDB pub fn event_loop( diff --git a/src/vmm/src/gdb/mod.rs b/src/vmm/src/gdb/mod.rs index 9d209541425..23d9965b1aa 100644 --- a/src/vmm/src/gdb/mod.rs +++ b/src/vmm/src/gdb/mod.rs @@ -19,8 +19,8 @@ use kvm_ioctls::VcpuFd; use target::GdbTargetError; use vm_memory::GuestAddress; -use crate::logger::trace; use crate::Vmm; +use crate::logger::trace; /// Kickstarts the GDB debugging process, it takes in the VMM object, a slice of /// the paused Vcpu's, the GDB event queue which is used as a mechanism for the Vcpu's to notify diff --git a/src/vmm/src/gdb/target.rs b/src/vmm/src/gdb/target.rs index 6f3f2593c15..c9d71e1f14a 100644 --- a/src/vmm/src/gdb/target.rs +++ b/src/vmm/src/gdb/target.rs @@ -9,31 +9,31 @@ use arrayvec::ArrayVec; use gdbstub::arch::Arch; use gdbstub::common::{Signal, Tid}; use gdbstub::stub::{BaseStopReason, MultiThreadStopReason}; +use gdbstub::target::ext::base::BaseOps; use gdbstub::target::ext::base::multithread::{ MultiThreadBase, MultiThreadResume, MultiThreadResumeOps, MultiThreadSingleStep, MultiThreadSingleStepOps, }; -use gdbstub::target::ext::base::BaseOps; use gdbstub::target::ext::breakpoints::{ Breakpoints, BreakpointsOps, HwBreakpoint, HwBreakpointOps, SwBreakpoint, SwBreakpointOps, }; use gdbstub::target::ext::thread_extra_info::{ThreadExtraInfo, ThreadExtraInfoOps}; use gdbstub::target::{Target, TargetError, TargetResult}; #[cfg(target_arch = "aarch64")] -use gdbstub_arch::aarch64::reg::AArch64CoreRegs as CoreRegs; -#[cfg(target_arch = "aarch64")] use gdbstub_arch::aarch64::AArch64 as GdbArch; -#[cfg(target_arch = "x86_64")] -use gdbstub_arch::x86::reg::X86_64CoreRegs as CoreRegs; +#[cfg(target_arch = "aarch64")] +use gdbstub_arch::aarch64::reg::AArch64CoreRegs as CoreRegs; #[cfg(target_arch = "x86_64")] use gdbstub_arch::x86::X86_64_SSE as GdbArch; +#[cfg(target_arch = "x86_64")] +use gdbstub_arch::x86::reg::X86_64CoreRegs as CoreRegs; use kvm_ioctls::VcpuFd; use vm_memory::{Bytes, GuestAddress, GuestMemoryError}; use super::arch; +use crate::arch::GUEST_PAGE_SIZE; #[cfg(target_arch = "aarch64")] use crate::arch::aarch64::vcpu::VcpuError as AarchVcpuError; -use crate::arch::GUEST_PAGE_SIZE; use crate::logger::{error, info}; use crate::utils::u64_to_usize; use crate::vstate::vcpu::VcpuSendEventError; diff --git a/src/vmm/src/io_uring/gen.rs b/src/vmm/src/io_uring/gen.rs deleted file mode 100644 index c18a3aa36ec..00000000000 --- a/src/vmm/src/io_uring/gen.rs +++ /dev/null @@ -1,1712 +0,0 @@ -// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -// automatically generated by tools/bindgen.sh - -#![allow( - non_camel_case_types, - non_upper_case_globals, - dead_code, - non_snake_case, - clippy::ptr_as_ptr, - clippy::undocumented_unsafe_blocks, - missing_debug_implementations, - clippy::tests_outside_test_module -)] - -#[repr(C)] -#[derive(Default)] -pub struct __IncompleteArrayField(::std::marker::PhantomData, [T; 0]); -impl __IncompleteArrayField { - #[inline] - pub const fn new() -> Self { - __IncompleteArrayField(::std::marker::PhantomData, []) - } - #[inline] - pub fn as_ptr(&self) -> *const T { - self as *const _ as *const T - } - #[inline] - pub fn as_mut_ptr(&mut self) -> *mut T { - self as *mut _ as *mut T - } - #[inline] - pub unsafe fn as_slice(&self, len: usize) -> &[T] { - ::std::slice::from_raw_parts(self.as_ptr(), len) - } - #[inline] - pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { - ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) - } -} -impl ::std::fmt::Debug for __IncompleteArrayField { - fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - fmt.write_str("__IncompleteArrayField") - } -} -pub const IORING_SETUP_IOPOLL: u32 = 1; -pub const IORING_SETUP_SQPOLL: u32 = 2; -pub const IORING_SETUP_SQ_AFF: u32 = 4; -pub const IORING_SETUP_CQSIZE: u32 = 8; -pub const IORING_SETUP_CLAMP: u32 = 16; -pub const IORING_SETUP_ATTACH_WQ: u32 = 32; -pub const IORING_SETUP_R_DISABLED: u32 = 64; -pub const IORING_FSYNC_DATASYNC: u32 = 1; -pub const IORING_TIMEOUT_ABS: u32 = 1; -pub const IORING_TIMEOUT_UPDATE: u32 = 2; -pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; -pub const IORING_TIMEOUT_REALTIME: u32 = 8; -pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; -pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; -pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; -pub const IORING_POLL_ADD_MULTI: u32 = 1; -pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; -pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; -pub const IORING_CQE_F_BUFFER: u32 = 1; -pub const IORING_CQE_F_MORE: u32 = 2; -pub const IORING_OFF_SQ_RING: u32 = 0; -pub const IORING_OFF_CQ_RING: u32 = 134217728; -pub const IORING_OFF_SQES: u32 = 268435456; -pub const IORING_SQ_NEED_WAKEUP: u32 = 1; -pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; -pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; -pub const IORING_ENTER_GETEVENTS: u32 = 1; -pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; -pub const IORING_ENTER_SQ_WAIT: u32 = 4; -pub const IORING_ENTER_EXT_ARG: u32 = 8; -pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; -pub const IORING_FEAT_NODROP: u32 = 2; -pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; -pub const IORING_FEAT_RW_CUR_POS: u32 = 8; -pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; -pub const IORING_FEAT_FAST_POLL: u32 = 32; -pub const IORING_FEAT_POLL_32BITS: u32 = 64; -pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; -pub const IORING_FEAT_EXT_ARG: u32 = 256; -pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; -pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; -pub const IORING_REGISTER_FILES_SKIP: i32 = -2; -pub const IO_URING_OP_SUPPORTED: u32 = 1; -pub type __u8 = ::std::os::raw::c_uchar; -pub type __u16 = ::std::os::raw::c_ushort; -pub type __s32 = ::std::os::raw::c_int; -pub type __u32 = ::std::os::raw::c_uint; -pub type __u64 = ::std::os::raw::c_ulonglong; -pub type __kernel_rwf_t = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct io_uring_sqe { - pub opcode: __u8, - pub flags: __u8, - pub ioprio: __u16, - pub fd: __s32, - pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, - pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, - pub len: __u32, - pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, - pub user_data: __u64, - pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, - pub personality: __u16, - pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, - pub __pad2: [__u64; 2usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_1 { - pub off: __u64, - pub addr2: __u64, -} -#[test] -fn bindgen_test_layout_io_uring_sqe__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(io_uring_sqe__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_uring_sqe__bindgen_ty_1)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).off) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_1), - "::", - stringify!(off) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr2) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_1), - "::", - stringify!(addr2) - ) - ); -} -impl Default for io_uring_sqe__bindgen_ty_1 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_2 { - pub addr: __u64, - pub splice_off_in: __u64, -} -#[test] -fn bindgen_test_layout_io_uring_sqe__bindgen_ty_2() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(io_uring_sqe__bindgen_ty_2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_uring_sqe__bindgen_ty_2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).addr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_2), - "::", - stringify!(addr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).splice_off_in) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_2), - "::", - stringify!(splice_off_in) - ) - ); -} -impl Default for io_uring_sqe__bindgen_ty_2 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_3 { - pub rw_flags: __kernel_rwf_t, - pub fsync_flags: __u32, - pub poll_events: __u16, - pub poll32_events: __u32, - pub sync_range_flags: __u32, - pub msg_flags: __u32, - pub timeout_flags: __u32, - pub accept_flags: __u32, - pub cancel_flags: __u32, - pub open_flags: __u32, - pub statx_flags: __u32, - pub fadvise_advice: __u32, - pub splice_flags: __u32, - pub rename_flags: __u32, - pub unlink_flags: __u32, - pub hardlink_flags: __u32, -} -#[test] -fn bindgen_test_layout_io_uring_sqe__bindgen_ty_3() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(io_uring_sqe__bindgen_ty_3)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(io_uring_sqe__bindgen_ty_3)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rw_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(rw_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fsync_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(fsync_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).poll_events) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(poll_events) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).poll32_events) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(poll32_events) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sync_range_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(sync_range_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).msg_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(msg_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).timeout_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(timeout_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).accept_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(accept_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cancel_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(cancel_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).open_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(open_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).statx_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(statx_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fadvise_advice) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(fadvise_advice) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).splice_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(splice_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).rename_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(rename_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).unlink_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(unlink_flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).hardlink_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_3), - "::", - stringify!(hardlink_flags) - ) - ); -} -impl Default for io_uring_sqe__bindgen_ty_3 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[repr(C, packed)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_4 { - pub buf_index: __u16, - pub buf_group: __u16, -} -#[test] -fn bindgen_test_layout_io_uring_sqe__bindgen_ty_4() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 2usize, - concat!("Size of: ", stringify!(io_uring_sqe__bindgen_ty_4)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!("Alignment of ", stringify!(io_uring_sqe__bindgen_ty_4)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).buf_index) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_4), - "::", - stringify!(buf_index) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).buf_group) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_4), - "::", - stringify!(buf_group) - ) - ); -} -impl Default for io_uring_sqe__bindgen_ty_4 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_sqe__bindgen_ty_5 { - pub splice_fd_in: __s32, - pub file_index: __u32, -} -#[test] -fn bindgen_test_layout_io_uring_sqe__bindgen_ty_5() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 4usize, - concat!("Size of: ", stringify!(io_uring_sqe__bindgen_ty_5)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(io_uring_sqe__bindgen_ty_5)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).splice_fd_in) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_5), - "::", - stringify!(splice_fd_in) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).file_index) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe__bindgen_ty_5), - "::", - stringify!(file_index) - ) - ); -} -impl Default for io_uring_sqe__bindgen_ty_5 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[test] -fn bindgen_test_layout_io_uring_sqe() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 64usize, - concat!("Size of: ", stringify!(io_uring_sqe)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_uring_sqe)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).opcode) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(opcode) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ioprio) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(ioprio) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(fd) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).len) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).user_data) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(user_data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).personality) as usize - ptr as usize }, - 42usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(personality) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).__pad2) as usize - ptr as usize }, - 48usize, - concat!( - "Offset of field: ", - stringify!(io_uring_sqe), - "::", - stringify!(__pad2) - ) - ); -} -impl Default for io_uring_sqe { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = 0; -pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = 1; -pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = 2; -pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = 3; -pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = 4; -pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = 5; -pub type _bindgen_ty_1 = ::std::os::raw::c_uint; -pub const IORING_OP_NOP: _bindgen_ty_2 = 0; -pub const IORING_OP_READV: _bindgen_ty_2 = 1; -pub const IORING_OP_WRITEV: _bindgen_ty_2 = 2; -pub const IORING_OP_FSYNC: _bindgen_ty_2 = 3; -pub const IORING_OP_READ_FIXED: _bindgen_ty_2 = 4; -pub const IORING_OP_WRITE_FIXED: _bindgen_ty_2 = 5; -pub const IORING_OP_POLL_ADD: _bindgen_ty_2 = 6; -pub const IORING_OP_POLL_REMOVE: _bindgen_ty_2 = 7; -pub const IORING_OP_SYNC_FILE_RANGE: _bindgen_ty_2 = 8; -pub const IORING_OP_SENDMSG: _bindgen_ty_2 = 9; -pub const IORING_OP_RECVMSG: _bindgen_ty_2 = 10; -pub const IORING_OP_TIMEOUT: _bindgen_ty_2 = 11; -pub const IORING_OP_TIMEOUT_REMOVE: _bindgen_ty_2 = 12; -pub const IORING_OP_ACCEPT: _bindgen_ty_2 = 13; -pub const IORING_OP_ASYNC_CANCEL: _bindgen_ty_2 = 14; -pub const IORING_OP_LINK_TIMEOUT: _bindgen_ty_2 = 15; -pub const IORING_OP_CONNECT: _bindgen_ty_2 = 16; -pub const IORING_OP_FALLOCATE: _bindgen_ty_2 = 17; -pub const IORING_OP_OPENAT: _bindgen_ty_2 = 18; -pub const IORING_OP_CLOSE: _bindgen_ty_2 = 19; -pub const IORING_OP_FILES_UPDATE: _bindgen_ty_2 = 20; -pub const IORING_OP_STATX: _bindgen_ty_2 = 21; -pub const IORING_OP_READ: _bindgen_ty_2 = 22; -pub const IORING_OP_WRITE: _bindgen_ty_2 = 23; -pub const IORING_OP_FADVISE: _bindgen_ty_2 = 24; -pub const IORING_OP_MADVISE: _bindgen_ty_2 = 25; -pub const IORING_OP_SEND: _bindgen_ty_2 = 26; -pub const IORING_OP_RECV: _bindgen_ty_2 = 27; -pub const IORING_OP_OPENAT2: _bindgen_ty_2 = 28; -pub const IORING_OP_EPOLL_CTL: _bindgen_ty_2 = 29; -pub const IORING_OP_SPLICE: _bindgen_ty_2 = 30; -pub const IORING_OP_PROVIDE_BUFFERS: _bindgen_ty_2 = 31; -pub const IORING_OP_REMOVE_BUFFERS: _bindgen_ty_2 = 32; -pub const IORING_OP_TEE: _bindgen_ty_2 = 33; -pub const IORING_OP_SHUTDOWN: _bindgen_ty_2 = 34; -pub const IORING_OP_RENAMEAT: _bindgen_ty_2 = 35; -pub const IORING_OP_UNLINKAT: _bindgen_ty_2 = 36; -pub const IORING_OP_LAST: _bindgen_ty_2 = 37; -pub type _bindgen_ty_2 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct io_uring_cqe { - pub user_data: __u64, - pub res: __s32, - pub flags: __u32, -} -#[test] -fn bindgen_test_layout_io_uring_cqe() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(io_uring_cqe)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_uring_cqe)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).user_data) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_cqe), - "::", - stringify!(user_data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).res) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_uring_cqe), - "::", - stringify!(res) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(io_uring_cqe), - "::", - stringify!(flags) - ) - ); -} -pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = 16; -pub type _bindgen_ty_3 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct io_sqring_offsets { - pub head: __u32, - pub tail: __u32, - pub ring_mask: __u32, - pub ring_entries: __u32, - pub flags: __u32, - pub dropped: __u32, - pub array: __u32, - pub resv1: __u32, - pub resv2: __u64, -} -#[test] -fn bindgen_test_layout_io_sqring_offsets() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(io_sqring_offsets)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_sqring_offsets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).head) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(head) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tail) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(tail) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ring_mask) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(ring_mask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ring_entries) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(ring_entries) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).dropped) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(dropped) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).array) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(array) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv1) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(resv1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(io_sqring_offsets), - "::", - stringify!(resv2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct io_cqring_offsets { - pub head: __u32, - pub tail: __u32, - pub ring_mask: __u32, - pub ring_entries: __u32, - pub overflow: __u32, - pub cqes: __u32, - pub flags: __u32, - pub resv1: __u32, - pub resv2: __u64, -} -#[test] -fn bindgen_test_layout_io_cqring_offsets() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 40usize, - concat!("Size of: ", stringify!(io_cqring_offsets)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_cqring_offsets)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).head) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(head) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tail) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(tail) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ring_mask) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(ring_mask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ring_entries) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(ring_entries) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).overflow) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(overflow) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cqes) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(cqes) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv1) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(resv1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, - 32usize, - concat!( - "Offset of field: ", - stringify!(io_cqring_offsets), - "::", - stringify!(resv2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct io_uring_params { - pub sq_entries: __u32, - pub cq_entries: __u32, - pub flags: __u32, - pub sq_thread_cpu: __u32, - pub sq_thread_idle: __u32, - pub features: __u32, - pub wq_fd: __u32, - pub resv: [__u32; 3usize], - pub sq_off: io_sqring_offsets, - pub cq_off: io_cqring_offsets, -} -#[test] -fn bindgen_test_layout_io_uring_params() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 120usize, - concat!("Size of: ", stringify!(io_uring_params)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_uring_params)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sq_entries) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(sq_entries) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cq_entries) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(cq_entries) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sq_thread_cpu) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(sq_thread_cpu) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sq_thread_idle) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(sq_thread_idle) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).features) as usize - ptr as usize }, - 20usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(features) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).wq_fd) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(wq_fd) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(resv) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sq_off) as usize - ptr as usize }, - 40usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(sq_off) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).cq_off) as usize - ptr as usize }, - 80usize, - concat!( - "Offset of field: ", - stringify!(io_uring_params), - "::", - stringify!(cq_off) - ) - ); -} -pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = 0; -pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = 1; -pub const IORING_REGISTER_FILES: _bindgen_ty_4 = 2; -pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = 3; -pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = 4; -pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = 5; -pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = 6; -pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = 7; -pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = 8; -pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = 9; -pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = 10; -pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = 11; -pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = 12; -pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = 13; -pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = 14; -pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = 15; -pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = 16; -pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = 17; -pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = 18; -pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = 19; -pub const IORING_REGISTER_LAST: _bindgen_ty_4 = 20; -pub type _bindgen_ty_4 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct io_uring_files_update { - pub offset: __u32, - pub resv: __u32, - pub fds: __u64, -} -#[test] -fn bindgen_test_layout_io_uring_files_update() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(io_uring_files_update)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_uring_files_update)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_files_update), - "::", - stringify!(offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_files_update), - "::", - stringify!(resv) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).fds) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_uring_files_update), - "::", - stringify!(fds) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct io_uring_rsrc_register { - pub nr: __u32, - pub resv: __u32, - pub resv2: __u64, - pub data: __u64, - pub tags: __u64, -} -#[test] -fn bindgen_test_layout_io_uring_rsrc_register() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(io_uring_rsrc_register)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_uring_rsrc_register)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_register), - "::", - stringify!(nr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_register), - "::", - stringify!(resv) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_register), - "::", - stringify!(resv2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_register), - "::", - stringify!(data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tags) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_register), - "::", - stringify!(tags) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct io_uring_rsrc_update { - pub offset: __u32, - pub resv: __u32, - pub data: __u64, -} -#[test] -fn bindgen_test_layout_io_uring_rsrc_update() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(io_uring_rsrc_update)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_uring_rsrc_update)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_update), - "::", - stringify!(offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_update), - "::", - stringify!(resv) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_update), - "::", - stringify!(data) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct io_uring_rsrc_update2 { - pub offset: __u32, - pub resv: __u32, - pub data: __u64, - pub tags: __u64, - pub nr: __u32, - pub resv2: __u32, -} -#[test] -fn bindgen_test_layout_io_uring_rsrc_update2() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 32usize, - concat!("Size of: ", stringify!(io_uring_rsrc_update2)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_uring_rsrc_update2)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_update2), - "::", - stringify!(offset) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_update2), - "::", - stringify!(resv) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_update2), - "::", - stringify!(data) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).tags) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_update2), - "::", - stringify!(tags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).nr) as usize - ptr as usize }, - 24usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_update2), - "::", - stringify!(nr) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, - 28usize, - concat!( - "Offset of field: ", - stringify!(io_uring_rsrc_update2), - "::", - stringify!(resv2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct io_uring_probe_op { - pub op: __u8, - pub resv: __u8, - pub flags: __u16, - pub resv2: __u32, -} -#[test] -fn bindgen_test_layout_io_uring_probe_op() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(io_uring_probe_op)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(io_uring_probe_op)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).op) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe_op), - "::", - stringify!(op) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe_op), - "::", - stringify!(resv) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).flags) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe_op), - "::", - stringify!(flags) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe_op), - "::", - stringify!(resv2) - ) - ); -} -#[repr(C)] -#[derive(Debug, Default)] -pub struct io_uring_probe { - pub last_op: __u8, - pub ops_len: __u8, - pub resv: __u16, - pub resv2: [__u32; 3usize], - pub ops: __IncompleteArrayField, -} -#[test] -fn bindgen_test_layout_io_uring_probe() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(io_uring_probe)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(io_uring_probe)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).last_op) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe), - "::", - stringify!(last_op) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ops_len) as usize - ptr as usize }, - 1usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe), - "::", - stringify!(ops_len) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, - 2usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe), - "::", - stringify!(resv) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe), - "::", - stringify!(resv2) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ops) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(io_uring_probe), - "::", - stringify!(ops) - ) - ); -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct io_uring_restriction { - pub opcode: __u16, - pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, - pub resv: __u8, - pub resv2: [__u32; 3usize], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union io_uring_restriction__bindgen_ty_1 { - pub register_op: __u8, - pub sqe_op: __u8, - pub sqe_flags: __u8, -} -#[test] -fn bindgen_test_layout_io_uring_restriction__bindgen_ty_1() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 1usize, - concat!("Size of: ", stringify!(io_uring_restriction__bindgen_ty_1)) - ); - assert_eq!( - ::std::mem::align_of::(), - 1usize, - concat!( - "Alignment of ", - stringify!(io_uring_restriction__bindgen_ty_1) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).register_op) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction__bindgen_ty_1), - "::", - stringify!(register_op) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sqe_op) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction__bindgen_ty_1), - "::", - stringify!(sqe_op) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sqe_flags) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction__bindgen_ty_1), - "::", - stringify!(sqe_flags) - ) - ); -} -impl Default for io_uring_restriction__bindgen_ty_1 { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -#[test] -fn bindgen_test_layout_io_uring_restriction() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(io_uring_restriction)) - ); - assert_eq!( - ::std::mem::align_of::(), - 4usize, - concat!("Alignment of ", stringify!(io_uring_restriction)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).opcode) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction), - "::", - stringify!(opcode) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv) as usize - ptr as usize }, - 3usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction), - "::", - stringify!(resv) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).resv2) as usize - ptr as usize }, - 4usize, - concat!( - "Offset of field: ", - stringify!(io_uring_restriction), - "::", - stringify!(resv2) - ) - ); -} -impl Default for io_uring_restriction { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } -} -pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = 0; -pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = 1; -pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = 2; -pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = 3; -pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = 4; -pub type _bindgen_ty_6 = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct io_uring_getevents_arg { - pub sigmask: __u64, - pub sigmask_sz: __u32, - pub pad: __u32, - pub ts: __u64, -} -#[test] -fn bindgen_test_layout_io_uring_getevents_arg() { - const UNINIT: ::std::mem::MaybeUninit = - ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 24usize, - concat!("Size of: ", stringify!(io_uring_getevents_arg)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(io_uring_getevents_arg)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigmask) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(io_uring_getevents_arg), - "::", - stringify!(sigmask) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).sigmask_sz) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(io_uring_getevents_arg), - "::", - stringify!(sigmask_sz) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).pad) as usize - ptr as usize }, - 12usize, - concat!( - "Offset of field: ", - stringify!(io_uring_getevents_arg), - "::", - stringify!(pad) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).ts) as usize - ptr as usize }, - 16usize, - concat!( - "Offset of field: ", - stringify!(io_uring_getevents_arg), - "::", - stringify!(ts) - ) - ); -} diff --git a/src/vmm/src/io_uring/generated.rs b/src/vmm/src/io_uring/generated.rs new file mode 100644 index 00000000000..445f4a98237 --- /dev/null +++ b/src/vmm/src/io_uring/generated.rs @@ -0,0 +1,728 @@ +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// automatically generated by tools/bindgen.sh + +#![allow( + non_camel_case_types, + non_upper_case_globals, + dead_code, + non_snake_case, + clippy::ptr_as_ptr, + clippy::undocumented_unsafe_blocks, + missing_debug_implementations, + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn +)] + +#[repr(C)] +#[derive(Default)] +pub struct __IncompleteArrayField(::std::marker::PhantomData, [T; 0]); +impl __IncompleteArrayField { + #[inline] + pub const fn new() -> Self { + __IncompleteArrayField(::std::marker::PhantomData, []) + } + #[inline] + pub fn as_ptr(&self) -> *const T { + self as *const _ as *const T + } + #[inline] + pub fn as_mut_ptr(&mut self) -> *mut T { + self as *mut _ as *mut T + } + #[inline] + pub unsafe fn as_slice(&self, len: usize) -> &[T] { + ::std::slice::from_raw_parts(self.as_ptr(), len) + } + #[inline] + pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] { + ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) + } +} +impl ::std::fmt::Debug for __IncompleteArrayField { + fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + fmt.write_str("__IncompleteArrayField") + } +} +pub const IORING_SETUP_IOPOLL: u32 = 1; +pub const IORING_SETUP_SQPOLL: u32 = 2; +pub const IORING_SETUP_SQ_AFF: u32 = 4; +pub const IORING_SETUP_CQSIZE: u32 = 8; +pub const IORING_SETUP_CLAMP: u32 = 16; +pub const IORING_SETUP_ATTACH_WQ: u32 = 32; +pub const IORING_SETUP_R_DISABLED: u32 = 64; +pub const IORING_FSYNC_DATASYNC: u32 = 1; +pub const IORING_TIMEOUT_ABS: u32 = 1; +pub const IORING_TIMEOUT_UPDATE: u32 = 2; +pub const IORING_TIMEOUT_BOOTTIME: u32 = 4; +pub const IORING_TIMEOUT_REALTIME: u32 = 8; +pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16; +pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12; +pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18; +pub const IORING_POLL_ADD_MULTI: u32 = 1; +pub const IORING_POLL_UPDATE_EVENTS: u32 = 2; +pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4; +pub const IORING_CQE_F_BUFFER: u32 = 1; +pub const IORING_CQE_F_MORE: u32 = 2; +pub const IORING_OFF_SQ_RING: u32 = 0; +pub const IORING_OFF_CQ_RING: u32 = 134217728; +pub const IORING_OFF_SQES: u32 = 268435456; +pub const IORING_SQ_NEED_WAKEUP: u32 = 1; +pub const IORING_SQ_CQ_OVERFLOW: u32 = 2; +pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1; +pub const IORING_ENTER_GETEVENTS: u32 = 1; +pub const IORING_ENTER_SQ_WAKEUP: u32 = 2; +pub const IORING_ENTER_SQ_WAIT: u32 = 4; +pub const IORING_ENTER_EXT_ARG: u32 = 8; +pub const IORING_FEAT_SINGLE_MMAP: u32 = 1; +pub const IORING_FEAT_NODROP: u32 = 2; +pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4; +pub const IORING_FEAT_RW_CUR_POS: u32 = 8; +pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16; +pub const IORING_FEAT_FAST_POLL: u32 = 32; +pub const IORING_FEAT_POLL_32BITS: u32 = 64; +pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128; +pub const IORING_FEAT_EXT_ARG: u32 = 256; +pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512; +pub const IORING_FEAT_RSRC_TAGS: u32 = 1024; +pub const IORING_REGISTER_FILES_SKIP: i32 = -2; +pub const IO_URING_OP_SUPPORTED: u32 = 1; +pub type __u8 = ::std::os::raw::c_uchar; +pub type __u16 = ::std::os::raw::c_ushort; +pub type __s32 = ::std::os::raw::c_int; +pub type __u32 = ::std::os::raw::c_uint; +pub type __u64 = ::std::os::raw::c_ulonglong; +pub type __kernel_rwf_t = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_sqe { + pub opcode: __u8, + pub flags: __u8, + pub ioprio: __u16, + pub fd: __s32, + pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1, + pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2, + pub len: __u32, + pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3, + pub user_data: __u64, + pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4, + pub personality: __u16, + pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5, + pub __pad2: [__u64; 2usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_1 { + pub off: __u64, + pub addr2: __u64, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_sqe__bindgen_ty_1"] + [::std::mem::size_of::() - 8usize]; + ["Alignment of io_uring_sqe__bindgen_ty_1"] + [::std::mem::align_of::() - 8usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_1::off"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_1, off) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_1::addr2"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_1, addr2) - 0usize]; +}; +impl Default for io_uring_sqe__bindgen_ty_1 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_2 { + pub addr: __u64, + pub splice_off_in: __u64, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_sqe__bindgen_ty_2"] + [::std::mem::size_of::() - 8usize]; + ["Alignment of io_uring_sqe__bindgen_ty_2"] + [::std::mem::align_of::() - 8usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_2::addr"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_2, addr) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_2::splice_off_in"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_2, splice_off_in) - 0usize]; +}; +impl Default for io_uring_sqe__bindgen_ty_2 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_3 { + pub rw_flags: __kernel_rwf_t, + pub fsync_flags: __u32, + pub poll_events: __u16, + pub poll32_events: __u32, + pub sync_range_flags: __u32, + pub msg_flags: __u32, + pub timeout_flags: __u32, + pub accept_flags: __u32, + pub cancel_flags: __u32, + pub open_flags: __u32, + pub statx_flags: __u32, + pub fadvise_advice: __u32, + pub splice_flags: __u32, + pub rename_flags: __u32, + pub unlink_flags: __u32, + pub hardlink_flags: __u32, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_sqe__bindgen_ty_3"] + [::std::mem::size_of::() - 4usize]; + ["Alignment of io_uring_sqe__bindgen_ty_3"] + [::std::mem::align_of::() - 4usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::rw_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, rw_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::fsync_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, fsync_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::poll_events"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, poll_events) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::poll32_events"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, poll32_events) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::sync_range_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, sync_range_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::msg_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, msg_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::timeout_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, timeout_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::accept_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, accept_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::cancel_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, cancel_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::open_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, open_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::statx_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, statx_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::fadvise_advice"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, fadvise_advice) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::splice_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, splice_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::rename_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, rename_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::unlink_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, unlink_flags) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_3::hardlink_flags"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_3, hardlink_flags) - 0usize]; +}; +impl Default for io_uring_sqe__bindgen_ty_3 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[repr(C, packed)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_4 { + pub buf_index: __u16, + pub buf_group: __u16, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_sqe__bindgen_ty_4"] + [::std::mem::size_of::() - 2usize]; + ["Alignment of io_uring_sqe__bindgen_ty_4"] + [::std::mem::align_of::() - 1usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_4::buf_index"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_4, buf_index) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_4::buf_group"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_4, buf_group) - 0usize]; +}; +impl Default for io_uring_sqe__bindgen_ty_4 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_sqe__bindgen_ty_5 { + pub splice_fd_in: __s32, + pub file_index: __u32, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_sqe__bindgen_ty_5"] + [::std::mem::size_of::() - 4usize]; + ["Alignment of io_uring_sqe__bindgen_ty_5"] + [::std::mem::align_of::() - 4usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_5::splice_fd_in"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_5, splice_fd_in) - 0usize]; + ["Offset of field: io_uring_sqe__bindgen_ty_5::file_index"] + [::std::mem::offset_of!(io_uring_sqe__bindgen_ty_5, file_index) - 0usize]; +}; +impl Default for io_uring_sqe__bindgen_ty_5 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_sqe"][::std::mem::size_of::() - 64usize]; + ["Alignment of io_uring_sqe"][::std::mem::align_of::() - 8usize]; + ["Offset of field: io_uring_sqe::opcode"] + [::std::mem::offset_of!(io_uring_sqe, opcode) - 0usize]; + ["Offset of field: io_uring_sqe::flags"][::std::mem::offset_of!(io_uring_sqe, flags) - 1usize]; + ["Offset of field: io_uring_sqe::ioprio"] + [::std::mem::offset_of!(io_uring_sqe, ioprio) - 2usize]; + ["Offset of field: io_uring_sqe::fd"][::std::mem::offset_of!(io_uring_sqe, fd) - 4usize]; + ["Offset of field: io_uring_sqe::len"][::std::mem::offset_of!(io_uring_sqe, len) - 24usize]; + ["Offset of field: io_uring_sqe::user_data"] + [::std::mem::offset_of!(io_uring_sqe, user_data) - 32usize]; + ["Offset of field: io_uring_sqe::personality"] + [::std::mem::offset_of!(io_uring_sqe, personality) - 42usize]; + ["Offset of field: io_uring_sqe::__pad2"] + [::std::mem::offset_of!(io_uring_sqe, __pad2) - 48usize]; +}; +impl Default for io_uring_sqe { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_1 = 0; +pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_1 = 1; +pub const IOSQE_IO_LINK_BIT: _bindgen_ty_1 = 2; +pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_1 = 3; +pub const IOSQE_ASYNC_BIT: _bindgen_ty_1 = 4; +pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_1 = 5; +pub type _bindgen_ty_1 = ::std::os::raw::c_uint; +pub const IORING_OP_NOP: _bindgen_ty_2 = 0; +pub const IORING_OP_READV: _bindgen_ty_2 = 1; +pub const IORING_OP_WRITEV: _bindgen_ty_2 = 2; +pub const IORING_OP_FSYNC: _bindgen_ty_2 = 3; +pub const IORING_OP_READ_FIXED: _bindgen_ty_2 = 4; +pub const IORING_OP_WRITE_FIXED: _bindgen_ty_2 = 5; +pub const IORING_OP_POLL_ADD: _bindgen_ty_2 = 6; +pub const IORING_OP_POLL_REMOVE: _bindgen_ty_2 = 7; +pub const IORING_OP_SYNC_FILE_RANGE: _bindgen_ty_2 = 8; +pub const IORING_OP_SENDMSG: _bindgen_ty_2 = 9; +pub const IORING_OP_RECVMSG: _bindgen_ty_2 = 10; +pub const IORING_OP_TIMEOUT: _bindgen_ty_2 = 11; +pub const IORING_OP_TIMEOUT_REMOVE: _bindgen_ty_2 = 12; +pub const IORING_OP_ACCEPT: _bindgen_ty_2 = 13; +pub const IORING_OP_ASYNC_CANCEL: _bindgen_ty_2 = 14; +pub const IORING_OP_LINK_TIMEOUT: _bindgen_ty_2 = 15; +pub const IORING_OP_CONNECT: _bindgen_ty_2 = 16; +pub const IORING_OP_FALLOCATE: _bindgen_ty_2 = 17; +pub const IORING_OP_OPENAT: _bindgen_ty_2 = 18; +pub const IORING_OP_CLOSE: _bindgen_ty_2 = 19; +pub const IORING_OP_FILES_UPDATE: _bindgen_ty_2 = 20; +pub const IORING_OP_STATX: _bindgen_ty_2 = 21; +pub const IORING_OP_READ: _bindgen_ty_2 = 22; +pub const IORING_OP_WRITE: _bindgen_ty_2 = 23; +pub const IORING_OP_FADVISE: _bindgen_ty_2 = 24; +pub const IORING_OP_MADVISE: _bindgen_ty_2 = 25; +pub const IORING_OP_SEND: _bindgen_ty_2 = 26; +pub const IORING_OP_RECV: _bindgen_ty_2 = 27; +pub const IORING_OP_OPENAT2: _bindgen_ty_2 = 28; +pub const IORING_OP_EPOLL_CTL: _bindgen_ty_2 = 29; +pub const IORING_OP_SPLICE: _bindgen_ty_2 = 30; +pub const IORING_OP_PROVIDE_BUFFERS: _bindgen_ty_2 = 31; +pub const IORING_OP_REMOVE_BUFFERS: _bindgen_ty_2 = 32; +pub const IORING_OP_TEE: _bindgen_ty_2 = 33; +pub const IORING_OP_SHUTDOWN: _bindgen_ty_2 = 34; +pub const IORING_OP_RENAMEAT: _bindgen_ty_2 = 35; +pub const IORING_OP_UNLINKAT: _bindgen_ty_2 = 36; +pub const IORING_OP_LAST: _bindgen_ty_2 = 37; +pub type _bindgen_ty_2 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_cqe { + pub user_data: __u64, + pub res: __s32, + pub flags: __u32, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_cqe"][::std::mem::size_of::() - 16usize]; + ["Alignment of io_uring_cqe"][::std::mem::align_of::() - 8usize]; + ["Offset of field: io_uring_cqe::user_data"] + [::std::mem::offset_of!(io_uring_cqe, user_data) - 0usize]; + ["Offset of field: io_uring_cqe::res"][::std::mem::offset_of!(io_uring_cqe, res) - 8usize]; + ["Offset of field: io_uring_cqe::flags"][::std::mem::offset_of!(io_uring_cqe, flags) - 12usize]; +}; +pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_3 = 16; +pub type _bindgen_ty_3 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_sqring_offsets { + pub head: __u32, + pub tail: __u32, + pub ring_mask: __u32, + pub ring_entries: __u32, + pub flags: __u32, + pub dropped: __u32, + pub array: __u32, + pub resv1: __u32, + pub resv2: __u64, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_sqring_offsets"][::std::mem::size_of::() - 40usize]; + ["Alignment of io_sqring_offsets"][::std::mem::align_of::() - 8usize]; + ["Offset of field: io_sqring_offsets::head"] + [::std::mem::offset_of!(io_sqring_offsets, head) - 0usize]; + ["Offset of field: io_sqring_offsets::tail"] + [::std::mem::offset_of!(io_sqring_offsets, tail) - 4usize]; + ["Offset of field: io_sqring_offsets::ring_mask"] + [::std::mem::offset_of!(io_sqring_offsets, ring_mask) - 8usize]; + ["Offset of field: io_sqring_offsets::ring_entries"] + [::std::mem::offset_of!(io_sqring_offsets, ring_entries) - 12usize]; + ["Offset of field: io_sqring_offsets::flags"] + [::std::mem::offset_of!(io_sqring_offsets, flags) - 16usize]; + ["Offset of field: io_sqring_offsets::dropped"] + [::std::mem::offset_of!(io_sqring_offsets, dropped) - 20usize]; + ["Offset of field: io_sqring_offsets::array"] + [::std::mem::offset_of!(io_sqring_offsets, array) - 24usize]; + ["Offset of field: io_sqring_offsets::resv1"] + [::std::mem::offset_of!(io_sqring_offsets, resv1) - 28usize]; + ["Offset of field: io_sqring_offsets::resv2"] + [::std::mem::offset_of!(io_sqring_offsets, resv2) - 32usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_cqring_offsets { + pub head: __u32, + pub tail: __u32, + pub ring_mask: __u32, + pub ring_entries: __u32, + pub overflow: __u32, + pub cqes: __u32, + pub flags: __u32, + pub resv1: __u32, + pub resv2: __u64, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_cqring_offsets"][::std::mem::size_of::() - 40usize]; + ["Alignment of io_cqring_offsets"][::std::mem::align_of::() - 8usize]; + ["Offset of field: io_cqring_offsets::head"] + [::std::mem::offset_of!(io_cqring_offsets, head) - 0usize]; + ["Offset of field: io_cqring_offsets::tail"] + [::std::mem::offset_of!(io_cqring_offsets, tail) - 4usize]; + ["Offset of field: io_cqring_offsets::ring_mask"] + [::std::mem::offset_of!(io_cqring_offsets, ring_mask) - 8usize]; + ["Offset of field: io_cqring_offsets::ring_entries"] + [::std::mem::offset_of!(io_cqring_offsets, ring_entries) - 12usize]; + ["Offset of field: io_cqring_offsets::overflow"] + [::std::mem::offset_of!(io_cqring_offsets, overflow) - 16usize]; + ["Offset of field: io_cqring_offsets::cqes"] + [::std::mem::offset_of!(io_cqring_offsets, cqes) - 20usize]; + ["Offset of field: io_cqring_offsets::flags"] + [::std::mem::offset_of!(io_cqring_offsets, flags) - 24usize]; + ["Offset of field: io_cqring_offsets::resv1"] + [::std::mem::offset_of!(io_cqring_offsets, resv1) - 28usize]; + ["Offset of field: io_cqring_offsets::resv2"] + [::std::mem::offset_of!(io_cqring_offsets, resv2) - 32usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_params { + pub sq_entries: __u32, + pub cq_entries: __u32, + pub flags: __u32, + pub sq_thread_cpu: __u32, + pub sq_thread_idle: __u32, + pub features: __u32, + pub wq_fd: __u32, + pub resv: [__u32; 3usize], + pub sq_off: io_sqring_offsets, + pub cq_off: io_cqring_offsets, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_params"][::std::mem::size_of::() - 120usize]; + ["Alignment of io_uring_params"][::std::mem::align_of::() - 8usize]; + ["Offset of field: io_uring_params::sq_entries"] + [::std::mem::offset_of!(io_uring_params, sq_entries) - 0usize]; + ["Offset of field: io_uring_params::cq_entries"] + [::std::mem::offset_of!(io_uring_params, cq_entries) - 4usize]; + ["Offset of field: io_uring_params::flags"] + [::std::mem::offset_of!(io_uring_params, flags) - 8usize]; + ["Offset of field: io_uring_params::sq_thread_cpu"] + [::std::mem::offset_of!(io_uring_params, sq_thread_cpu) - 12usize]; + ["Offset of field: io_uring_params::sq_thread_idle"] + [::std::mem::offset_of!(io_uring_params, sq_thread_idle) - 16usize]; + ["Offset of field: io_uring_params::features"] + [::std::mem::offset_of!(io_uring_params, features) - 20usize]; + ["Offset of field: io_uring_params::wq_fd"] + [::std::mem::offset_of!(io_uring_params, wq_fd) - 24usize]; + ["Offset of field: io_uring_params::resv"] + [::std::mem::offset_of!(io_uring_params, resv) - 28usize]; + ["Offset of field: io_uring_params::sq_off"] + [::std::mem::offset_of!(io_uring_params, sq_off) - 40usize]; + ["Offset of field: io_uring_params::cq_off"] + [::std::mem::offset_of!(io_uring_params, cq_off) - 80usize]; +}; +pub const IORING_REGISTER_BUFFERS: _bindgen_ty_4 = 0; +pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_4 = 1; +pub const IORING_REGISTER_FILES: _bindgen_ty_4 = 2; +pub const IORING_UNREGISTER_FILES: _bindgen_ty_4 = 3; +pub const IORING_REGISTER_EVENTFD: _bindgen_ty_4 = 4; +pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_4 = 5; +pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_4 = 6; +pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_4 = 7; +pub const IORING_REGISTER_PROBE: _bindgen_ty_4 = 8; +pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_4 = 9; +pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_4 = 10; +pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_4 = 11; +pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_4 = 12; +pub const IORING_REGISTER_FILES2: _bindgen_ty_4 = 13; +pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_4 = 14; +pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_4 = 15; +pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_4 = 16; +pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_4 = 17; +pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_4 = 18; +pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_4 = 19; +pub const IORING_REGISTER_LAST: _bindgen_ty_4 = 20; +pub type _bindgen_ty_4 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_files_update { + pub offset: __u32, + pub resv: __u32, + pub fds: __u64, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_files_update"][::std::mem::size_of::() - 16usize]; + ["Alignment of io_uring_files_update"] + [::std::mem::align_of::() - 8usize]; + ["Offset of field: io_uring_files_update::offset"] + [::std::mem::offset_of!(io_uring_files_update, offset) - 0usize]; + ["Offset of field: io_uring_files_update::resv"] + [::std::mem::offset_of!(io_uring_files_update, resv) - 4usize]; + ["Offset of field: io_uring_files_update::fds"] + [::std::mem::offset_of!(io_uring_files_update, fds) - 8usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_rsrc_register { + pub nr: __u32, + pub resv: __u32, + pub resv2: __u64, + pub data: __u64, + pub tags: __u64, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_rsrc_register"][::std::mem::size_of::() - 32usize]; + ["Alignment of io_uring_rsrc_register"] + [::std::mem::align_of::() - 8usize]; + ["Offset of field: io_uring_rsrc_register::nr"] + [::std::mem::offset_of!(io_uring_rsrc_register, nr) - 0usize]; + ["Offset of field: io_uring_rsrc_register::resv"] + [::std::mem::offset_of!(io_uring_rsrc_register, resv) - 4usize]; + ["Offset of field: io_uring_rsrc_register::resv2"] + [::std::mem::offset_of!(io_uring_rsrc_register, resv2) - 8usize]; + ["Offset of field: io_uring_rsrc_register::data"] + [::std::mem::offset_of!(io_uring_rsrc_register, data) - 16usize]; + ["Offset of field: io_uring_rsrc_register::tags"] + [::std::mem::offset_of!(io_uring_rsrc_register, tags) - 24usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_rsrc_update { + pub offset: __u32, + pub resv: __u32, + pub data: __u64, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_rsrc_update"][::std::mem::size_of::() - 16usize]; + ["Alignment of io_uring_rsrc_update"][::std::mem::align_of::() - 8usize]; + ["Offset of field: io_uring_rsrc_update::offset"] + [::std::mem::offset_of!(io_uring_rsrc_update, offset) - 0usize]; + ["Offset of field: io_uring_rsrc_update::resv"] + [::std::mem::offset_of!(io_uring_rsrc_update, resv) - 4usize]; + ["Offset of field: io_uring_rsrc_update::data"] + [::std::mem::offset_of!(io_uring_rsrc_update, data) - 8usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_rsrc_update2 { + pub offset: __u32, + pub resv: __u32, + pub data: __u64, + pub tags: __u64, + pub nr: __u32, + pub resv2: __u32, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_rsrc_update2"][::std::mem::size_of::() - 32usize]; + ["Alignment of io_uring_rsrc_update2"] + [::std::mem::align_of::() - 8usize]; + ["Offset of field: io_uring_rsrc_update2::offset"] + [::std::mem::offset_of!(io_uring_rsrc_update2, offset) - 0usize]; + ["Offset of field: io_uring_rsrc_update2::resv"] + [::std::mem::offset_of!(io_uring_rsrc_update2, resv) - 4usize]; + ["Offset of field: io_uring_rsrc_update2::data"] + [::std::mem::offset_of!(io_uring_rsrc_update2, data) - 8usize]; + ["Offset of field: io_uring_rsrc_update2::tags"] + [::std::mem::offset_of!(io_uring_rsrc_update2, tags) - 16usize]; + ["Offset of field: io_uring_rsrc_update2::nr"] + [::std::mem::offset_of!(io_uring_rsrc_update2, nr) - 24usize]; + ["Offset of field: io_uring_rsrc_update2::resv2"] + [::std::mem::offset_of!(io_uring_rsrc_update2, resv2) - 28usize]; +}; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_probe_op { + pub op: __u8, + pub resv: __u8, + pub flags: __u16, + pub resv2: __u32, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_probe_op"][::std::mem::size_of::() - 8usize]; + ["Alignment of io_uring_probe_op"][::std::mem::align_of::() - 4usize]; + ["Offset of field: io_uring_probe_op::op"] + [::std::mem::offset_of!(io_uring_probe_op, op) - 0usize]; + ["Offset of field: io_uring_probe_op::resv"] + [::std::mem::offset_of!(io_uring_probe_op, resv) - 1usize]; + ["Offset of field: io_uring_probe_op::flags"] + [::std::mem::offset_of!(io_uring_probe_op, flags) - 2usize]; + ["Offset of field: io_uring_probe_op::resv2"] + [::std::mem::offset_of!(io_uring_probe_op, resv2) - 4usize]; +}; +#[repr(C)] +#[derive(Debug, Default)] +pub struct io_uring_probe { + pub last_op: __u8, + pub ops_len: __u8, + pub resv: __u16, + pub resv2: [__u32; 3usize], + pub ops: __IncompleteArrayField, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_probe"][::std::mem::size_of::() - 16usize]; + ["Alignment of io_uring_probe"][::std::mem::align_of::() - 4usize]; + ["Offset of field: io_uring_probe::last_op"] + [::std::mem::offset_of!(io_uring_probe, last_op) - 0usize]; + ["Offset of field: io_uring_probe::ops_len"] + [::std::mem::offset_of!(io_uring_probe, ops_len) - 1usize]; + ["Offset of field: io_uring_probe::resv"] + [::std::mem::offset_of!(io_uring_probe, resv) - 2usize]; + ["Offset of field: io_uring_probe::resv2"] + [::std::mem::offset_of!(io_uring_probe, resv2) - 4usize]; + ["Offset of field: io_uring_probe::ops"][::std::mem::offset_of!(io_uring_probe, ops) - 16usize]; +}; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct io_uring_restriction { + pub opcode: __u16, + pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1, + pub resv: __u8, + pub resv2: [__u32; 3usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union io_uring_restriction__bindgen_ty_1 { + pub register_op: __u8, + pub sqe_op: __u8, + pub sqe_flags: __u8, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_restriction__bindgen_ty_1"] + [::std::mem::size_of::() - 1usize]; + ["Alignment of io_uring_restriction__bindgen_ty_1"] + [::std::mem::align_of::() - 1usize]; + ["Offset of field: io_uring_restriction__bindgen_ty_1::register_op"] + [::std::mem::offset_of!(io_uring_restriction__bindgen_ty_1, register_op) - 0usize]; + ["Offset of field: io_uring_restriction__bindgen_ty_1::sqe_op"] + [::std::mem::offset_of!(io_uring_restriction__bindgen_ty_1, sqe_op) - 0usize]; + ["Offset of field: io_uring_restriction__bindgen_ty_1::sqe_flags"] + [::std::mem::offset_of!(io_uring_restriction__bindgen_ty_1, sqe_flags) - 0usize]; +}; +impl Default for io_uring_restriction__bindgen_ty_1 { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_restriction"][::std::mem::size_of::() - 16usize]; + ["Alignment of io_uring_restriction"][::std::mem::align_of::() - 4usize]; + ["Offset of field: io_uring_restriction::opcode"] + [::std::mem::offset_of!(io_uring_restriction, opcode) - 0usize]; + ["Offset of field: io_uring_restriction::resv"] + [::std::mem::offset_of!(io_uring_restriction, resv) - 3usize]; + ["Offset of field: io_uring_restriction::resv2"] + [::std::mem::offset_of!(io_uring_restriction, resv2) - 4usize]; +}; +impl Default for io_uring_restriction { + fn default() -> Self { + let mut s = ::std::mem::MaybeUninit::::uninit(); + unsafe { + ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); + s.assume_init() + } + } +} +pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_6 = 0; +pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_6 = 1; +pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_6 = 2; +pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_6 = 3; +pub const IORING_RESTRICTION_LAST: _bindgen_ty_6 = 4; +pub type _bindgen_ty_6 = ::std::os::raw::c_uint; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct io_uring_getevents_arg { + pub sigmask: __u64, + pub sigmask_sz: __u32, + pub pad: __u32, + pub ts: __u64, +} +#[allow(clippy::unnecessary_operation, clippy::identity_op)] +const _: () = { + ["Size of io_uring_getevents_arg"][::std::mem::size_of::() - 24usize]; + ["Alignment of io_uring_getevents_arg"] + [::std::mem::align_of::() - 8usize]; + ["Offset of field: io_uring_getevents_arg::sigmask"] + [::std::mem::offset_of!(io_uring_getevents_arg, sigmask) - 0usize]; + ["Offset of field: io_uring_getevents_arg::sigmask_sz"] + [::std::mem::offset_of!(io_uring_getevents_arg, sigmask_sz) - 8usize]; + ["Offset of field: io_uring_getevents_arg::pad"] + [::std::mem::offset_of!(io_uring_getevents_arg, pad) - 12usize]; + ["Offset of field: io_uring_getevents_arg::ts"] + [::std::mem::offset_of!(io_uring_getevents_arg, ts) - 16usize]; +}; diff --git a/src/vmm/src/io_uring/mod.rs b/src/vmm/src/io_uring/mod.rs index f306148044c..1c2ca1bfc6e 100644 --- a/src/vmm/src/io_uring/mod.rs +++ b/src/vmm/src/io_uring/mod.rs @@ -1,8 +1,7 @@ // Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -#[allow(clippy::undocumented_unsafe_blocks)] -mod gen; +mod generated; pub mod operation; mod probe; mod queue; @@ -14,9 +13,9 @@ use std::fs::File; use std::io::Error as IOError; use std::os::unix::io::{AsRawFd, FromRawFd, RawFd}; -use gen::io_uring_params; +use generated::io_uring_params; use operation::{Cqe, FixedFd, OpCode, Operation}; -use probe::{ProbeWrapper, PROBE_LEN}; +use probe::{PROBE_LEN, ProbeWrapper}; pub use queue::completion::CQueueError; use queue::completion::CompletionQueue; pub use queue::submission::SQueueError; @@ -110,7 +109,7 @@ impl IoUring { ) -> Result { let mut params = io_uring_params { // Create the ring as disabled, so that we may register restrictions. - flags: gen::IORING_SETUP_R_DISABLED, + flags: generated::IORING_SETUP_R_DISABLED, ..Default::default() }; @@ -248,7 +247,7 @@ impl IoUring { libc::syscall( libc::SYS_io_uring_register, self.fd.as_raw_fd(), - gen::IORING_REGISTER_ENABLE_RINGS, + generated::IORING_REGISTER_ENABLE_RINGS, std::ptr::null::(), 0, ) @@ -273,7 +272,7 @@ impl IoUring { libc::syscall( libc::SYS_io_uring_register, self.fd.as_raw_fd(), - gen::IORING_REGISTER_FILES, + generated::IORING_REGISTER_FILES, files .iter() .map(|f| f.as_raw_fd()) @@ -297,7 +296,7 @@ impl IoUring { libc::syscall( libc::SYS_io_uring_register, self.fd.as_raw_fd(), - gen::IORING_REGISTER_EVENTFD, + generated::IORING_REGISTER_EVENTFD, (&fd) as *const _, 1, ) @@ -316,10 +315,10 @@ impl IoUring { libc::syscall( libc::SYS_io_uring_register, self.fd.as_raw_fd(), - gen::IORING_REGISTER_RESTRICTIONS, + generated::IORING_REGISTER_RESTRICTIONS, restrictions .iter() - .map(gen::io_uring_restriction::from) + .map(generated::io_uring_restriction::from) .collect::>() .as_mut_slice() .as_mut_ptr(), @@ -337,7 +336,7 @@ impl IoUring { // An alternative fix would be to keep an internal counter that tracks the number of // submitted entries that haven't been completed and makes sure it doesn't exceed // (2 * num_entries). - if (params.features & gen::IORING_FEAT_NODROP) == 0 { + if (params.features & generated::IORING_FEAT_NODROP) == 0 { return Err(IoUringError::UnsupportedFeature("IORING_FEAT_NODROP")); } @@ -352,7 +351,7 @@ impl IoUring { libc::syscall( libc::SYS_io_uring_register, self.fd.as_raw_fd(), - gen::IORING_REGISTER_PROBE, + generated::IORING_REGISTER_PROBE, probes.as_mut_fam_struct_ptr(), PROBE_LEN, ) @@ -363,7 +362,7 @@ impl IoUring { let supported_opcodes: HashSet = probes .as_slice() .iter() - .filter(|op| ((u32::from(op.flags)) & gen::IO_URING_OP_SUPPORTED) != 0) + .filter(|op| ((u32::from(op.flags)) & generated::IO_URING_OP_SUPPORTED) != 0) .map(|op| op.op) .collect(); diff --git a/src/vmm/src/io_uring/operation/cqe.rs b/src/vmm/src/io_uring/operation/cqe.rs index 2b4f4165e4c..bd445ecb28a 100644 --- a/src/vmm/src/io_uring/operation/cqe.rs +++ b/src/vmm/src/io_uring/operation/cqe.rs @@ -3,7 +3,7 @@ use std::fmt::Debug; -use crate::io_uring::gen::io_uring_cqe; +use crate::io_uring::generated::io_uring_cqe; use crate::vstate::memory::ByteValued; // SAFETY: Struct is POD and contains no references or niches. diff --git a/src/vmm/src/io_uring/operation/mod.rs b/src/vmm/src/io_uring/operation/mod.rs index dc9cb958b3c..6307d1413c0 100644 --- a/src/vmm/src/io_uring/operation/mod.rs +++ b/src/vmm/src/io_uring/operation/mod.rs @@ -12,7 +12,7 @@ use std::fmt::{self, Debug}; pub use cqe::Cqe; pub(crate) use sqe::Sqe; -use crate::io_uring::gen::{self, io_uring_sqe, IOSQE_FIXED_FILE_BIT}; +use crate::io_uring::generated::{self, IOSQE_FIXED_FILE_BIT, io_uring_sqe}; /// The index of a registered fd. pub type FixedFd = u32; @@ -24,11 +24,11 @@ pub type FixedFd = u32; /// Supported operation types. pub enum OpCode { /// Read operation. - Read = gen::IORING_OP_READ as u8, + Read = generated::IORING_OP_READ as u8, /// Write operation. - Write = gen::IORING_OP_WRITE as u8, + Write = generated::IORING_OP_WRITE as u8, /// Fsync operation. - Fsync = gen::IORING_OP_FSYNC as u8, + Fsync = generated::IORING_OP_FSYNC as u8, } // Useful for outputting errors. @@ -120,7 +120,7 @@ impl Operation { // Needed for proptesting. #[cfg(test)] pub(crate) fn set_linked(&mut self) { - self.flags |= 1 << gen::IOSQE_IO_LINK_BIT; + self.flags |= 1 << generated::IOSQE_IO_LINK_BIT; } /// Transform the operation into an `Sqe`. diff --git a/src/vmm/src/io_uring/operation/sqe.rs b/src/vmm/src/io_uring/operation/sqe.rs index f405becd411..93c3be32d4c 100644 --- a/src/vmm/src/io_uring/operation/sqe.rs +++ b/src/vmm/src/io_uring/operation/sqe.rs @@ -3,7 +3,7 @@ use std::fmt::{self}; -use crate::io_uring::gen::io_uring_sqe; +use crate::io_uring::generated::io_uring_sqe; use crate::vstate::memory::ByteValued; // SAFETY: Struct is POD and contains no references or niches. diff --git a/src/vmm/src/io_uring/probe.rs b/src/vmm/src/io_uring/probe.rs index a1f74385815..4ac68daacef 100644 --- a/src/vmm/src/io_uring/probe.rs +++ b/src/vmm/src/io_uring/probe.rs @@ -4,7 +4,7 @@ use vmm_sys_util::fam::{FamStruct, FamStructWrapper}; use vmm_sys_util::generate_fam_struct_impl; -use crate::io_uring::gen::{io_uring_probe, io_uring_probe_op}; +use crate::io_uring::generated::{io_uring_probe, io_uring_probe_op}; // There is no max for the number of operations returned by probing. So we fallback to using the // number of values representable in a u8; diff --git a/src/vmm/src/io_uring/queue/completion.rs b/src/vmm/src/io_uring/queue/completion.rs index 106229d032b..1af8ef3ed71 100644 --- a/src/vmm/src/io_uring/queue/completion.rs +++ b/src/vmm/src/io_uring/queue/completion.rs @@ -8,8 +8,8 @@ use std::sync::atomic::Ordering; use vm_memory::{Bytes, VolatileMemory, VolatileMemoryError}; -use super::mmap::{mmap, MmapError}; -use crate::io_uring::gen; +use super::mmap::{MmapError, mmap}; +use crate::io_uring::generated; use crate::io_uring::operation::Cqe; use crate::vstate::memory::MmapRegion; @@ -43,15 +43,15 @@ pub(crate) struct CompletionQueue { impl CompletionQueue { pub(crate) fn new( io_uring_fd: RawFd, - params: &gen::io_uring_params, + params: &generated::io_uring_params, ) -> Result { let offsets = params.cq_off; // Map the CQ_ring. The actual size of the ring is `num_entries * size_of(entry_type)`. // To this we add an offset as per the io_uring specifications. let ring_size = (params.cq_off.cqes as usize) - + (params.cq_entries as usize) * std::mem::size_of::(); - let cqes = mmap(ring_size, io_uring_fd, gen::IORING_OFF_CQ_RING.into())?; + + (params.cq_entries as usize) * std::mem::size_of::(); + let cqes = mmap(ring_size, io_uring_fd, generated::IORING_OFF_CQ_RING.into())?; let ring = cqes.as_volatile_slice(); let ring_mask = ring.read_obj(offsets.ring_mask as usize)?; @@ -86,8 +86,8 @@ impl CompletionQueue { // validate that we have smth to fetch if Wrapping(unmasked_tail) - self.unmasked_head > Wrapping(0) { - let cqe: gen::io_uring_cqe = ring.read_obj( - self.cqes_off + (head as usize) * std::mem::size_of::(), + let cqe: generated::io_uring_cqe = ring.read_obj( + self.cqes_off + (head as usize) * std::mem::size_of::(), )?; // increase the head diff --git a/src/vmm/src/io_uring/queue/submission.rs b/src/vmm/src/io_uring/queue/submission.rs index c8306b40d26..db308e63a54 100644 --- a/src/vmm/src/io_uring/queue/submission.rs +++ b/src/vmm/src/io_uring/queue/submission.rs @@ -11,8 +11,8 @@ use std::sync::atomic::Ordering; use vm_memory::{VolatileMemory, VolatileMemoryError}; use vmm_sys_util::syscall::SyscallReturnCode; -use super::mmap::{mmap, MmapError}; -use crate::io_uring::gen; +use super::mmap::{MmapError, mmap}; +use crate::io_uring::generated; use crate::io_uring::operation::Sqe; use crate::vstate::memory::{Bytes, MmapRegion}; @@ -54,7 +54,7 @@ pub(crate) struct SubmissionQueue { impl SubmissionQueue { pub(crate) fn new( io_uring_fd: RawFd, - params: &gen::io_uring_params, + params: &generated::io_uring_params, ) -> Result { let (ring, sqes) = Self::mmap(io_uring_fd, params)?; let ring_slice = ring.as_volatile_slice(); @@ -99,11 +99,10 @@ impl SubmissionQueue { } // retrieve and populate the sqe - if let Err(err) = self - .sqes - .as_volatile_slice() - .write_obj(sqe.0, (tail as usize) * mem::size_of::()) - { + if let Err(err) = self.sqes.as_volatile_slice().write_obj( + sqe.0, + (tail as usize) * mem::size_of::(), + ) { return Err((SQueueError::VolatileMemory(err), sqe.user_data())); } @@ -129,7 +128,7 @@ impl SubmissionQueue { let mut flags = 0; if min_complete > 0 { - flags |= gen::IORING_ENTER_GETEVENTS; + flags |= generated::IORING_ENTER_GETEVENTS; } // SAFETY: Safe because values are valid and we check the return value. let submitted = SyscallReturnCode(unsafe { @@ -155,19 +154,28 @@ impl SubmissionQueue { fn mmap( io_uring_fd: RawFd, - params: &gen::io_uring_params, + params: &generated::io_uring_params, ) -> Result<(MmapRegion, MmapRegion), SQueueError> { // map the SQ_ring. The actual size of the ring is `num_entries * size_of(entry_type)`. // To this we add an offset as per the io_uring specifications. let sqe_ring_size = (params.sq_off.array as usize) + (params.sq_entries as usize) * mem::size_of::(); - let sqe_ring = mmap(sqe_ring_size, io_uring_fd, gen::IORING_OFF_SQ_RING.into())?; + let sqe_ring = mmap( + sqe_ring_size, + io_uring_fd, + generated::IORING_OFF_SQ_RING.into(), + )?; // map the SQEs. - let sqes_array_size = (params.sq_entries as usize) * mem::size_of::(); + let sqes_array_size = + (params.sq_entries as usize) * mem::size_of::(); - let sqes = mmap(sqes_array_size, io_uring_fd, gen::IORING_OFF_SQES.into())?; + let sqes = mmap( + sqes_array_size, + io_uring_fd, + generated::IORING_OFF_SQES.into(), + )?; Ok((sqe_ring, sqes)) } diff --git a/src/vmm/src/io_uring/restriction.rs b/src/vmm/src/io_uring/restriction.rs index f53478117df..54b8f5eefc8 100644 --- a/src/vmm/src/io_uring/restriction.rs +++ b/src/vmm/src/io_uring/restriction.rs @@ -12,7 +12,7 @@ use std::convert::From; -use crate::io_uring::gen; +use crate::io_uring::generated; use crate::io_uring::operation::OpCode; /// Adds support for restricting the operations allowed by io_uring. @@ -24,7 +24,7 @@ pub enum Restriction { RequireFixedFds, } -impl From<&Restriction> for gen::io_uring_restriction { +impl From<&Restriction> for generated::io_uring_restriction { fn from(restriction: &Restriction) -> Self { use Restriction::*; @@ -33,13 +33,13 @@ impl From<&Restriction> for gen::io_uring_restriction { match restriction { AllowOpCode(opcode) => { - instance.opcode = u16::try_from(gen::IORING_RESTRICTION_SQE_OP).unwrap(); + instance.opcode = u16::try_from(generated::IORING_RESTRICTION_SQE_OP).unwrap(); instance.__bindgen_anon_1.sqe_op = *opcode as u8; } RequireFixedFds => { instance.opcode = - u16::try_from(gen::IORING_RESTRICTION_SQE_FLAGS_REQUIRED).unwrap(); - instance.__bindgen_anon_1.sqe_flags = 1 << gen::IOSQE_FIXED_FILE_BIT; + u16::try_from(generated::IORING_RESTRICTION_SQE_FLAGS_REQUIRED).unwrap(); + instance.__bindgen_anon_1.sqe_flags = 1 << generated::IOSQE_FIXED_FILE_BIT; } }; diff --git a/src/vmm/src/lib.rs b/src/vmm/src/lib.rs index 9be5ba53d02..492077df068 100644 --- a/src/vmm/src/lib.rs +++ b/src/vmm/src/lib.rs @@ -137,12 +137,12 @@ use crate::device_manager::legacy::PortIODeviceManager; use crate::device_manager::mmio::MMIODeviceManager; use crate::devices::legacy::{IER_RDA_BIT, IER_RDA_OFFSET}; use crate::devices::virtio::balloon::{ - Balloon, BalloonConfig, BalloonError, BalloonStats, BALLOON_DEV_ID, + BALLOON_DEV_ID, Balloon, BalloonConfig, BalloonError, BalloonStats, }; use crate::devices::virtio::block::device::Block; use crate::devices::virtio::net::Net; use crate::devices::virtio::{TYPE_BALLOON, TYPE_BLOCK, TYPE_NET}; -use crate::logger::{error, info, warn, MetricsError, METRICS}; +use crate::logger::{METRICS, MetricsError, error, info, warn}; use crate::persist::{MicrovmState, MicrovmStateError, VmInfo}; use crate::rate_limiter::BucketUpdate; use crate::snapshot::Persist; diff --git a/src/vmm/src/logger/metrics.rs b/src/vmm/src/logger/metrics.rs index a911a53e8a9..e793495e1f1 100644 --- a/src/vmm/src/logger/metrics.rs +++ b/src/vmm/src/logger/metrics.rs @@ -68,7 +68,7 @@ use std::sync::atomic::{AtomicU64, Ordering}; use std::sync::{Mutex, OnceLock}; use serde::{Serialize, Serializer}; -use utils::time::{get_time_ns, get_time_us, ClockType}; +use utils::time::{ClockType, get_time_ns, get_time_us}; use super::FcLineWriter; use crate::devices::legacy; @@ -951,8 +951,8 @@ impl FirecrackerMetrics { #[cfg(test)] mod tests { use std::io::{ErrorKind, LineWriter}; - use std::sync::atomic::fence; use std::sync::Arc; + use std::sync::atomic::fence; use std::thread; use vmm_sys_util::tempfile::TempFile; diff --git a/src/vmm/src/logger/mod.rs b/src/vmm/src/logger/mod.rs index 49d765b597b..4bbbf9e19c8 100644 --- a/src/vmm/src/logger/mod.rs +++ b/src/vmm/src/logger/mod.rs @@ -7,16 +7,16 @@ mod logging; mod metrics; -pub use log::{debug, error, info, log_enabled, trace, warn, Level}; +pub use log::{Level, debug, error, info, log_enabled, trace, warn}; pub use logging::{ - LevelFilter, LevelFilterFromStrError, LoggerConfig, LoggerInitError, LoggerUpdateError, - DEFAULT_INSTANCE_ID, DEFAULT_LEVEL, INSTANCE_ID, LOGGER, + DEFAULT_INSTANCE_ID, DEFAULT_LEVEL, INSTANCE_ID, LOGGER, LevelFilter, LevelFilterFromStrError, + LoggerConfig, LoggerInitError, LoggerUpdateError, }; pub use metrics::{ - IncMetric, LatencyAggregateMetrics, MetricsError, ProcessTimeReporter, SharedIncMetric, - SharedStoreMetric, StoreMetric, METRICS, + IncMetric, LatencyAggregateMetrics, METRICS, MetricsError, ProcessTimeReporter, + SharedIncMetric, SharedStoreMetric, StoreMetric, }; -use utils::time::{get_time_us, ClockType}; +use utils::time::{ClockType, get_time_us}; /// Alias for `std::io::LineWriter`. pub type FcLineWriter = std::io::LineWriter; diff --git a/src/vmm/src/mmds/data_store.rs b/src/vmm/src/mmds/data_store.rs index 41fe297ab06..518ae7d901a 100644 --- a/src/vmm/src/mmds/data_store.rs +++ b/src/vmm/src/mmds/data_store.rs @@ -5,7 +5,7 @@ use std::fmt; use std::fmt::{Display, Formatter}; use serde::{Deserialize, Serialize}; -use serde_json::{to_vec, Value}; +use serde_json::{Value, to_vec}; use crate::mmds::token::{MmdsTokenError as TokenError, TokenAuthority}; diff --git a/src/vmm/src/mmds/mod.rs b/src/vmm/src/mmds/mod.rs index d4d64e58ffa..cdc0052eb42 100644 --- a/src/vmm/src/mmds/mod.rs +++ b/src/vmm/src/mmds/mod.rs @@ -142,7 +142,7 @@ fn respond_to_request_mmdsv2(mmds: &mut Mmds, request: Request) -> Response { request.http_version(), StatusCode::BadRequest, Body::new(err.to_string()), - ) + ); } }; diff --git a/src/vmm/src/mmds/ns.rs b/src/vmm/src/mmds/ns.rs index 8075df8cb91..8f9a764a7c1 100644 --- a/src/vmm/src/mmds/ns.rs +++ b/src/vmm/src/mmds/ns.rs @@ -13,19 +13,19 @@ use std::sync::{Arc, Mutex}; use utils::time::timestamp_cycles; +use crate::dumbo::pdu::Incomplete; use crate::dumbo::pdu::arp::{ - test_speculative_tpa, ArpError as ArpFrameError, EthIPv4ArpFrame, ETH_IPV4_FRAME_LEN, + ArpError as ArpFrameError, ETH_IPV4_FRAME_LEN, EthIPv4ArpFrame, test_speculative_tpa, }; use crate::dumbo::pdu::ethernet::{ - EthernetError as EthernetFrameError, EthernetFrame, ETHERTYPE_ARP, ETHERTYPE_IPV4, + ETHERTYPE_ARP, ETHERTYPE_IPV4, EthernetError as EthernetFrameError, EthernetFrame, }; use crate::dumbo::pdu::ipv4::{ - test_speculative_dst_addr, IPv4Packet, Ipv4Error as IPv4PacketError, PROTOCOL_TCP, + IPv4Packet, Ipv4Error as IPv4PacketError, PROTOCOL_TCP, test_speculative_dst_addr, }; use crate::dumbo::pdu::tcp::TcpError as TcpSegmentError; -use crate::dumbo::pdu::Incomplete; -use crate::dumbo::tcp::handler::{RecvEvent, TcpIPv4Handler, WriteEvent, WriteNextError}; use crate::dumbo::tcp::NextSegmentStatus; +use crate::dumbo::tcp::handler::{RecvEvent, TcpIPv4Handler, WriteEvent, WriteNextError}; use crate::logger::{IncMetric, METRICS}; use crate::mmds::data_store::Mmds; use crate::utils::net::mac::MacAddr; diff --git a/src/vmm/src/mmds/persist.rs b/src/vmm/src/mmds/persist.rs index 82feff79bc8..10b09c4f7ae 100644 --- a/src/vmm/src/mmds/persist.rs +++ b/src/vmm/src/mmds/persist.rs @@ -11,7 +11,7 @@ use serde::{Deserialize, Serialize}; use super::ns::MmdsNetworkStack; use crate::mmds::data_store::Mmds; use crate::snapshot::Persist; -use crate::utils::net::mac::{MacAddr, MAC_ADDR_LEN}; +use crate::utils::net::mac::{MAC_ADDR_LEN, MacAddr}; /// State of a MmdsNetworkStack. #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/src/vmm/src/mmds/token.rs b/src/vmm/src/mmds/token.rs index c1d211141cc..64c65e9015d 100644 --- a/src/vmm/src/mmds/token.rs +++ b/src/vmm/src/mmds/token.rs @@ -12,7 +12,7 @@ use aes_gcm::{AeadInPlace, Aes256Gcm, Key, KeyInit, Nonce}; use base64::Engine; use bincode::{DefaultOptions, Error as BincodeError, Options}; use serde::{Deserialize, Serialize}; -use utils::time::{get_time_ms, ClockType}; +use utils::time::{ClockType, get_time_ms}; /// Length of initialization vector. pub const IV_LEN: usize = 12; diff --git a/src/vmm/src/persist.rs b/src/vmm/src/persist.rs index d62ffc84600..91a29909590 100644 --- a/src/vmm/src/persist.rs +++ b/src/vmm/src/persist.rs @@ -21,9 +21,9 @@ use crate::arch::aarch64::vcpu::{get_manufacturer_id_from_host, get_manufacturer use crate::builder::{self, BuildMicrovmFromSnapshotError}; use crate::cpu_config::templates::StaticCpuTemplate; #[cfg(target_arch = "x86_64")] -use crate::cpu_config::x86_64::cpuid::common::get_vendor_id_from_host; -#[cfg(target_arch = "x86_64")] use crate::cpu_config::x86_64::cpuid::CpuidTrait; +#[cfg(target_arch = "x86_64")] +use crate::cpu_config::x86_64::cpuid::common::get_vendor_id_from_host; use crate::device_manager::persist::{ACPIDeviceManagerState, DevicePersistError, DeviceStates}; use crate::logger::{info, warn}; use crate::resources::VmResources; @@ -42,7 +42,7 @@ use crate::vstate::memory::{ }; use crate::vstate::vcpu::{VcpuSendEventError, VcpuState}; use crate::vstate::vm::VmState; -use crate::{mem_size_mib, vstate, EventManager, Vmm, VmmError}; +use crate::{EventManager, Vmm, VmmError, mem_size_mib, vstate}; /// Holds information related to the VM that is not part of VmState. #[derive(Clone, Debug, Default, Deserialize, PartialEq, Eq, Serialize)] @@ -644,11 +644,12 @@ mod tests { use vmm_sys_util::tempfile::TempFile; use super::*; + use crate::Vmm; #[cfg(target_arch = "x86_64")] use crate::builder::tests::insert_vmgenid_device; use crate::builder::tests::{ - default_kernel_cmdline, default_vmm, insert_balloon_device, insert_block_devices, - insert_net_device, insert_vsock_device, CustomBlockConfig, + CustomBlockConfig, default_kernel_cmdline, default_vmm, insert_balloon_device, + insert_block_devices, insert_net_device, insert_vsock_device, }; #[cfg(target_arch = "aarch64")] use crate::construct_kvm_mpidrs; @@ -658,7 +659,6 @@ mod tests { use crate::vmm_config::net::NetworkInterfaceConfig; use crate::vmm_config::vsock::tests::default_config; use crate::vstate::memory::GuestMemoryRegionState; - use crate::Vmm; fn default_vmm_with_devices() -> Vmm { let mut event_manager = EventManager::new().expect("Cannot create EventManager"); diff --git a/src/vmm/src/rate_limiter/persist.rs b/src/vmm/src/rate_limiter/persist.rs index 671e99ede38..fea5e9a8742 100644 --- a/src/vmm/src/rate_limiter/persist.rs +++ b/src/vmm/src/rate_limiter/persist.rs @@ -132,14 +132,18 @@ mod tests { let restored_rate_limiter = RateLimiter::restore((), &rate_limiter.save()).expect("Unable to restore rate limiter"); - assert!(rate_limiter - .ops() - .unwrap() - .partial_eq(restored_rate_limiter.ops().unwrap())); - assert!(rate_limiter - .bandwidth() - .unwrap() - .partial_eq(restored_rate_limiter.bandwidth().unwrap())); + assert!( + rate_limiter + .ops() + .unwrap() + .partial_eq(restored_rate_limiter.ops().unwrap()) + ); + assert!( + rate_limiter + .bandwidth() + .unwrap() + .partial_eq(restored_rate_limiter.bandwidth().unwrap()) + ); assert_eq!( restored_rate_limiter.timer_fd.get_state(), TimerState::Disarmed @@ -151,14 +155,18 @@ mod tests { let restored_rate_limiter = RateLimiter::restore((), &rate_limiter.save()).expect("Unable to restore rate limiter"); - assert!(rate_limiter - .ops() - .unwrap() - .partial_eq(restored_rate_limiter.ops().unwrap())); - assert!(rate_limiter - .bandwidth() - .unwrap() - .partial_eq(restored_rate_limiter.bandwidth().unwrap())); + assert!( + rate_limiter + .ops() + .unwrap() + .partial_eq(restored_rate_limiter.ops().unwrap()) + ); + assert!( + rate_limiter + .bandwidth() + .unwrap() + .partial_eq(restored_rate_limiter.bandwidth().unwrap()) + ); assert_eq!( restored_rate_limiter.timer_fd.get_state(), TimerState::Disarmed @@ -169,14 +177,18 @@ mod tests { let restored_rate_limiter = RateLimiter::restore((), &rate_limiter.save()).expect("Unable to restore rate limiter"); - assert!(rate_limiter - .ops() - .unwrap() - .partial_eq(restored_rate_limiter.ops().unwrap())); - assert!(rate_limiter - .bandwidth() - .unwrap() - .partial_eq(restored_rate_limiter.bandwidth().unwrap())); + assert!( + rate_limiter + .ops() + .unwrap() + .partial_eq(restored_rate_limiter.ops().unwrap()) + ); + assert!( + rate_limiter + .bandwidth() + .unwrap() + .partial_eq(restored_rate_limiter.bandwidth().unwrap()) + ); // Test serialization. let mut mem = vec![0; 4096]; @@ -184,13 +196,17 @@ mod tests { let restored_rate_limiter = RateLimiter::restore((), &Snapshot::deserialize(&mut mem.as_slice()).unwrap()).unwrap(); - assert!(rate_limiter - .ops() - .unwrap() - .partial_eq(restored_rate_limiter.ops().unwrap())); - assert!(rate_limiter - .bandwidth() - .unwrap() - .partial_eq(restored_rate_limiter.bandwidth().unwrap())); + assert!( + rate_limiter + .ops() + .unwrap() + .partial_eq(restored_rate_limiter.ops().unwrap()) + ); + assert!( + rate_limiter + .bandwidth() + .unwrap() + .partial_eq(restored_rate_limiter.bandwidth().unwrap()) + ); } } diff --git a/src/vmm/src/resources.rs b/src/vmm/src/resources.rs index 024f8833b78..113c24cad51 100644 --- a/src/vmm/src/resources.rs +++ b/src/vmm/src/resources.rs @@ -24,7 +24,7 @@ use crate::vmm_config::instance_info::InstanceInfo; use crate::vmm_config::machine_config::{ HugePageConfig, MachineConfig, MachineConfigError, MachineConfigUpdate, }; -use crate::vmm_config::metrics::{init_metrics, MetricsConfig, MetricsConfigError}; +use crate::vmm_config::metrics::{MetricsConfig, MetricsConfigError, init_metrics}; use crate::vmm_config::mmds::{MmdsConfig, MmdsConfigError}; use crate::vmm_config::net::*; use crate::vmm_config::vsock::*; @@ -501,6 +501,7 @@ mod tests { use vmm_sys_util::tempfile::TempFile; use super::*; + use crate::HTTP_MAX_PAYLOAD_SIZE; use crate::cpu_config::templates::{CpuTemplateType, StaticCpuTemplate}; use crate::devices::virtio::balloon::Balloon; use crate::devices::virtio::block::virtio::VirtioBlockError; @@ -508,6 +509,7 @@ mod tests { use crate::devices::virtio::vsock::VSOCK_DEV_ID; use crate::resources::VmResources; use crate::utils::net::mac::MacAddr; + use crate::vmm_config::RateLimiterConfig; use crate::vmm_config::boot_source::{ BootConfig, BootSource, BootSourceConfig, DEFAULT_KERNEL_CMDLINE, }; @@ -515,8 +517,6 @@ mod tests { use crate::vmm_config::machine_config::{HugePageConfig, MachineConfig, MachineConfigError}; use crate::vmm_config::net::{NetBuilder, NetworkInterfaceConfig}; use crate::vmm_config::vsock::tests::default_config; - use crate::vmm_config::RateLimiterConfig; - use crate::HTTP_MAX_PAYLOAD_SIZE; fn default_net_cfg() -> NetworkInterfaceConfig { NetworkInterfaceConfig { diff --git a/src/vmm/src/rpc_interface.rs b/src/vmm/src/rpc_interface.rs index 82993fcafea..3aca3e2a6f0 100644 --- a/src/vmm/src/rpc_interface.rs +++ b/src/vmm/src/rpc_interface.rs @@ -5,15 +5,16 @@ use std::fmt::{self, Debug}; use std::sync::{Arc, Mutex, MutexGuard}; use serde_json::Value; -use utils::time::{get_time_us, ClockType}; +use utils::time::{ClockType, get_time_us}; use super::builder::build_and_boot_microvm; use super::persist::{create_snapshot, restore_from_snapshot}; use super::resources::VmResources; use super::{Vmm, VmmError}; +use crate::EventManager; use crate::builder::StartMicrovmError; use crate::cpu_config::templates::{CustomCpuTemplate, GuestConfigError}; -use crate::logger::{info, warn, LoggerConfig, *}; +use crate::logger::{LoggerConfig, info, warn, *}; use crate::mmds::data_store::{self, Mmds}; use crate::persist::{CreateSnapshotError, RestoreFromSnapshotError, VmInfo}; use crate::resources::VmmConfig; @@ -35,7 +36,6 @@ use crate::vmm_config::net::{ use crate::vmm_config::snapshot::{CreateSnapshotParams, LoadSnapshotParams, SnapshotType}; use crate::vmm_config::vsock::{VsockConfigError, VsockDeviceConfig}; use crate::vmm_config::{self, RateLimiterUpdate}; -use crate::EventManager; /// This enum represents the public interface of the VMM. Each action contains various /// bits of information (ids, paths, etc.). @@ -856,12 +856,12 @@ mod tests { use std::path::PathBuf; use super::*; + use crate::HTTP_MAX_PAYLOAD_SIZE; use crate::builder::tests::default_vmm; use crate::devices::virtio::block::CacheType; use crate::mmds::data_store::MmdsVersion; use crate::seccomp::BpfThreadMap; use crate::vmm_config::snapshot::{MemBackendConfig, MemBackendType}; - use crate::HTTP_MAX_PAYLOAD_SIZE; fn default_preboot<'a>( vm_resources: &'a mut VmResources, diff --git a/src/vmm/src/signal_handler.rs b/src/vmm/src/signal_handler.rs index ac4befcb3d1..3b6162c7e4c 100644 --- a/src/vmm/src/signal_handler.rs +++ b/src/vmm/src/signal_handler.rs @@ -2,13 +2,13 @@ // SPDX-License-Identifier: Apache-2.0 use libc::{ - c_int, c_void, siginfo_t, SIGBUS, SIGHUP, SIGILL, SIGPIPE, SIGSEGV, SIGSYS, SIGXCPU, SIGXFSZ, + SIGBUS, SIGHUP, SIGILL, SIGPIPE, SIGSEGV, SIGSYS, SIGXCPU, SIGXFSZ, c_int, c_void, siginfo_t, }; use log::error; -use crate::logger::{IncMetric, StoreMetric, METRICS}; -use crate::utils::signal::register_signal_handler; use crate::FcExitCode; +use crate::logger::{IncMetric, METRICS, StoreMetric}; +use crate::utils::signal::register_signal_handler; // The offset of `si_syscall` (offending syscall identifier) within the siginfo structure // expressed as an `(u)int*`. diff --git a/src/vmm/src/test_utils/mod.rs b/src/vmm/src/test_utils/mod.rs index 2ca7f5ce773..79026ba6de3 100644 --- a/src/vmm/src/test_utils/mod.rs +++ b/src/vmm/src/test_utils/mod.rs @@ -117,7 +117,7 @@ pub fn create_tmp_socket() -> (TempDir, String) { std::ptr::copy( tmp_socket_path.as_ptr().cast(), socket_addr.sun_path.as_mut_ptr(), - tmp_socket_path.as_bytes().len(), + tmp_socket_path.len(), ); let bind = libc::bind( diff --git a/src/vmm/src/utils/signal.rs b/src/vmm/src/utils/signal.rs index 172ae1b376e..5178c7ec3c1 100644 --- a/src/vmm/src/utils/signal.rs +++ b/src/vmm/src/utils/signal.rs @@ -4,19 +4,21 @@ use libc::c_int; pub use vmm_sys_util::signal::*; -extern "C" { - fn __libc_current_sigrtmin() -> c_int; - fn __libc_current_sigrtmax() -> c_int; +// SAFETY: these are valid libc functions +unsafe extern "C" { + // SAFETY: Function has no invariants that can be broken. + safe fn __libc_current_sigrtmin() -> c_int; + + // SAFETY: Function has no invariants that can be broken. + safe fn __libc_current_sigrtmax() -> c_int; } /// Sigrtmin pub fn sigrtmin() -> c_int { - // SAFETY: Function has no invariants that can be broken. - unsafe { __libc_current_sigrtmin() } + __libc_current_sigrtmin() } /// Sigrtmax pub fn sigrtmax() -> c_int { - // SAFETY: Function has no invariants that can be broken. - unsafe { __libc_current_sigrtmax() } + __libc_current_sigrtmax() } diff --git a/src/vmm/src/vmm_config/balloon.rs b/src/vmm/src/vmm_config/balloon.rs index 5b6f25e8662..6ac2fb34ecf 100644 --- a/src/vmm/src/vmm_config/balloon.rs +++ b/src/vmm/src/vmm_config/balloon.rs @@ -5,8 +5,8 @@ use std::sync::{Arc, Mutex}; use serde::{Deserialize, Serialize}; -pub use crate::devices::virtio::balloon::device::BalloonStats; pub use crate::devices::virtio::balloon::BALLOON_DEV_ID; +pub use crate::devices::virtio::balloon::device::BalloonStats; use crate::devices::virtio::balloon::{Balloon, BalloonConfig}; type MutexBalloon = Arc>; diff --git a/src/vmm/src/vmm_config/drive.rs b/src/vmm/src/vmm_config/drive.rs index cdfc732d48b..9e301eff751 100644 --- a/src/vmm/src/vmm_config/drive.rs +++ b/src/vmm/src/vmm_config/drive.rs @@ -8,10 +8,10 @@ use std::sync::{Arc, Mutex}; use serde::{Deserialize, Serialize}; use super::RateLimiterConfig; +use crate::VmmError; use crate::devices::virtio::block::device::Block; pub use crate::devices::virtio::block::virtio::device::FileEngineType; use crate::devices::virtio::block::{BlockError, CacheType}; -use crate::VmmError; /// Errors associated with the operations allowed on a drive. #[derive(Debug, thiserror::Error, displaydoc::Display)] @@ -513,15 +513,19 @@ mod tests { ); // Get None. - assert!(block_devs - .get_index_of_drive_id(&String::from("foo")) - .is_none()); + assert!( + block_devs + .get_index_of_drive_id(&String::from("foo")) + .is_none() + ); // Test several update cases using dummy_block_device_2. // Validate `dummy_block_device_2` is already in the list - assert!(block_devs - .get_index_of_drive_id(&dummy_block_device_2.drive_id) - .is_some()); + assert!( + block_devs + .get_index_of_drive_id(&dummy_block_device_2.drive_id) + .is_some() + ); // Update OK. dummy_block_device_2.is_read_only = Some(true); block_devs.insert(dummy_block_device_2.clone()).unwrap(); diff --git a/src/vmm/src/vmm_config/instance_info.rs b/src/vmm/src/vmm_config/instance_info.rs index 67fd335deaa..cd5b44f30ba 100644 --- a/src/vmm/src/vmm_config/instance_info.rs +++ b/src/vmm/src/vmm_config/instance_info.rs @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 use std::fmt::{self, Display, Formatter}; -use serde::{ser, Serialize}; +use serde::{Serialize, ser}; /// Enumerates microVM runtime states. #[derive(Clone, Debug, Default, PartialEq, Eq)] diff --git a/src/vmm/src/vmm_config/net.rs b/src/vmm/src/vmm_config/net.rs index 8ece4e7e494..f1413368090 100644 --- a/src/vmm/src/vmm_config/net.rs +++ b/src/vmm/src/vmm_config/net.rs @@ -8,9 +8,9 @@ use std::sync::{Arc, Mutex}; use serde::{Deserialize, Serialize}; use super::RateLimiterConfig; +use crate::VmmError; use crate::devices::virtio::net::{Net, TapError}; use crate::utils::net::mac::MacAddr; -use crate::VmmError; /// This struct represents the strongly typed equivalent of the json body from net iface /// related requests. diff --git a/src/vmm/src/vstate/kvm.rs b/src/vmm/src/vstate/kvm.rs index c7d29b449c5..7c44cfb91cb 100644 --- a/src/vmm/src/vstate/kvm.rs +++ b/src/vmm/src/vstate/kvm.rs @@ -3,12 +3,12 @@ use kvm_bindings::KVM_API_VERSION; #[cfg(target_arch = "x86_64")] -use kvm_bindings::{CpuId, MsrList, KVM_MAX_CPUID_ENTRIES}; +use kvm_bindings::{CpuId, KVM_MAX_CPUID_ENTRIES, MsrList}; use kvm_ioctls::Kvm as KvmFd; use serde::{Deserialize, Serialize}; #[cfg(target_arch = "x86_64")] -use crate::arch::x86_64::xstate::{request_dynamic_xstate_features, XstateError}; +use crate::arch::x86_64::xstate::{XstateError, request_dynamic_xstate_features}; use crate::cpu_config::templates::KvmCapability; use crate::vstate::memory::{GuestMemory, GuestMemoryMmap}; @@ -215,11 +215,15 @@ pub(crate) mod tests { ]; let combined_caps = Kvm::combine_capabilities(&additional_capabilities); - assert!(combined_caps - .iter() - .any(|c| *c == kvm_bindings::KVM_CAP_IOMMU)); - assert!(!combined_caps - .iter() - .any(|c| *c == kvm_bindings::KVM_CAP_IOEVENTFD)); + assert!( + combined_caps + .iter() + .any(|c| *c == kvm_bindings::KVM_CAP_IOMMU) + ); + assert!( + !combined_caps + .iter() + .any(|c| *c == kvm_bindings::KVM_CAP_IOEVENTFD) + ); } } diff --git a/src/vmm/src/vstate/memory.rs b/src/vmm/src/vstate/memory.rs index 228c8b8f062..e0f47848684 100644 --- a/src/vmm/src/vstate/memory.rs +++ b/src/vmm/src/vstate/memory.rs @@ -11,20 +11,20 @@ use std::sync::Arc; use libc::c_int; use serde::{Deserialize, Serialize}; -pub use vm_memory::bitmap::{AtomicBitmap, Bitmap, BitmapSlice, BS}; +pub use vm_memory::bitmap::{AtomicBitmap, BS, Bitmap, BitmapSlice}; pub use vm_memory::mmap::MmapRegionBuilder; use vm_memory::mmap::{MmapRegionError, NewBitmap}; pub use vm_memory::{ - address, Address, ByteValued, Bytes, FileOffset, GuestAddress, GuestMemory, GuestMemoryRegion, - GuestUsize, MemoryRegionAddress, MmapRegion, + Address, ByteValued, Bytes, FileOffset, GuestAddress, GuestMemory, GuestMemoryRegion, + GuestUsize, MemoryRegionAddress, MmapRegion, address, }; use vm_memory::{Error as VmMemoryError, GuestMemoryError, WriteVolatile}; use vmm_sys_util::errno; +use crate::DirtyBitmap; use crate::arch::arch_memory_regions; use crate::utils::{get_page_size, u64_to_usize}; use crate::vmm_config::machine_config::HugePageConfig; -use crate::DirtyBitmap; /// Type of GuestMemoryMmap. pub type GuestMemoryMmap = vm_memory::GuestMemoryMmap>; @@ -189,7 +189,7 @@ impl GuestMemoryExtension for GuestMemoryMmap { offset = match offset.checked_add(size as u64) { None => return Err(MemoryError::OffsetTooLarge), Some(new_off) if new_off >= i64::MAX as u64 => { - return Err(MemoryError::OffsetTooLarge) + return Err(MemoryError::OffsetTooLarge); } Some(new_off) => new_off, }; diff --git a/src/vmm/src/vstate/vcpu/aarch64.rs b/src/vmm/src/vstate/vcpu/aarch64.rs index c5d3f4dbb8b..98972c796d2 100644 --- a/src/vmm/src/vstate/vcpu/aarch64.rs +++ b/src/vmm/src/vstate/vcpu/aarch64.rs @@ -8,20 +8,20 @@ use std::fmt::{Debug, Write}; use kvm_bindings::{ - kvm_mp_state, kvm_vcpu_init, KVM_ARM_VCPU_POWER_OFF, KVM_ARM_VCPU_PSCI_0_2, KVM_ARM_VCPU_SVE, + KVM_ARM_VCPU_POWER_OFF, KVM_ARM_VCPU_PSCI_0_2, KVM_ARM_VCPU_SVE, kvm_mp_state, kvm_vcpu_init, }; use kvm_ioctls::*; use serde::{Deserialize, Serialize}; +use crate::arch::EntryPoint; use crate::arch::aarch64::regs::{Aarch64RegisterVec, KVM_REG_ARM64_SVE_VLS}; use crate::arch::aarch64::vcpu::{ - get_all_registers, get_all_registers_ids, get_mpidr, get_mpstate, get_registers, set_mpstate, - set_register, setup_boot_regs, VcpuError as ArchError, + VcpuError as ArchError, get_all_registers, get_all_registers_ids, get_mpidr, get_mpstate, + get_registers, set_mpstate, set_register, setup_boot_regs, }; -use crate::arch::EntryPoint; use crate::cpu_config::aarch64::custom_cpu_template::VcpuFeatures; use crate::cpu_config::templates::CpuConfiguration; -use crate::logger::{error, IncMetric, METRICS}; +use crate::logger::{IncMetric, METRICS, error}; use crate::vcpu::{VcpuConfig, VcpuError}; use crate::vstate::kvm::OptionalCapabilities; use crate::vstate::memory::{Address, GuestMemoryMmap}; @@ -307,15 +307,15 @@ mod tests { use vm_memory::GuestAddress; use super::*; - use crate::arch::aarch64::regs::Aarch64RegisterRef; use crate::arch::BootProtocol; + use crate::arch::aarch64::regs::Aarch64RegisterRef; use crate::cpu_config::aarch64::CpuConfiguration; use crate::cpu_config::templates::RegisterValueFilter; use crate::vcpu::VcpuConfig; use crate::vstate::kvm::Kvm; use crate::vstate::memory::GuestMemoryMmap; - use crate::vstate::vm::tests::setup_vm_with_memory; use crate::vstate::vm::Vm; + use crate::vstate::vm::tests::setup_vm_with_memory; fn setup_vcpu(mem_size: usize) -> (Kvm, Vm, KvmVcpu, GuestMemoryMmap) { let (kvm, mut vm, vm_mem) = setup_vm_with_memory(mem_size); diff --git a/src/vmm/src/vstate/vcpu/mod.rs b/src/vmm/src/vstate/vcpu/mod.rs index 047b40b133a..a04177cd938 100644 --- a/src/vmm/src/vstate/vcpu/mod.rs +++ b/src/vmm/src/vstate/vcpu/mod.rs @@ -8,8 +8,8 @@ use std::cell::Cell; #[cfg(feature = "gdb")] use std::os::fd::AsRawFd; -use std::sync::atomic::{fence, Ordering}; -use std::sync::mpsc::{channel, Receiver, Sender, TryRecvError}; +use std::sync::atomic::{Ordering, fence}; +use std::sync::mpsc::{Receiver, Sender, TryRecvError, channel}; use std::sync::{Arc, Barrier}; use std::{fmt, io, thread}; @@ -22,15 +22,15 @@ use log::{error, info, warn}; use vmm_sys_util::errno; use vmm_sys_util::eventfd::EventFd; +use crate::FcExitCode; use crate::cpu_config::templates::{CpuConfiguration, GuestConfigError}; #[cfg(feature = "gdb")] -use crate::gdb::target::{get_raw_tid, GdbTargetError}; +use crate::gdb::target::{GdbTargetError, get_raw_tid}; use crate::logger::{IncMetric, METRICS}; use crate::seccomp::{BpfProgram, BpfProgramRef}; -use crate::utils::signal::{register_signal_handler, sigrtmin, Killable}; +use crate::utils::signal::{Killable, register_signal_handler, sigrtmin}; use crate::utils::sm::StateMachine; use crate::vstate::vm::Vm; -use crate::FcExitCode; /// Module with aarch64 vCPU implementation. #[cfg(target_arch = "aarch64")] @@ -176,9 +176,9 @@ impl Vcpu { { Self::TLS_VCPU_PTR.with(|cell: &VcpuCell| { if let Some(vcpu_ptr) = cell.get() { - // Dereferencing here is safe since `TLS_VCPU_PTR` is populated/non-empty, + // SAFETY: Dereferencing here is safe since `TLS_VCPU_PTR` is populated/non-empty, // and it is being cleared on `Vcpu::drop` so there is no dangling pointer. - let vcpu_ref = &mut *vcpu_ptr; + let vcpu_ref = unsafe { &mut *vcpu_ptr }; func(vcpu_ref); Ok(()) } else { @@ -675,8 +675,8 @@ impl fmt::Debug for VcpuResponse { Resumed => write!(f, "VcpuResponse::Resumed"), Exited(code) => write!(f, "VcpuResponse::Exited({:?})", code), SavedState(_) => write!(f, "VcpuResponse::SavedState"), - Error(ref err) => write!(f, "VcpuResponse::Error({:?})", err), - NotAllowed(ref reason) => write!(f, "VcpuResponse::NotAllowed({})", reason), + Error(err) => write!(f, "VcpuResponse::Error({:?})", err), + NotAllowed(reason) => write!(f, "VcpuResponse::NotAllowed({})", reason), DumpedCpuConfig(_) => write!(f, "VcpuResponse::DumpedCpuConfig"), } } @@ -780,18 +780,18 @@ pub(crate) mod tests { use vmm_sys_util::errno; use super::*; + use crate::RECV_TIMEOUT_SEC; use crate::arch::{BootProtocol, EntryPoint}; use crate::builder::StartMicrovmError; - use crate::devices::bus::DummyDevice; use crate::devices::BusDevice; + use crate::devices::bus::DummyDevice; use crate::seccomp::get_empty_filters; use crate::utils::signal::validate_signal_num; use crate::vstate::kvm::Kvm; use crate::vstate::memory::{GuestAddress, GuestMemoryMmap}; use crate::vstate::vcpu::VcpuError as EmulationError; - use crate::vstate::vm::tests::setup_vm_with_memory; use crate::vstate::vm::Vm; - use crate::RECV_TIMEOUT_SEC; + use crate::vstate::vm::tests::setup_vm_with_memory; #[test] fn test_handle_kvm_exit() { @@ -920,7 +920,7 @@ pub(crate) mod tests { (NotAllowed(_), NotAllowed(_)) | (SavedState(_), SavedState(_)) | (DumpedCpuConfig(_), DumpedCpuConfig(_)) => true, - (Error(ref err), Error(ref other_err)) => { + (Error(err), Error(other_err)) => { format!("{:?}", err) == format!("{:?}", other_err) } _ => false, diff --git a/src/vmm/src/vstate/vcpu/x86_64.rs b/src/vmm/src/vstate/vcpu/x86_64.rs index 1cadab157a1..d4d6df12c16 100644 --- a/src/vmm/src/vstate/vcpu/x86_64.rs +++ b/src/vmm/src/vstate/vcpu/x86_64.rs @@ -9,20 +9,20 @@ use std::collections::BTreeMap; use std::fmt::Debug; use kvm_bindings::{ - kvm_debugregs, kvm_lapic_state, kvm_mp_state, kvm_regs, kvm_sregs, kvm_vcpu_events, kvm_xcrs, - kvm_xsave, kvm_xsave2, CpuId, Msrs, Xsave, KVM_MAX_CPUID_ENTRIES, KVM_MAX_MSR_ENTRIES, + CpuId, KVM_MAX_CPUID_ENTRIES, KVM_MAX_MSR_ENTRIES, Msrs, Xsave, kvm_debugregs, kvm_lapic_state, + kvm_mp_state, kvm_regs, kvm_sregs, kvm_vcpu_events, kvm_xcrs, kvm_xsave, kvm_xsave2, }; use kvm_ioctls::{VcpuExit, VcpuFd}; use log::{error, warn}; use serde::{Deserialize, Serialize}; use vmm_sys_util::fam::{self, FamStruct}; -use crate::arch::x86_64::gen::msr_index::{MSR_IA32_TSC, MSR_IA32_TSC_DEADLINE}; +use crate::arch::EntryPoint; +use crate::arch::x86_64::generated::msr_index::{MSR_IA32_TSC, MSR_IA32_TSC_DEADLINE}; use crate::arch::x86_64::interrupts; -use crate::arch::x86_64::msr::{create_boot_msr_entries, MsrError}; +use crate::arch::x86_64::msr::{MsrError, create_boot_msr_entries}; use crate::arch::x86_64::regs::{SetupFpuError, SetupRegistersError, SetupSpecialRegistersError}; -use crate::arch::EntryPoint; -use crate::cpu_config::x86_64::{cpuid, CpuConfiguration}; +use crate::cpu_config::x86_64::{CpuConfiguration, cpuid}; use crate::logger::{IncMetric, METRICS}; use crate::vstate::memory::GuestMemoryMmap; use crate::vstate::vcpu::{VcpuConfig, VcpuEmulation}; @@ -796,16 +796,16 @@ mod tests { use vm_memory::GuestAddress; use super::*; - use crate::arch::x86_64::cpu_model::CpuModel; use crate::arch::BootProtocol; + use crate::arch::x86_64::cpu_model::CpuModel; use crate::cpu_config::templates::{ CpuConfiguration, CpuTemplateType, CustomCpuTemplate, GetCpuTemplate, GuestConfigError, StaticCpuTemplate, }; use crate::cpu_config::x86_64::cpuid::{Cpuid, CpuidEntry, CpuidKey}; use crate::vstate::kvm::Kvm; - use crate::vstate::vm::tests::{setup_vm, setup_vm_with_memory}; use crate::vstate::vm::Vm; + use crate::vstate::vm::tests::{setup_vm, setup_vm_with_memory}; impl Default for VcpuState { fn default() -> Self { @@ -1091,9 +1091,11 @@ mod tests { / u32::try_from(TSC_KHZ_TOL_DENOMINATOR).unwrap() / 2, ); - assert!(!vcpu - .is_tsc_scaling_required(state.tsc_khz.unwrap()) - .unwrap()); + assert!( + !vcpu + .is_tsc_scaling_required(state.tsc_khz.unwrap()) + .unwrap() + ); } { @@ -1105,9 +1107,10 @@ mod tests { / u32::try_from(TSC_KHZ_TOL_DENOMINATOR).unwrap() * 2, ); - assert!(vcpu - .is_tsc_scaling_required(state.tsc_khz.unwrap()) - .unwrap()); + assert!( + vcpu.is_tsc_scaling_required(state.tsc_khz.unwrap()) + .unwrap() + ); } { diff --git a/src/vmm/src/vstate/vm/aarch64.rs b/src/vmm/src/vstate/vm/aarch64.rs index 6aee3d8e609..5f22e1432ee 100644 --- a/src/vmm/src/vstate/vm/aarch64.rs +++ b/src/vmm/src/vstate/vm/aarch64.rs @@ -5,8 +5,8 @@ use kvm_ioctls::VmFd; use serde::{Deserialize, Serialize}; use super::VmError; -use crate::arch::aarch64::gic::GicState; use crate::Kvm; +use crate::arch::aarch64::gic::GicState; /// Structure representing the current architecture's understand of what a "virtual machine" is. #[derive(Debug)] diff --git a/src/vmm/src/vstate/vm/mod.rs b/src/vmm/src/vstate/vm/mod.rs index 5f4c7bb53c5..49c65bd92ed 100644 --- a/src/vmm/src/vstate/vm/mod.rs +++ b/src/vmm/src/vstate/vm/mod.rs @@ -5,7 +5,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the THIRD-PARTY file. -use kvm_bindings::{kvm_userspace_memory_region, KVM_MEM_LOG_DIRTY_PAGES}; +use kvm_bindings::{KVM_MEM_LOG_DIRTY_PAGES, kvm_userspace_memory_region}; use kvm_ioctls::VmFd; use vmm_sys_util::eventfd::EventFd; @@ -21,8 +21,8 @@ mod arch; pub use arch::{ArchVm as Vm, ArchVmError, VmState}; -use crate::vstate::vcpu::VcpuError; use crate::Vcpu; +use crate::vstate::vcpu::VcpuError; /// Errors associated with the wrappers over KVM ioctls. /// Needs `rustfmt::skip` to make multiline comments work diff --git a/src/vmm/src/vstate/vm/x86_64.rs b/src/vmm/src/vstate/vm/x86_64.rs index ef190b59036..69bad36c09e 100644 --- a/src/vmm/src/vstate/vm/x86_64.rs +++ b/src/vmm/src/vstate/vm/x86_64.rs @@ -4,8 +4,8 @@ use std::fmt; use kvm_bindings::{ - kvm_clock_data, kvm_irqchip, kvm_pit_config, kvm_pit_state2, MsrList, KVM_CLOCK_TSC_STABLE, - KVM_IRQCHIP_IOAPIC, KVM_IRQCHIP_PIC_MASTER, KVM_IRQCHIP_PIC_SLAVE, KVM_PIT_SPEAKER_DUMMY, + KVM_CLOCK_TSC_STABLE, KVM_IRQCHIP_IOAPIC, KVM_IRQCHIP_PIC_MASTER, KVM_IRQCHIP_PIC_SLAVE, + KVM_PIT_SPEAKER_DUMMY, MsrList, kvm_clock_data, kvm_irqchip, kvm_pit_config, kvm_pit_state2, }; use kvm_ioctls::{Cap, VmFd}; use serde::{Deserialize, Serialize}; @@ -231,8 +231,8 @@ mod tests { }; use crate::snapshot::Snapshot; - use crate::vstate::vm::tests::{setup_vm, setup_vm_with_memory}; use crate::vstate::vm::VmState; + use crate::vstate::vm::tests::{setup_vm, setup_vm_with_memory}; #[cfg(target_arch = "x86_64")] #[test] diff --git a/src/vmm/tests/integration_tests.rs b/src/vmm/tests/integration_tests.rs index a66f29e7f55..bb0ac5f3240 100644 --- a/src/vmm/tests/integration_tests.rs +++ b/src/vmm/tests/integration_tests.rs @@ -7,7 +7,7 @@ use std::time::Duration; use vmm::builder::build_and_boot_microvm; use vmm::devices::virtio::block::CacheType; -use vmm::persist::{snapshot_state_sanity_check, MicrovmState, MicrovmStateError, VmInfo}; +use vmm::persist::{MicrovmState, MicrovmStateError, VmInfo, snapshot_state_sanity_check}; use vmm::resources::VmResources; use vmm::rpc_interface::{ LoadSnapshotError, PrebootApiController, RuntimeApiController, VmmAction, VmmActionError, diff --git a/tests/integration_tests/build/test_coverage.py b/tests/integration_tests/build/test_coverage.py index 9dbd97693f6..d8ce67fa6d7 100644 --- a/tests/integration_tests/build/test_coverage.py +++ b/tests/integration_tests/build/test_coverage.py @@ -63,7 +63,7 @@ def test_coverage(monkeypatch): --ignore "**/test_utils*" \ --ignore "**/mock_*" \ --ignore "src/firecracker/examples/*" \ - --ignore "**/gen*" \ + --ignore "**/generated*" \ -t lcov \ --ignore-not-existing \ -o {lcov_file}""" diff --git a/tools/bindgen-patches/0001-change-c_char-to-c_uchar-in-ifrn_name.patch b/tools/bindgen-patches/0001-change-c_char-to-c_uchar-in-ifrn_name.patch index 59c5abff2fe..1c05555a384 100644 --- a/tools/bindgen-patches/0001-change-c_char-to-c_uchar-in-ifrn_name.patch +++ b/tools/bindgen-patches/0001-change-c_char-to-c_uchar-in-ifrn_name.patch @@ -1,16 +1,16 @@ -diff --git a/src/vmm/src/devices/virtio/net/gen/iff.rs b/src/vmm/src/devices/virtio/net/gen/iff.rs +diff --git a/src/vmm/src/devices/virtio/net/generated/iff.rs b/src/vmm/src/devices/virtio/net/generated/iff.rs index 04e38396..54111c6b 100644 ---- a/src/vmm/src/devices/virtio/net/gen/iff.rs -+++ b/src/vmm/src/devices/virtio/net/gen/iff.rs -@@ -836,7 +836,7 @@ pub struct ifreq { +--- a/src/vmm/src/devices/virtio/net/generated/iff.rs ++++ b/src/vmm/src/devices/virtio/net/generated/iff.rs +@@ -325,7 +325,7 @@ #[repr(C)] #[derive(Copy, Clone)] pub union ifreq__bindgen_ty_1 { - pub ifrn_name: [::std::os::raw::c_char; 16usize], + pub ifrn_name: [::std::os::raw::c_uchar; 16usize], } - #[test] - fn bindgen_test_layout_ifreq__bindgen_ty_1() { + #[allow(clippy::unnecessary_operation, clippy::identity_op)] + const _: () = { -- 2.40.1 diff --git a/tools/bindgen.sh b/tools/bindgen.sh index 6c64bc5be93..872b3427b67 100755 --- a/tools/bindgen.sh +++ b/tools/bindgen.sh @@ -34,7 +34,8 @@ function fc-bindgen { clippy::ptr_as_ptr, clippy::undocumented_unsafe_blocks, missing_debug_implementations, - clippy::tests_outside_test_module + clippy::tests_outside_test_module, + unsafe_op_in_unsafe_fn )] EOF @@ -44,14 +45,14 @@ EOF KERNEL_HEADERS_HOME="/usr" info "BINDGEN sockios.h" -fc-bindgen "$KERNEL_HEADERS_HOME/include/linux/sockios.h" |replace_linux_int_types >src/vmm/src/devices/virtio/net/gen/sockios.rs +fc-bindgen "$KERNEL_HEADERS_HOME/include/linux/sockios.h" |replace_linux_int_types >src/vmm/src/devices/virtio/net/generated/sockios.rs info "BINDGEN if.h" fc-bindgen "$KERNEL_HEADERS_HOME/include/linux/if.h" \ --allowlist-var='IF.*' \ --allowlist-type='if.*' \ --allowlist-type="net_device.*" \ - -- -D __UAPI_DEF_IF_IFNAMSIZ -D __UAPI_DEF_IF_NET_DEVICE_FLAGS -D __UAPI_DEF_IF_IFREQ -D __UAPI_DEF_IF_IFMAP >src/vmm/src/devices/virtio/net/gen/iff.rs + -- -D __UAPI_DEF_IF_IFNAMSIZ -D __UAPI_DEF_IF_NET_DEVICE_FLAGS -D __UAPI_DEF_IF_IFREQ -D __UAPI_DEF_IF_IFMAP >src/vmm/src/devices/virtio/net/generated/iff.rs info "BINDGEN if_tun.h" fc-bindgen \ @@ -63,37 +64,37 @@ fc-bindgen \ --allowlist-var='IFF_VNET_HDR' \ --allowlist-var='ETH_.*' \ --allowlist-type='ifreq' \ - "$KERNEL_HEADERS_HOME/include/linux/if_tun.h" >src/vmm/src/devices/virtio/net/gen/if_tun.rs + "$KERNEL_HEADERS_HOME/include/linux/if_tun.h" >src/vmm/src/devices/virtio/net/generated/if_tun.rs info "BINDGEN virtio_ring.h" fc-bindgen \ --allowlist-var "VIRTIO_RING_F_EVENT_IDX" \ - "$KERNEL_HEADERS_HOME/include/linux/virtio_ring.h" >src/vmm/src/devices/virtio/gen/virtio_ring.rs + "$KERNEL_HEADERS_HOME/include/linux/virtio_ring.h" >src/vmm/src/devices/virtio/generated/virtio_ring.rs info "BINDGEN virtio_blk.h" fc-bindgen \ --allowlist-var "VIRTIO_BLK_.*" \ --allowlist-var "VIRTIO_F_.*" \ - "$KERNEL_HEADERS_HOME/include/linux/virtio_blk.h" >src/vmm/src/devices/virtio/gen/virtio_blk.rs + "$KERNEL_HEADERS_HOME/include/linux/virtio_blk.h" >src/vmm/src/devices/virtio/generated/virtio_blk.rs info "BINDGEN virtio_net.h" fc-bindgen \ --allowlist-var "VIRTIO_NET_F_.*" \ --allowlist-var "VIRTIO_F_.*" \ --allowlist-type "virtio_net_hdr_v1" \ - "$KERNEL_HEADERS_HOME/include/linux/virtio_net.h" >src/vmm/src/devices/virtio/gen/virtio_net.rs + "$KERNEL_HEADERS_HOME/include/linux/virtio_net.h" >src/vmm/src/devices/virtio/generated/virtio_net.rs info "BINDGEN virtio_rng.h" fc-bindgen \ --allowlist-var "VIRTIO_RNG_.*" \ --allowlist-var "VIRTIO_F_.*" \ - "$KERNEL_HEADERS_HOME/include/linux/virtio_rng.h" >src/vmm/src/devices/virtio/gen/virtio_rng.rs + "$KERNEL_HEADERS_HOME/include/linux/virtio_rng.h" >src/vmm/src/devices/virtio/generated/virtio_rng.rs info "BINDGEN prctl.h" fc-bindgen \ --allowlist-var "PR_.*" \ - "$KERNEL_HEADERS_HOME/include/linux/prctl.h" >src/firecracker/src/gen/prctl.rs -sed -i '/PR_SET_SPECULATION_CTRL/s/u32/i32/g' src/firecracker/src/gen/prctl.rs + "$KERNEL_HEADERS_HOME/include/linux/prctl.h" >src/firecracker/src/generated/prctl.rs +sed -i '/PR_SET_SPECULATION_CTRL/s/u32/i32/g' src/firecracker/src/generated/prctl.rs # https://www.kernel.org/doc/Documentation/kbuild/headers_install.txt # The Linux repo is huge. Just copy what we need. @@ -102,7 +103,7 @@ git clone --branch linux-5.10.y --depth 1 https://github.com/amazonlinux/linux a info "BINDGEN mpspec_def.h" fc-bindgen amazonlinux-v5.10.y/arch/x86/include/asm/mpspec_def.h \ - >src/vmm/src/arch/x86_64/gen/mpspec.rs + >src/vmm/src/arch/x86_64/generated/mpspec.rs # https://github.com/rust-lang/rust-bindgen/issues/1274 info "BINDGEN msr-index.h" @@ -114,8 +115,8 @@ fc-bindgen amazonlinux-v5.10.y/arch/x86/include/asm/msr-index.h \ -Iamazonlinux-v5.10.y/include/ \ -Iamazonlinux-v5.10.y/arch/x86/include/ \ -Wno-macro-redefined \ - >src/vmm/src/arch/x86_64/gen/msr_index.rs -perl -i -pe 's/= (\d+);/sprintf("= 0x%x;",$1)/eg' src/vmm/src/arch/x86_64/gen/msr_index.rs + >src/vmm/src/arch/x86_64/generated/msr_index.rs +perl -i -pe 's/= (\d+);/sprintf("= 0x%x;",$1)/eg' src/vmm/src/arch/x86_64/generated/msr_index.rs info "BINDGEN perf_event.h" grep "MSR_ARCH_PERFMON_" amazonlinux-v5.10.y/arch/x86/include/asm/perf_event.h \ @@ -123,8 +124,8 @@ grep "MSR_ARCH_PERFMON_" amazonlinux-v5.10.y/arch/x86/include/asm/perf_event.h \ fc-bindgen amazonlinux-v5.10.y/arch/x86/include/asm/perf_event_msr.h \ --allowlist-var "^MSR_ARCH_PERFMON_.*$" \ -- \ - >src/vmm/src/arch/x86_64/gen/perf_event.rs -perl -i -pe 's/= (\d+);/sprintf("= 0x%x;",$1)/eg' src/vmm/src/arch/x86_64/gen/perf_event.rs + >src/vmm/src/arch/x86_64/generated/perf_event.rs +perl -i -pe 's/= (\d+);/sprintf("= 0x%x;",$1)/eg' src/vmm/src/arch/x86_64/generated/perf_event.rs info "BINDGEN hyperv.h" grep "HV_X64_MSR_" amazonlinux-v5.10.y/arch/x86/kvm/hyperv.h \ @@ -132,8 +133,8 @@ grep "HV_X64_MSR_" amazonlinux-v5.10.y/arch/x86/kvm/hyperv.h \ fc-bindgen amazonlinux-v5.10.y/arch/x86/kvm/hyperv_msr.h \ --allowlist-var "^HV_X64_MSR_.*$" \ -- \ - >src/vmm/src/arch/x86_64/gen/hyperv.rs -perl -i -pe 's/= (\d+);/sprintf("= 0x%x;",$1)/eg' src/vmm/src/arch/x86_64/gen/hyperv.rs + >src/vmm/src/arch/x86_64/generated/hyperv.rs +perl -i -pe 's/= (\d+);/sprintf("= 0x%x;",$1)/eg' src/vmm/src/arch/x86_64/generated/hyperv.rs info "BINDGEN hyperv-tlfs.h" grep "HV_X64_MSR_" amazonlinux-v5.10.y/arch/x86/include/asm/hyperv-tlfs.h \ @@ -141,8 +142,8 @@ grep "HV_X64_MSR_" amazonlinux-v5.10.y/arch/x86/include/asm/hyperv-tlfs.h \ fc-bindgen amazonlinux-v5.10.y/arch/x86/include/asm/hyperv-tlfs_msr.h \ --allowlist-var "^HV_X64_MSR_.*$" \ -- \ - >src/vmm/src/arch/x86_64/gen/hyperv_tlfs.rs -perl -i -pe 's/= (\d+);/sprintf("= 0x%x;",$1)/eg' src/vmm/src/arch/x86_64/gen/hyperv_tlfs.rs + >src/vmm/src/arch/x86_64/generated/hyperv_tlfs.rs +perl -i -pe 's/= (\d+);/sprintf("= 0x%x;",$1)/eg' src/vmm/src/arch/x86_64/generated/hyperv_tlfs.rs info "BINDGEN io_uring.h" fc-bindgen \ @@ -152,7 +153,7 @@ fc-bindgen \ --allowlist-type "io_uring_.+" \ --allowlist-type "io_.qring_offsets" \ "amazonlinux-v5.10.y/include/uapi/linux/io_uring.h" \ - >src/vmm/src/io_uring/gen.rs + >src/vmm/src/io_uring/generated.rs # Latest upstream kernel KERNEL_SRC_DIR="linux" @@ -161,7 +162,7 @@ KERNEL_SRC_DIR="linux" info "BINDGEN asm/prctl.h" fc-bindgen \ --allowlist-var "ARCH_.*" \ - "${KERNEL_SRC_DIR}/arch/x86/include/uapi/asm/prctl.h" >src/vmm/src/arch/x86_64/gen/arch_prctl.rs + "${KERNEL_SRC_DIR}/arch/x86/include/uapi/asm/prctl.h" >src/vmm/src/arch/x86_64/generated/arch_prctl.rs # Apply any patches info "Apply patches" diff --git a/tools/devctr/Dockerfile b/tools/devctr/Dockerfile index f855033fc4d..0448f2231dc 100644 --- a/tools/devctr/Dockerfile +++ b/tools/devctr/Dockerfile @@ -4,7 +4,7 @@ FROM public.ecr.aws/lts/ubuntu:24.04 # The Rust toolchain layer will get updated most frequently, but we could keep the system # dependencies layer intact for much longer. -ARG RUST_TOOLCHAIN="1.83.0" +ARG RUST_TOOLCHAIN="1.85.0" ARG TMP_BUILD_DIR=/tmp/build ARG DEBIAN_FRONTEND=noninteractive ARG PIP_BREAK_SYSTEM_PACKAGES=1 diff --git a/tools/devctr/poetry.lock b/tools/devctr/poetry.lock index b04d05efac9..b0ed4ce0f3b 100644 --- a/tools/devctr/poetry.lock +++ b/tools/devctr/poetry.lock @@ -1,99 +1,106 @@ -# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.0.0 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" -version = "2.4.4" +version = "2.6.1" description = "Happy Eyeballs for asyncio" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8"}, - {file = "aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745"}, + {file = "aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8"}, + {file = "aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558"}, ] [[package]] name = "aiohttp" -version = "3.11.10" +version = "3.11.13" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.9" -files = [ - {file = "aiohttp-3.11.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cbad88a61fa743c5d283ad501b01c153820734118b65aee2bd7dbb735475ce0d"}, - {file = "aiohttp-3.11.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80886dac673ceaef499de2f393fc80bb4481a129e6cb29e624a12e3296cc088f"}, - {file = "aiohttp-3.11.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61b9bae80ed1f338c42f57c16918853dc51775fb5cb61da70d590de14d8b5fb4"}, - {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e2e576caec5c6a6b93f41626c9c02fc87cd91538b81a3670b2e04452a63def6"}, - {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02c13415b5732fb6ee7ff64583a5e6ed1c57aa68f17d2bda79c04888dfdc2769"}, - {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfce37f31f20800a6a6620ce2cdd6737b82e42e06e6e9bd1b36f546feb3c44f"}, - {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3bbbfff4c679c64e6e23cb213f57cc2c9165c9a65d63717108a644eb5a7398df"}, - {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49c7dbbc1a559ae14fc48387a115b7d4bbc84b4a2c3b9299c31696953c2a5219"}, - {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:68386d78743e6570f054fe7949d6cb37ef2b672b4d3405ce91fafa996f7d9b4d"}, - {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9ef405356ba989fb57f84cac66f7b0260772836191ccefbb987f414bcd2979d9"}, - {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5d6958671b296febe7f5f859bea581a21c1d05430d1bbdcf2b393599b1cdce77"}, - {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:99b7920e7165be5a9e9a3a7f1b680f06f68ff0d0328ff4079e5163990d046767"}, - {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0dc49f42422163efb7e6f1df2636fe3db72713f6cd94688e339dbe33fe06d61d"}, - {file = "aiohttp-3.11.10-cp310-cp310-win32.whl", hash = "sha256:40d1c7a7f750b5648642586ba7206999650208dbe5afbcc5284bcec6579c9b91"}, - {file = "aiohttp-3.11.10-cp310-cp310-win_amd64.whl", hash = "sha256:68ff6f48b51bd78ea92b31079817aff539f6c8fc80b6b8d6ca347d7c02384e33"}, - {file = "aiohttp-3.11.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:77c4aa15a89847b9891abf97f3d4048f3c2d667e00f8a623c89ad2dccee6771b"}, - {file = "aiohttp-3.11.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:909af95a72cedbefe5596f0bdf3055740f96c1a4baa0dd11fd74ca4de0b4e3f1"}, - {file = "aiohttp-3.11.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:386fbe79863eb564e9f3615b959e28b222259da0c48fd1be5929ac838bc65683"}, - {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3de34936eb1a647aa919655ff8d38b618e9f6b7f250cc19a57a4bf7fd2062b6d"}, - {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c9527819b29cd2b9f52033e7fb9ff08073df49b4799c89cb5754624ecd98299"}, - {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a96e3e03300b41f261bbfd40dfdbf1c301e87eab7cd61c054b1f2e7c89b9e8"}, - {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f5635f7b74bcd4f6f72fcd85bea2154b323a9f05226a80bc7398d0c90763b0"}, - {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:03b6002e20938fc6ee0918c81d9e776bebccc84690e2b03ed132331cca065ee5"}, - {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6362cc6c23c08d18ddbf0e8c4d5159b5df74fea1a5278ff4f2c79aed3f4e9f46"}, - {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3691ed7726fef54e928fe26344d930c0c8575bc968c3e239c2e1a04bd8cf7838"}, - {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31d5093d3acd02b31c649d3a69bb072d539d4c7659b87caa4f6d2bcf57c2fa2b"}, - {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8b3cf2dc0f0690a33f2d2b2cb15db87a65f1c609f53c37e226f84edb08d10f52"}, - {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fbbaea811a2bba171197b08eea288b9402faa2bab2ba0858eecdd0a4105753a3"}, - {file = "aiohttp-3.11.10-cp311-cp311-win32.whl", hash = "sha256:4b2c7ac59c5698a7a8207ba72d9e9c15b0fc484a560be0788b31312c2c5504e4"}, - {file = "aiohttp-3.11.10-cp311-cp311-win_amd64.whl", hash = "sha256:974d3a2cce5fcfa32f06b13ccc8f20c6ad9c51802bb7f829eae8a1845c4019ec"}, - {file = "aiohttp-3.11.10-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b78f053a7ecfc35f0451d961dacdc671f4bcbc2f58241a7c820e9d82559844cf"}, - {file = "aiohttp-3.11.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab7485222db0959a87fbe8125e233b5a6f01f4400785b36e8a7878170d8c3138"}, - {file = "aiohttp-3.11.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf14627232dfa8730453752e9cdc210966490992234d77ff90bc8dc0dce361d5"}, - {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:076bc454a7e6fd646bc82ea7f98296be0b1219b5e3ef8a488afbdd8e81fbac50"}, - {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:482cafb7dc886bebeb6c9ba7925e03591a62ab34298ee70d3dd47ba966370d2c"}, - {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf3d1a519a324af764a46da4115bdbd566b3c73fb793ffb97f9111dbc684fc4d"}, - {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24213ba85a419103e641e55c27dc7ff03536c4873470c2478cce3311ba1eee7b"}, - {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b99acd4730ad1b196bfb03ee0803e4adac371ae8efa7e1cbc820200fc5ded109"}, - {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:14cdb5a9570be5a04eec2ace174a48ae85833c2aadc86de68f55541f66ce42ab"}, - {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7e97d622cb083e86f18317282084bc9fbf261801b0192c34fe4b1febd9f7ae69"}, - {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:012f176945af138abc10c4a48743327a92b4ca9adc7a0e078077cdb5dbab7be0"}, - {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44224d815853962f48fe124748227773acd9686eba6dc102578defd6fc99e8d9"}, - {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c87bf31b7fdab94ae3adbe4a48e711bfc5f89d21cf4c197e75561def39e223bc"}, - {file = "aiohttp-3.11.10-cp312-cp312-win32.whl", hash = "sha256:06a8e2ee1cbac16fe61e51e0b0c269400e781b13bcfc33f5425912391a542985"}, - {file = "aiohttp-3.11.10-cp312-cp312-win_amd64.whl", hash = "sha256:be2b516f56ea883a3e14dda17059716593526e10fb6303189aaf5503937db408"}, - {file = "aiohttp-3.11.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8cc5203b817b748adccb07f36390feb730b1bc5f56683445bfe924fc270b8816"}, - {file = "aiohttp-3.11.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ef359ebc6949e3a34c65ce20230fae70920714367c63afd80ea0c2702902ccf"}, - {file = "aiohttp-3.11.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9bca390cb247dbfaec3c664326e034ef23882c3f3bfa5fbf0b56cad0320aaca5"}, - {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:811f23b3351ca532af598405db1093f018edf81368e689d1b508c57dcc6b6a32"}, - {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddf5f7d877615f6a1e75971bfa5ac88609af3b74796ff3e06879e8422729fd01"}, - {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ab29b8a0beb6f8eaf1e5049252cfe74adbaafd39ba91e10f18caeb0e99ffb34"}, - {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c49a76c1038c2dd116fa443eba26bbb8e6c37e924e2513574856de3b6516be99"}, - {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f3dc0e330575f5b134918976a645e79adf333c0a1439dcf6899a80776c9ab39"}, - {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:efb15a17a12497685304b2d976cb4939e55137df7b09fa53f1b6a023f01fcb4e"}, - {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:db1d0b28fcb7f1d35600150c3e4b490775251dea70f894bf15c678fdd84eda6a"}, - {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:15fccaf62a4889527539ecb86834084ecf6e9ea70588efde86e8bc775e0e7542"}, - {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:593c114a2221444f30749cc5e5f4012488f56bd14de2af44fe23e1e9894a9c60"}, - {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7852bbcb4d0d2f0c4d583f40c3bc750ee033265d80598d0f9cb6f372baa6b836"}, - {file = "aiohttp-3.11.10-cp313-cp313-win32.whl", hash = "sha256:65e55ca7debae8faaffee0ebb4b47a51b4075f01e9b641c31e554fd376595c6c"}, - {file = "aiohttp-3.11.10-cp313-cp313-win_amd64.whl", hash = "sha256:beb39a6d60a709ae3fb3516a1581777e7e8b76933bb88c8f4420d875bb0267c6"}, - {file = "aiohttp-3.11.10-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0580f2e12de2138f34debcd5d88894786453a76e98febaf3e8fe5db62d01c9bf"}, - {file = "aiohttp-3.11.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a55d2ad345684e7c3dd2c20d2f9572e9e1d5446d57200ff630e6ede7612e307f"}, - {file = "aiohttp-3.11.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04814571cb72d65a6899db6099e377ed00710bf2e3eafd2985166f2918beaf59"}, - {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e44a9a3c053b90c6f09b1bb4edd880959f5328cf63052503f892c41ea786d99f"}, - {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:502a1464ccbc800b4b1995b302efaf426e8763fadf185e933c2931df7db9a199"}, - {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:613e5169f8ae77b1933e42e418a95931fb4867b2991fc311430b15901ed67079"}, - {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cca22a61b7fe45da8fc73c3443150c3608750bbe27641fc7558ec5117b27fdf"}, - {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:86a5dfcc39309470bd7b68c591d84056d195428d5d2e0b5ccadfbaf25b026ebc"}, - {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:77ae58586930ee6b2b6f696c82cf8e78c8016ec4795c53e36718365f6959dc82"}, - {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:78153314f26d5abef3239b4a9af20c229c6f3ecb97d4c1c01b22c4f87669820c"}, - {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:98283b94cc0e11c73acaf1c9698dea80c830ca476492c0fe2622bd931f34b487"}, - {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:53bf2097e05c2accc166c142a2090e4c6fd86581bde3fd9b2d3f9e93dda66ac1"}, - {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c5532f0441fc09c119e1dca18fbc0687e64fbeb45aa4d6a87211ceaee50a74c4"}, - {file = "aiohttp-3.11.10-cp39-cp39-win32.whl", hash = "sha256:47ad15a65fb41c570cd0ad9a9ff8012489e68176e7207ec7b82a0940dddfd8be"}, - {file = "aiohttp-3.11.10-cp39-cp39-win_amd64.whl", hash = "sha256:c6b9e6d7e41656d78e37ce754813fa44b455c3d0d0dced2a047def7dc5570b74"}, - {file = "aiohttp-3.11.10.tar.gz", hash = "sha256:b1fc6b45010a8d0ff9e88f9f2418c6fd408c99c211257334aff41597ebece42e"}, +groups = ["main"] +files = [ + {file = "aiohttp-3.11.13-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a4fe27dbbeec445e6e1291e61d61eb212ee9fed6e47998b27de71d70d3e8777d"}, + {file = "aiohttp-3.11.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9e64ca2dbea28807f8484c13f684a2f761e69ba2640ec49dacd342763cc265ef"}, + {file = "aiohttp-3.11.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9840be675de208d1f68f84d578eaa4d1a36eee70b16ae31ab933520c49ba1325"}, + {file = "aiohttp-3.11.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28a772757c9067e2aee8a6b2b425d0efaa628c264d6416d283694c3d86da7689"}, + {file = "aiohttp-3.11.13-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b88aca5adbf4625e11118df45acac29616b425833c3be7a05ef63a6a4017bfdb"}, + {file = "aiohttp-3.11.13-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce10ddfbe26ed5856d6902162f71b8fe08545380570a885b4ab56aecfdcb07f4"}, + {file = "aiohttp-3.11.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa48dac27f41b36735c807d1ab093a8386701bbf00eb6b89a0f69d9fa26b3671"}, + {file = "aiohttp-3.11.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89ce611b1eac93ce2ade68f1470889e0173d606de20c85a012bfa24be96cf867"}, + {file = "aiohttp-3.11.13-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:78e4dd9c34ec7b8b121854eb5342bac8b02aa03075ae8618b6210a06bbb8a115"}, + {file = "aiohttp-3.11.13-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:66047eacbc73e6fe2462b77ce39fc170ab51235caf331e735eae91c95e6a11e4"}, + {file = "aiohttp-3.11.13-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5ad8f1c19fe277eeb8bc45741c6d60ddd11d705c12a4d8ee17546acff98e0802"}, + {file = "aiohttp-3.11.13-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:64815c6f02e8506b10113ddbc6b196f58dbef135751cc7c32136df27b736db09"}, + {file = "aiohttp-3.11.13-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:967b93f21b426f23ca37329230d5bd122f25516ae2f24a9cea95a30023ff8283"}, + {file = "aiohttp-3.11.13-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cf1f31f83d16ec344136359001c5e871915c6ab685a3d8dee38e2961b4c81730"}, + {file = "aiohttp-3.11.13-cp310-cp310-win32.whl", hash = "sha256:00c8ac69e259c60976aa2edae3f13d9991cf079aaa4d3cd5a49168ae3748dee3"}, + {file = "aiohttp-3.11.13-cp310-cp310-win_amd64.whl", hash = "sha256:90d571c98d19a8b6e793b34aa4df4cee1e8fe2862d65cc49185a3a3d0a1a3996"}, + {file = "aiohttp-3.11.13-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b35aab22419ba45f8fc290d0010898de7a6ad131e468ffa3922b1b0b24e9d2e"}, + {file = "aiohttp-3.11.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f81cba651db8795f688c589dd11a4fbb834f2e59bbf9bb50908be36e416dc760"}, + {file = "aiohttp-3.11.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f55d0f242c2d1fcdf802c8fabcff25a9d85550a4cf3a9cf5f2a6b5742c992839"}, + {file = "aiohttp-3.11.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4bea08a6aad9195ac9b1be6b0c7e8a702a9cec57ce6b713698b4a5afa9c2e33"}, + {file = "aiohttp-3.11.13-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6070bcf2173a7146bb9e4735b3c62b2accba459a6eae44deea0eb23e0035a23"}, + {file = "aiohttp-3.11.13-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:718d5deb678bc4b9d575bfe83a59270861417da071ab44542d0fcb6faa686636"}, + {file = "aiohttp-3.11.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f6b2c5b4a4d22b8fb2c92ac98e0747f5f195e8e9448bfb7404cd77e7bfa243f"}, + {file = "aiohttp-3.11.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:747ec46290107a490d21fe1ff4183bef8022b848cf9516970cb31de6d9460088"}, + {file = "aiohttp-3.11.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:01816f07c9cc9d80f858615b1365f8319d6a5fd079cd668cc58e15aafbc76a54"}, + {file = "aiohttp-3.11.13-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:a08ad95fcbd595803e0c4280671d808eb170a64ca3f2980dd38e7a72ed8d1fea"}, + {file = "aiohttp-3.11.13-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c97be90d70f7db3aa041d720bfb95f4869d6063fcdf2bb8333764d97e319b7d0"}, + {file = "aiohttp-3.11.13-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ab915a57c65f7a29353c8014ac4be685c8e4a19e792a79fe133a8e101111438e"}, + {file = "aiohttp-3.11.13-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:35cda4e07f5e058a723436c4d2b7ba2124ab4e0aa49e6325aed5896507a8a42e"}, + {file = "aiohttp-3.11.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:af55314407714fe77a68a9ccaab90fdb5deb57342585fd4a3a8102b6d4370080"}, + {file = "aiohttp-3.11.13-cp311-cp311-win32.whl", hash = "sha256:42d689a5c0a0c357018993e471893e939f555e302313d5c61dfc566c2cad6185"}, + {file = "aiohttp-3.11.13-cp311-cp311-win_amd64.whl", hash = "sha256:b73a2b139782a07658fbf170fe4bcdf70fc597fae5ffe75e5b67674c27434a9f"}, + {file = "aiohttp-3.11.13-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2eabb269dc3852537d57589b36d7f7362e57d1ece308842ef44d9830d2dc3c90"}, + {file = "aiohttp-3.11.13-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7b77ee42addbb1c36d35aca55e8cc6d0958f8419e458bb70888d8c69a4ca833d"}, + {file = "aiohttp-3.11.13-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55789e93c5ed71832e7fac868167276beadf9877b85697020c46e9a75471f55f"}, + {file = "aiohttp-3.11.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c929f9a7249a11e4aa5c157091cfad7f49cc6b13f4eecf9b747104befd9f56f2"}, + {file = "aiohttp-3.11.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d33851d85537bbf0f6291ddc97926a754c8f041af759e0aa0230fe939168852b"}, + {file = "aiohttp-3.11.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9229d8613bd8401182868fe95688f7581673e1c18ff78855671a4b8284f47bcb"}, + {file = "aiohttp-3.11.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:669dd33f028e54fe4c96576f406ebb242ba534dd3a981ce009961bf49960f117"}, + {file = "aiohttp-3.11.13-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c1b20a1ace54af7db1f95af85da530fe97407d9063b7aaf9ce6a32f44730778"}, + {file = "aiohttp-3.11.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5724cc77f4e648362ebbb49bdecb9e2b86d9b172c68a295263fa072e679ee69d"}, + {file = "aiohttp-3.11.13-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:aa36c35e94ecdb478246dd60db12aba57cfcd0abcad43c927a8876f25734d496"}, + {file = "aiohttp-3.11.13-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9b5b37c863ad5b0892cc7a4ceb1e435e5e6acd3f2f8d3e11fa56f08d3c67b820"}, + {file = "aiohttp-3.11.13-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e06cf4852ce8c4442a59bae5a3ea01162b8fcb49ab438d8548b8dc79375dad8a"}, + {file = "aiohttp-3.11.13-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5194143927e494616e335d074e77a5dac7cd353a04755330c9adc984ac5a628e"}, + {file = "aiohttp-3.11.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:afcb6b275c2d2ba5d8418bf30a9654fa978b4f819c2e8db6311b3525c86fe637"}, + {file = "aiohttp-3.11.13-cp312-cp312-win32.whl", hash = "sha256:7104d5b3943c6351d1ad7027d90bdd0ea002903e9f610735ac99df3b81f102ee"}, + {file = "aiohttp-3.11.13-cp312-cp312-win_amd64.whl", hash = "sha256:47dc018b1b220c48089b5b9382fbab94db35bef2fa192995be22cbad3c5730c8"}, + {file = "aiohttp-3.11.13-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9862d077b9ffa015dbe3ce6c081bdf35135948cb89116e26667dd183550833d1"}, + {file = "aiohttp-3.11.13-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fbfef0666ae9e07abfa2c54c212ac18a1f63e13e0760a769f70b5717742f3ece"}, + {file = "aiohttp-3.11.13-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:93a1f7d857c4fcf7cabb1178058182c789b30d85de379e04f64c15b7e88d66fb"}, + {file = "aiohttp-3.11.13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba40b7ae0f81c7029583a338853f6607b6d83a341a3dcde8bed1ea58a3af1df9"}, + {file = "aiohttp-3.11.13-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5b95787335c483cd5f29577f42bbe027a412c5431f2f80a749c80d040f7ca9f"}, + {file = "aiohttp-3.11.13-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7d474c5c1f0b9405c1565fafdc4429fa7d986ccbec7ce55bc6a330f36409cad"}, + {file = "aiohttp-3.11.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e83fb1991e9d8982b3b36aea1e7ad27ea0ce18c14d054c7a404d68b0319eebb"}, + {file = "aiohttp-3.11.13-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4586a68730bd2f2b04a83e83f79d271d8ed13763f64b75920f18a3a677b9a7f0"}, + {file = "aiohttp-3.11.13-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fe4eb0e7f50cdb99b26250d9328faef30b1175a5dbcfd6d0578d18456bac567"}, + {file = "aiohttp-3.11.13-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2a8a6bc19818ac3e5596310ace5aa50d918e1ebdcc204dc96e2f4d505d51740c"}, + {file = "aiohttp-3.11.13-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7f27eec42f6c3c1df09cfc1f6786308f8b525b8efaaf6d6bd76c1f52c6511f6a"}, + {file = "aiohttp-3.11.13-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:2a4a13dfbb23977a51853b419141cd0a9b9573ab8d3a1455c6e63561387b52ff"}, + {file = "aiohttp-3.11.13-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:02876bf2f69b062584965507b07bc06903c2dc93c57a554b64e012d636952654"}, + {file = "aiohttp-3.11.13-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b992778d95b60a21c4d8d4a5f15aaab2bd3c3e16466a72d7f9bfd86e8cea0d4b"}, + {file = "aiohttp-3.11.13-cp313-cp313-win32.whl", hash = "sha256:507ab05d90586dacb4f26a001c3abf912eb719d05635cbfad930bdbeb469b36c"}, + {file = "aiohttp-3.11.13-cp313-cp313-win_amd64.whl", hash = "sha256:5ceb81a4db2decdfa087381b5fc5847aa448244f973e5da232610304e199e7b2"}, + {file = "aiohttp-3.11.13-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:51c3ff9c7a25f3cad5c09d9aacbc5aefb9267167c4652c1eb737989b554fe278"}, + {file = "aiohttp-3.11.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e271beb2b1dabec5cd84eb488bdabf9758d22ad13471e9c356be07ad139b3012"}, + {file = "aiohttp-3.11.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0e9eb7e5764abcb49f0e2bd8f5731849b8728efbf26d0cac8e81384c95acec3f"}, + {file = "aiohttp-3.11.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baae005092e3f200de02699314ac8933ec20abf998ec0be39448f6605bce93df"}, + {file = "aiohttp-3.11.13-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1982c98ac62c132d2b773d50e2fcc941eb0b8bad3ec078ce7e7877c4d5a2dce7"}, + {file = "aiohttp-3.11.13-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2b25b2eeb35707113b2d570cadc7c612a57f1c5d3e7bb2b13870fe284e08fc0"}, + {file = "aiohttp-3.11.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b27961d65639128336b7a7c3f0046dcc62a9443d5ef962e3c84170ac620cec47"}, + {file = "aiohttp-3.11.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01fe9f1e05025eacdd97590895e2737b9f851d0eb2e017ae9574d9a4f0b6252"}, + {file = "aiohttp-3.11.13-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa1fb1b61881c8405829c50e9cc5c875bfdbf685edf57a76817dfb50643e4a1a"}, + {file = "aiohttp-3.11.13-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:25de43bb3cf83ad83efc8295af7310219af6dbe4c543c2e74988d8e9c8a2a917"}, + {file = "aiohttp-3.11.13-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fe7065e2215e4bba63dc00db9ae654c1ba3950a5fff691475a32f511142fcddb"}, + {file = "aiohttp-3.11.13-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:7836587eef675a17d835ec3d98a8c9acdbeb2c1d72b0556f0edf4e855a25e9c1"}, + {file = "aiohttp-3.11.13-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:85fa0b18558eb1427090912bd456a01f71edab0872f4e0f9e4285571941e4090"}, + {file = "aiohttp-3.11.13-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a86dc177eb4c286c19d1823ac296299f59ed8106c9536d2b559f65836e0fb2c6"}, + {file = "aiohttp-3.11.13-cp39-cp39-win32.whl", hash = "sha256:684eea71ab6e8ade86b9021bb62af4bf0881f6be4e926b6b5455de74e420783a"}, + {file = "aiohttp-3.11.13-cp39-cp39-win_amd64.whl", hash = "sha256:82c249f2bfa5ecbe4a1a7902c81c0fba52ed9ebd0176ab3047395d02ad96cfcb"}, + {file = "aiohttp-3.11.13.tar.gz", hash = "sha256:8ce789231404ca8fff7f693cdce398abf6d90fd5dae2b1847477196c243b1fbb"}, ] [package.dependencies] @@ -111,13 +118,14 @@ speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] [[package]] name = "aiosignal" -version = "1.3.1" +version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, - {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, + {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, + {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, ] [package.dependencies] @@ -129,6 +137,7 @@ version = "1.2.3" description = "Better dates & times for Python" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "arrow-1.2.3-py3-none-any.whl", hash = "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2"}, {file = "arrow-1.2.3.tar.gz", hash = "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1"}, @@ -139,13 +148,14 @@ python-dateutil = ">=2.7.0" [[package]] name = "astroid" -version = "3.3.6" +version = "3.3.9" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.9.0" +groups = ["main"] files = [ - {file = "astroid-3.3.6-py3-none-any.whl", hash = "sha256:db676dc4f3ae6bfe31cda227dc60e03438378d7a896aec57422c95634e8d722f"}, - {file = "astroid-3.3.6.tar.gz", hash = "sha256:6aaea045f938c735ead292204afdb977a36e989522b7833ef6fea94de743f442"}, + {file = "astroid-3.3.9-py3-none-any.whl", hash = "sha256:d05bfd0acba96a7bd43e222828b7d9bc1e138aaeb0649707908d3702a9831248"}, + {file = "astroid-3.3.9.tar.gz", hash = "sha256:622cc8e3048684aa42c820d9d218978021c3c3d174fb03a9f0d615921744f550"}, ] [package.dependencies] @@ -157,6 +167,7 @@ version = "3.0.0" description = "Annotate AST trees with source code positions" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, @@ -172,6 +183,8 @@ version = "5.0.1" description = "Timeout context manager for asyncio programs" optional = false python-versions = ">=3.8" +groups = ["main"] +markers = "python_version < \"3.11\"" files = [ {file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"}, {file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"}, @@ -179,32 +192,34 @@ files = [ [[package]] name = "attrs" -version = "24.2.0" +version = "25.2.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, + {file = "attrs-25.2.0-py3-none-any.whl", hash = "sha256:611344ff0a5fed735d86d7784610c84f8126b95e549bcad9ff61b4242f2d386b"}, + {file = "attrs-25.2.0.tar.gz", hash = "sha256:18a06db706db43ac232cce80443fcd9f2500702059ecf53489e3c5a3f417acaf"}, ] [package.extras] benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "aws-embedded-metrics" -version = "3.2.0" +version = "3.3.0" description = "AWS Embedded Metrics Package" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ - {file = "aws-embedded-metrics-3.2.0.tar.gz", hash = "sha256:f235f87ab25ff328f6f3afca1c6b3218e81eea6e96e6aee012d368bb813fae7b"}, - {file = "aws_embedded_metrics-3.2.0-py3-none-any.whl", hash = "sha256:887b76d24914efa5fc42a7b77983e77fc670633e6e1195aac7653c425fee7399"}, + {file = "aws-embedded-metrics-3.3.0.tar.gz", hash = "sha256:f417c396b394959f923d5b53cfe241d01a0ccded60c8f30d9231ff05c8235ec5"}, + {file = "aws_embedded_metrics-3.3.0-py3-none-any.whl", hash = "sha256:03901a28786a93e718ddb7342a917c3a3c8204c31195edb36151d8b7eef361b3"}, ] [package.dependencies] @@ -216,6 +231,7 @@ version = "24.10.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, @@ -258,127 +274,116 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2024.8.30" +version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, ] [[package]] name = "charset-normalizer" -version = "3.4.0" +version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false -python-versions = ">=3.7.0" -files = [ - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, - {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, - {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, - {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, - {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, - {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, - {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, - {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, - {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, - {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, + {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, + {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, ] [[package]] @@ -387,6 +392,7 @@ version = "8.1.3" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, @@ -401,6 +407,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] +markers = "platform_system == \"Windows\" or sys_platform == \"win32\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -408,13 +416,14 @@ files = [ [[package]] name = "decorator" -version = "5.1.1" +version = "5.2.1" description = "Decorators for Humans" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, + {file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a"}, + {file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360"}, ] [[package]] @@ -423,6 +432,7 @@ version = "0.3.9" description = "serialize all of Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, @@ -438,6 +448,8 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["main"] +markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -452,6 +464,7 @@ version = "2.1.1" description = "execnet: rapid multi-Python deployment" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"}, {file = "execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"}, @@ -462,13 +475,14 @@ testing = ["hatch", "pre-commit", "pytest", "tox"] [[package]] name = "executing" -version = "2.1.0" +version = "2.2.0" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "executing-2.1.0-py2.py3-none-any.whl", hash = "sha256:8d63781349375b5ebccc3142f4b30350c0cd9c79f921cde38be2be4637e98eaf"}, - {file = "executing-2.1.0.tar.gz", hash = "sha256:8ea27ddd260da8150fa5a708269c4a10e76161e2496ec3e587da9e3c0fe4b9ab"}, + {file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"}, + {file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"}, ] [package.extras] @@ -476,18 +490,19 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth [[package]] name = "filelock" -version = "3.16.1" +version = "3.17.0" description = "A platform independent file lock." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, - {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, + {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, + {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, ] [package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] typing = ["typing-extensions (>=4.12.2)"] [[package]] @@ -496,6 +511,7 @@ version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, @@ -597,6 +613,7 @@ version = "0.19.1" description = "Git commit message linter written in python, checks your commit messages for style." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "gitlint-0.19.1-py3-none-any.whl", hash = "sha256:26bb085959148d99fbbc178b4e56fda6c3edd7646b7c2a24d8ee1f8e036ed85d"}, {file = "gitlint-0.19.1.tar.gz", hash = "sha256:b5b70fb894e80849b69abbb65ee7dbb3520fc3511f202a6e6b6ddf1a71ee8f61"}, @@ -611,6 +628,7 @@ version = "0.19.1" description = "Git commit message linter written in python, checks your commit messages for style." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "gitlint_core-0.19.1-py3-none-any.whl", hash = "sha256:f41effd1dcbc06ffbfc56b6888cce72241796f517b46bd9fd4ab1b145056988c"}, {file = "gitlint_core-0.19.1.tar.gz", hash = "sha256:7bf977b03ff581624a9e03f65ebb8502cc12dfaa3e92d23e8b2b54bbdaa29992"}, @@ -639,6 +657,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -653,6 +672,7 @@ version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -660,13 +680,14 @@ files = [ [[package]] name = "ipython" -version = "8.30.0" +version = "8.34.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" +groups = ["main"] files = [ - {file = "ipython-8.30.0-py3-none-any.whl", hash = "sha256:85ec56a7e20f6c38fce7727dcca699ae4ffc85985aa7b23635a8008f918ae321"}, - {file = "ipython-8.30.0.tar.gz", hash = "sha256:cb0a405a306d2995a5cbb9901894d240784a9f341394c6ba3f4fe8c6eb89ff6e"}, + {file = "ipython-8.34.0-py3-none-any.whl", hash = "sha256:0419883fa46e0baa182c5d50ebb8d6b49df1889fdb70750ad6d8cfe678eda6e3"}, + {file = "ipython-8.34.0.tar.gz", hash = "sha256:c31d658e754673ecc6514583e7dda8069e47136eb62458816b7d1e6625948b5a"}, ] [package.dependencies] @@ -702,6 +723,7 @@ version = "5.13.2" description = "A Python utility / library to sort Python imports." optional = false python-versions = ">=3.8.0" +groups = ["main"] files = [ {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, @@ -716,6 +738,7 @@ version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, @@ -735,6 +758,7 @@ version = "4.23.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, @@ -752,30 +776,32 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-path" -version = "0.3.3" +version = "0.3.4" description = "JSONSchema Spec with object-oriented paths" optional = false python-versions = "<4.0.0,>=3.8.0" +groups = ["main"] files = [ - {file = "jsonschema_path-0.3.3-py3-none-any.whl", hash = "sha256:203aff257f8038cd3c67be614fe6b2001043408cb1b4e36576bc4921e09d83c4"}, - {file = "jsonschema_path-0.3.3.tar.gz", hash = "sha256:f02e5481a4288ec062f8e68c808569e427d905bedfecb7f2e4c69ef77957c382"}, + {file = "jsonschema_path-0.3.4-py3-none-any.whl", hash = "sha256:f502191fdc2b22050f9a81c9237be9d27145b9001c55842bece5e94e382e52f8"}, + {file = "jsonschema_path-0.3.4.tar.gz", hash = "sha256:8365356039f16cc65fddffafda5f58766e34bebab7d6d105616ab52bc4297001"}, ] [package.dependencies] pathable = ">=0.4.1,<0.5.0" PyYAML = ">=5.1" -referencing = ">=0.28.0,<0.36.0" +referencing = "<0.37.0" requests = ">=2.31.0,<3.0.0" [[package]] name = "jsonschema-specifications" -version = "2023.12.1" +version = "2024.10.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, - {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, + {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, + {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, ] [package.dependencies] @@ -787,6 +813,7 @@ version = "1.10.0" description = "A fast and thorough lazy object proxy." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, @@ -833,6 +860,7 @@ version = "2.0.3" description = "Links recognition library with FULL unicode support." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048"}, {file = "linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79"}, @@ -853,6 +881,7 @@ version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, @@ -878,6 +907,7 @@ version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, @@ -892,6 +922,7 @@ version = "0.7.0" description = "McCabe checker, plugin for flake8" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, @@ -899,13 +930,14 @@ files = [ [[package]] name = "mdformat" -version = "0.7.19" +version = "0.7.22" description = "CommonMark compliant Markdown formatter" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "mdformat-0.7.19-py3-none-any.whl", hash = "sha256:5c360992adc118cf1479cbbe92bb3bd66dcd7f1a5a3a2ad6675915622c678cf1"}, - {file = "mdformat-0.7.19.tar.gz", hash = "sha256:a7d22df9802383432367864da907d2d147485b5cb6872e2d66937c1333e4d58a"}, + {file = "mdformat-0.7.22-py3-none-any.whl", hash = "sha256:61122637c9e1d9be1329054f3fa216559f0d1f722b7919b060a8c2a4ae1850e5"}, + {file = "mdformat-0.7.22.tar.gz", hash = "sha256:eef84fa8f233d3162734683c2a8a6222227a229b9206872e6139658d99acb1ea"}, ] [package.dependencies] @@ -918,6 +950,7 @@ version = "0.1.1" description = "An mdformat plugin for parsing/validating footnotes" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "mdformat_footnote-0.1.1-py3-none-any.whl", hash = "sha256:30063aaa0f74c36257c2e80fa0cf00d7c71a5277f27e98109e8765ae8678a95b"}, {file = "mdformat_footnote-0.1.1.tar.gz", hash = "sha256:3b85c4c84119f15f0b651df89c99a4f6f119fc46dca6b33f7edf4f09655d1126"}, @@ -937,6 +970,7 @@ version = "2.0.8" description = "An mdformat plugin for parsing / ignoring frontmatter." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "mdformat_frontmatter-2.0.8-py3-none-any.whl", hash = "sha256:577396695af96ad66dff1ff781284ff3764a10be3ab8659f2ef842ab42264ebb"}, {file = "mdformat_frontmatter-2.0.8.tar.gz", hash = "sha256:c11190ae3f9c91ada78fbd820f5b221631b520484e0b644715aa0f6ed7f097ed"}, @@ -957,6 +991,7 @@ version = "0.3.7" description = "Mdformat plugin for GitHub Flavored Markdown compatibility" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "mdformat_gfm-0.3.7-py3-none-any.whl", hash = "sha256:c40966ef26e334226961ab77908dc9697ed63668f6383a18c80cca1cb4bb5c10"}, {file = "mdformat_gfm-0.3.7.tar.gz", hash = "sha256:7deb2cd1d5334541af5454e52e116639796fc441ddc08e4415f967955950fe10"}, @@ -974,6 +1009,7 @@ version = "1.0.0" description = "An mdformat plugin for rendering tables." optional = false python-versions = ">=3.7.0" +groups = ["main"] files = [ {file = "mdformat_tables-1.0.0-py3-none-any.whl", hash = "sha256:94cd86126141b2adc3b04c08d1441eb1272b36c39146bab078249a41c7240a9a"}, {file = "mdformat_tables-1.0.0.tar.gz", hash = "sha256:a57db1ac17c4a125da794ef45539904bb8a9592e80557d525e1f169c96daa2c8"}, @@ -992,6 +1028,7 @@ version = "0.4.2" description = "Collection of plugins for markdown-it-py" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636"}, {file = "mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5"}, @@ -1011,6 +1048,7 @@ version = "0.1.2" description = "Markdown URL utilities" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -1022,6 +1060,7 @@ version = "6.1.0" description = "multidict implementation" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, @@ -1126,6 +1165,7 @@ version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -1133,82 +1173,84 @@ files = [ [[package]] name = "numpy" -version = "2.2.0" +version = "2.2.3" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" -files = [ - {file = "numpy-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa"}, - {file = "numpy-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219"}, - {file = "numpy-2.2.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e"}, - {file = "numpy-2.2.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9"}, - {file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3"}, - {file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83"}, - {file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a"}, - {file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31"}, - {file = "numpy-2.2.0-cp310-cp310-win32.whl", hash = "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661"}, - {file = "numpy-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4"}, - {file = "numpy-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6"}, - {file = "numpy-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90"}, - {file = "numpy-2.2.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608"}, - {file = "numpy-2.2.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da"}, - {file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74"}, - {file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e"}, - {file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b"}, - {file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d"}, - {file = "numpy-2.2.0-cp311-cp311-win32.whl", hash = "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410"}, - {file = "numpy-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73"}, - {file = "numpy-2.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3"}, - {file = "numpy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e"}, - {file = "numpy-2.2.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67"}, - {file = "numpy-2.2.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e"}, - {file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038"}, - {file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03"}, - {file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a"}, - {file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef"}, - {file = "numpy-2.2.0-cp312-cp312-win32.whl", hash = "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1"}, - {file = "numpy-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3"}, - {file = "numpy-2.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367"}, - {file = "numpy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae"}, - {file = "numpy-2.2.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69"}, - {file = "numpy-2.2.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13"}, - {file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671"}, - {file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571"}, - {file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d"}, - {file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742"}, - {file = "numpy-2.2.0-cp313-cp313-win32.whl", hash = "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e"}, - {file = "numpy-2.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2"}, - {file = "numpy-2.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95"}, - {file = "numpy-2.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c"}, - {file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca"}, - {file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d"}, - {file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529"}, - {file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3"}, - {file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab"}, - {file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72"}, - {file = "numpy-2.2.0-cp313-cp313t-win32.whl", hash = "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066"}, - {file = "numpy-2.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881"}, - {file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773"}, - {file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e"}, - {file = "numpy-2.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7"}, - {file = "numpy-2.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221"}, - {file = "numpy-2.2.0.tar.gz", hash = "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0"}, +groups = ["main"] +files = [ + {file = "numpy-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cbc6472e01952d3d1b2772b720428f8b90e2deea8344e854df22b0618e9cce71"}, + {file = "numpy-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdfe0c22692a30cd830c0755746473ae66c4a8f2e7bd508b35fb3b6a0813d787"}, + {file = "numpy-2.2.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:e37242f5324ffd9f7ba5acf96d774f9276aa62a966c0bad8dae692deebec7716"}, + {file = "numpy-2.2.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:95172a21038c9b423e68be78fd0be6e1b97674cde269b76fe269a5dfa6fadf0b"}, + {file = "numpy-2.2.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5b47c440210c5d1d67e1cf434124e0b5c395eee1f5806fdd89b553ed1acd0a3"}, + {file = "numpy-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0391ea3622f5c51a2e29708877d56e3d276827ac5447d7f45e9bc4ade8923c52"}, + {file = "numpy-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f6b3dfc7661f8842babd8ea07e9897fe3d9b69a1d7e5fbb743e4160f9387833b"}, + {file = "numpy-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1ad78ce7f18ce4e7df1b2ea4019b5817a2f6a8a16e34ff2775f646adce0a5027"}, + {file = "numpy-2.2.3-cp310-cp310-win32.whl", hash = "sha256:5ebeb7ef54a7be11044c33a17b2624abe4307a75893c001a4800857956b41094"}, + {file = "numpy-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:596140185c7fa113563c67c2e894eabe0daea18cf8e33851738c19f70ce86aeb"}, + {file = "numpy-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:16372619ee728ed67a2a606a614f56d3eabc5b86f8b615c79d01957062826ca8"}, + {file = "numpy-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5521a06a3148686d9269c53b09f7d399a5725c47bbb5b35747e1cb76326b714b"}, + {file = "numpy-2.2.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:7c8dde0ca2f77828815fd1aedfdf52e59071a5bae30dac3b4da2a335c672149a"}, + {file = "numpy-2.2.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:77974aba6c1bc26e3c205c2214f0d5b4305bdc719268b93e768ddb17e3fdd636"}, + {file = "numpy-2.2.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d42f9c36d06440e34226e8bd65ff065ca0963aeecada587b937011efa02cdc9d"}, + {file = "numpy-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2712c5179f40af9ddc8f6727f2bd910ea0eb50206daea75f58ddd9fa3f715bb"}, + {file = "numpy-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c8b0451d2ec95010d1db8ca733afc41f659f425b7f608af569711097fd6014e2"}, + {file = "numpy-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9b4a8148c57ecac25a16b0e11798cbe88edf5237b0df99973687dd866f05e1b"}, + {file = "numpy-2.2.3-cp311-cp311-win32.whl", hash = "sha256:1f45315b2dc58d8a3e7754fe4e38b6fce132dab284a92851e41b2b344f6441c5"}, + {file = "numpy-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f48ba6f6c13e5e49f3d3efb1b51c8193215c42ac82610a04624906a9270be6f"}, + {file = "numpy-2.2.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12c045f43b1d2915eca6b880a7f4a256f59d62df4f044788c8ba67709412128d"}, + {file = "numpy-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:87eed225fd415bbae787f93a457af7f5990b92a334e346f72070bf569b9c9c95"}, + {file = "numpy-2.2.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:712a64103d97c404e87d4d7c47fb0c7ff9acccc625ca2002848e0d53288b90ea"}, + {file = "numpy-2.2.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a5ae282abe60a2db0fd407072aff4599c279bcd6e9a2475500fc35b00a57c532"}, + {file = "numpy-2.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5266de33d4c3420973cf9ae3b98b54a2a6d53a559310e3236c4b2b06b9c07d4e"}, + {file = "numpy-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b787adbf04b0db1967798dba8da1af07e387908ed1553a0d6e74c084d1ceafe"}, + {file = "numpy-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:34c1b7e83f94f3b564b35f480f5652a47007dd91f7c839f404d03279cc8dd021"}, + {file = "numpy-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4d8335b5f1b6e2bce120d55fb17064b0262ff29b459e8493d1785c18ae2553b8"}, + {file = "numpy-2.2.3-cp312-cp312-win32.whl", hash = "sha256:4d9828d25fb246bedd31e04c9e75714a4087211ac348cb39c8c5f99dbb6683fe"}, + {file = "numpy-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:83807d445817326b4bcdaaaf8e8e9f1753da04341eceec705c001ff342002e5d"}, + {file = "numpy-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bfdb06b395385ea9b91bf55c1adf1b297c9fdb531552845ff1d3ea6e40d5aba"}, + {file = "numpy-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:23c9f4edbf4c065fddb10a4f6e8b6a244342d95966a48820c614891e5059bb50"}, + {file = "numpy-2.2.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:a0c03b6be48aaf92525cccf393265e02773be8fd9551a2f9adbe7db1fa2b60f1"}, + {file = "numpy-2.2.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:2376e317111daa0a6739e50f7ee2a6353f768489102308b0d98fcf4a04f7f3b5"}, + {file = "numpy-2.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fb62fe3d206d72fe1cfe31c4a1106ad2b136fcc1606093aeab314f02930fdf2"}, + {file = "numpy-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52659ad2534427dffcc36aac76bebdd02b67e3b7a619ac67543bc9bfe6b7cdb1"}, + {file = "numpy-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1b416af7d0ed3271cad0f0a0d0bee0911ed7eba23e66f8424d9f3dfcdcae1304"}, + {file = "numpy-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1402da8e0f435991983d0a9708b779f95a8c98c6b18a171b9f1be09005e64d9d"}, + {file = "numpy-2.2.3-cp313-cp313-win32.whl", hash = "sha256:136553f123ee2951bfcfbc264acd34a2fc2f29d7cdf610ce7daf672b6fbaa693"}, + {file = "numpy-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:5b732c8beef1d7bc2d9e476dbba20aaff6167bf205ad9aa8d30913859e82884b"}, + {file = "numpy-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:435e7a933b9fda8126130b046975a968cc2d833b505475e588339e09f7672890"}, + {file = "numpy-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7678556eeb0152cbd1522b684dcd215250885993dd00adb93679ec3c0e6e091c"}, + {file = "numpy-2.2.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:2e8da03bd561504d9b20e7a12340870dfc206c64ea59b4cfee9fceb95070ee94"}, + {file = "numpy-2.2.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:c9aa4496fd0e17e3843399f533d62857cef5900facf93e735ef65aa4bbc90ef0"}, + {file = "numpy-2.2.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4ca91d61a4bf61b0f2228f24bbfa6a9facd5f8af03759fe2a655c50ae2c6610"}, + {file = "numpy-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:deaa09cd492e24fd9b15296844c0ad1b3c976da7907e1c1ed3a0ad21dded6f76"}, + {file = "numpy-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:246535e2f7496b7ac85deffe932896a3577be7af8fb7eebe7146444680297e9a"}, + {file = "numpy-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:daf43a3d1ea699402c5a850e5313680ac355b4adc9770cd5cfc2940e7861f1bf"}, + {file = "numpy-2.2.3-cp313-cp313t-win32.whl", hash = "sha256:cf802eef1f0134afb81fef94020351be4fe1d6681aadf9c5e862af6602af64ef"}, + {file = "numpy-2.2.3-cp313-cp313t-win_amd64.whl", hash = "sha256:aee2512827ceb6d7f517c8b85aa5d3923afe8fc7a57d028cffcd522f1c6fd082"}, + {file = "numpy-2.2.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3c2ec8a0f51d60f1e9c0c5ab116b7fc104b165ada3f6c58abf881cb2eb16044d"}, + {file = "numpy-2.2.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:ed2cf9ed4e8ebc3b754d398cba12f24359f018b416c380f577bbae112ca52fc9"}, + {file = "numpy-2.2.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39261798d208c3095ae4f7bc8eaeb3481ea8c6e03dc48028057d3cbdbdb8937e"}, + {file = "numpy-2.2.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:783145835458e60fa97afac25d511d00a1eca94d4a8f3ace9fe2043003c678e4"}, + {file = "numpy-2.2.3.tar.gz", hash = "sha256:dbdc15f0c81611925f382dfa97b3bd0bc2c1ce19d4fe50482cb0ddc12ba30020"}, ] [[package]] name = "openapi-schema-validator" -version = "0.6.2" +version = "0.6.3" description = "OpenAPI schema validation for Python" optional = false -python-versions = ">=3.8.0,<4.0.0" +python-versions = "<4.0.0,>=3.8.0" +groups = ["main"] files = [ - {file = "openapi_schema_validator-0.6.2-py3-none-any.whl", hash = "sha256:c4887c1347c669eb7cded9090f4438b710845cd0f90d1fb9e1b3303fb37339f8"}, - {file = "openapi_schema_validator-0.6.2.tar.gz", hash = "sha256:11a95c9c9017912964e3e5f2545a5b11c3814880681fcacfb73b1759bb4f2804"}, + {file = "openapi_schema_validator-0.6.3-py3-none-any.whl", hash = "sha256:f3b9870f4e556b5a62a1c39da72a6b4b16f3ad9c73dc80084b1b11e74ba148a3"}, + {file = "openapi_schema_validator-0.6.3.tar.gz", hash = "sha256:f37bace4fc2a5d96692f4f8b31dc0f8d7400fd04f3a937798eaf880d425de6ee"}, ] [package.dependencies] jsonschema = ">=4.19.1,<5.0.0" -jsonschema-specifications = ">=2023.5.2,<2024.0.0" +jsonschema-specifications = ">=2023.5.2" rfc3339-validator = "*" [[package]] @@ -1217,6 +1259,7 @@ version = "0.7.1" description = "OpenAPI 2.0 (aka Swagger) and OpenAPI 3 spec validator" optional = false python-versions = ">=3.8.0,<4.0.0" +groups = ["main"] files = [ {file = "openapi_spec_validator-0.7.1-py3-none-any.whl", hash = "sha256:3c81825043f24ccbcd2f4b149b11e8231abce5ba84f37065e14ec947d8f4e959"}, {file = "openapi_spec_validator-0.7.1.tar.gz", hash = "sha256:8577b85a8268685da6f8aa30990b83b7960d4d1117e901d451b5d572605e5ec7"}, @@ -1234,6 +1277,7 @@ version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -1245,6 +1289,7 @@ version = "0.8.4" description = "A Python Parser" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -1256,13 +1301,14 @@ testing = ["docopt", "pytest"] [[package]] name = "pathable" -version = "0.4.3" +version = "0.4.4" description = "Object-oriented paths" optional = false -python-versions = ">=3.7.0,<4.0.0" +python-versions = "<4.0.0,>=3.7.0" +groups = ["main"] files = [ - {file = "pathable-0.4.3-py3-none-any.whl", hash = "sha256:cdd7b1f9d7d5c8b8d3315dbf5a86b2596053ae845f056f57d97c0eefff84da14"}, - {file = "pathable-0.4.3.tar.gz", hash = "sha256:5c869d315be50776cc8a993f3af43e0c60dc01506b399643f919034ebf4cdcab"}, + {file = "pathable-0.4.4-py3-none-any.whl", hash = "sha256:5ae9e94793b6ef5a4cbe0a7ce9dbbefc1eec38df253763fd0aeeacf2762dbbc2"}, + {file = "pathable-0.4.4.tar.gz", hash = "sha256:6905a3cd17804edfac7875b5f6c9142a218c7caef78693c2dbbbfbac186d88b2"}, ] [[package]] @@ -1271,6 +1317,7 @@ version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -1282,6 +1329,8 @@ version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" +groups = ["main"] +markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -1296,6 +1345,7 @@ version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, @@ -1312,6 +1362,7 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -1323,13 +1374,14 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "prompt-toolkit" -version = "3.0.48" +version = "3.0.50" description = "Library for building powerful interactive command lines in Python" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" +groups = ["main"] files = [ - {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, - {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, + {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, + {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, ] [package.dependencies] @@ -1337,123 +1389,141 @@ wcwidth = "*" [[package]] name = "propcache" -version = "0.2.1" +version = "0.3.0" description = "Accelerated property cache" optional = false python-versions = ">=3.9" -files = [ - {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6"}, - {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2"}, - {file = "propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea"}, - {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212"}, - {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3"}, - {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d"}, - {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634"}, - {file = "propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034"}, - {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b"}, - {file = "propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4"}, - {file = "propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba"}, - {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16"}, - {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717"}, - {file = "propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3"}, - {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9"}, - {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787"}, - {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465"}, - {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af"}, - {file = "propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca"}, - {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e"}, - {file = "propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034"}, - {file = "propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3"}, - {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a"}, - {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0"}, - {file = "propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d"}, - {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4"}, - {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d"}, - {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5"}, - {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24"}, - {file = "propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6"}, - {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518"}, - {file = "propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246"}, - {file = "propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1"}, - {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc"}, - {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9"}, - {file = "propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439"}, - {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536"}, - {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629"}, - {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b"}, - {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052"}, - {file = "propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f"}, - {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30"}, - {file = "propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6"}, - {file = "propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1"}, - {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6a9a8c34fb7bb609419a211e59da8887eeca40d300b5ea8e56af98f6fbbb1541"}, - {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae1aa1cd222c6d205853b3013c69cd04515f9d6ab6de4b0603e2e1c33221303e"}, - {file = "propcache-0.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:accb6150ce61c9c4b7738d45550806aa2b71c7668c6942f17b0ac182b6142fd4"}, - {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eee736daafa7af6d0a2dc15cc75e05c64f37fc37bafef2e00d77c14171c2097"}, - {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7a31fc1e1bd362874863fdeed71aed92d348f5336fd84f2197ba40c59f061bd"}, - {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba4cfa1052819d16699e1d55d18c92b6e094d4517c41dd231a8b9f87b6fa681"}, - {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f089118d584e859c62b3da0892b88a83d611c2033ac410e929cb6754eec0ed16"}, - {file = "propcache-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:781e65134efaf88feb447e8c97a51772aa75e48b794352f94cb7ea717dedda0d"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31f5af773530fd3c658b32b6bdc2d0838543de70eb9a2156c03e410f7b0d3aae"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a7a078f5d37bee6690959c813977da5291b24286e7b962e62a94cec31aa5188b"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cea7daf9fc7ae6687cf1e2c049752f19f146fdc37c2cc376e7d0032cf4f25347"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:8b3489ff1ed1e8315674d0775dc7d2195fb13ca17b3808721b54dbe9fd020faf"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9403db39be1393618dd80c746cb22ccda168efce239c73af13c3763ef56ffc04"}, - {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5d97151bc92d2b2578ff7ce779cdb9174337390a535953cbb9452fb65164c587"}, - {file = "propcache-0.2.1-cp39-cp39-win32.whl", hash = "sha256:9caac6b54914bdf41bcc91e7eb9147d331d29235a7c967c150ef5df6464fd1bb"}, - {file = "propcache-0.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:92fc4500fcb33899b05ba73276dfb684a20d31caa567b7cb5252d48f896a91b1"}, - {file = "propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54"}, - {file = "propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64"}, +groups = ["main"] +files = [ + {file = "propcache-0.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:efa44f64c37cc30c9f05932c740a8b40ce359f51882c70883cc95feac842da4d"}, + {file = "propcache-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2383a17385d9800b6eb5855c2f05ee550f803878f344f58b6e194de08b96352c"}, + {file = "propcache-0.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3e7420211f5a65a54675fd860ea04173cde60a7cc20ccfbafcccd155225f8bc"}, + {file = "propcache-0.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3302c5287e504d23bb0e64d2a921d1eb4a03fb93a0a0aa3b53de059f5a5d737d"}, + {file = "propcache-0.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7e2e068a83552ddf7a39a99488bcba05ac13454fb205c847674da0352602082f"}, + {file = "propcache-0.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d913d36bdaf368637b4f88d554fb9cb9d53d6920b9c5563846555938d5450bf"}, + {file = "propcache-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ee1983728964d6070ab443399c476de93d5d741f71e8f6e7880a065f878e0b9"}, + {file = "propcache-0.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:36ca5e9a21822cc1746023e88f5c0af6fce3af3b85d4520efb1ce4221bed75cc"}, + {file = "propcache-0.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9ecde3671e62eeb99e977f5221abcf40c208f69b5eb986b061ccec317c82ebd0"}, + {file = "propcache-0.3.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:d383bf5e045d7f9d239b38e6acadd7b7fdf6c0087259a84ae3475d18e9a2ae8b"}, + {file = "propcache-0.3.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:8cb625bcb5add899cb8ba7bf716ec1d3e8f7cdea9b0713fa99eadf73b6d4986f"}, + {file = "propcache-0.3.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5fa159dcee5dba00c1def3231c249cf261185189205073bde13797e57dd7540a"}, + {file = "propcache-0.3.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:a7080b0159ce05f179cfac592cda1a82898ca9cd097dacf8ea20ae33474fbb25"}, + {file = "propcache-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ed7161bccab7696a473fe7ddb619c1d75963732b37da4618ba12e60899fefe4f"}, + {file = "propcache-0.3.0-cp310-cp310-win32.whl", hash = "sha256:bf0d9a171908f32d54f651648c7290397b8792f4303821c42a74e7805bfb813c"}, + {file = "propcache-0.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:42924dc0c9d73e49908e35bbdec87adedd651ea24c53c29cac103ede0ea1d340"}, + {file = "propcache-0.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9ddd49258610499aab83b4f5b61b32e11fce873586282a0e972e5ab3bcadee51"}, + {file = "propcache-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2578541776769b500bada3f8a4eeaf944530516b6e90c089aa368266ed70c49e"}, + {file = "propcache-0.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8074c5dd61c8a3e915fa8fc04754fa55cfa5978200d2daa1e2d4294c1f136aa"}, + {file = "propcache-0.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b58229a844931bca61b3a20efd2be2a2acb4ad1622fc026504309a6883686fbf"}, + {file = "propcache-0.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e45377d5d6fefe1677da2a2c07b024a6dac782088e37c0b1efea4cfe2b1be19b"}, + {file = "propcache-0.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ec5060592d83454e8063e487696ac3783cc48c9a329498bafae0d972bc7816c9"}, + {file = "propcache-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15010f29fbed80e711db272909a074dc79858c6d28e2915704cfc487a8ac89c6"}, + {file = "propcache-0.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a254537b9b696ede293bfdbc0a65200e8e4507bc9f37831e2a0318a9b333c85c"}, + {file = "propcache-0.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2b975528998de037dfbc10144b8aed9b8dd5a99ec547f14d1cb7c5665a43f075"}, + {file = "propcache-0.3.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:19d36bb351ad5554ff20f2ae75f88ce205b0748c38b146c75628577020351e3c"}, + {file = "propcache-0.3.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6032231d4a5abd67c7f71168fd64a47b6b451fbcb91c8397c2f7610e67683810"}, + {file = "propcache-0.3.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6985a593417cdbc94c7f9c3403747335e450c1599da1647a5af76539672464d3"}, + {file = "propcache-0.3.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:6a1948df1bb1d56b5e7b0553c0fa04fd0e320997ae99689488201f19fa90d2e7"}, + {file = "propcache-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8319293e85feadbbfe2150a5659dbc2ebc4afdeaf7d98936fb9a2f2ba0d4c35c"}, + {file = "propcache-0.3.0-cp311-cp311-win32.whl", hash = "sha256:63f26258a163c34542c24808f03d734b338da66ba91f410a703e505c8485791d"}, + {file = "propcache-0.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:cacea77ef7a2195f04f9279297684955e3d1ae4241092ff0cfcef532bb7a1c32"}, + {file = "propcache-0.3.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e53d19c2bf7d0d1e6998a7e693c7e87300dd971808e6618964621ccd0e01fe4e"}, + {file = "propcache-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a61a68d630e812b67b5bf097ab84e2cd79b48c792857dc10ba8a223f5b06a2af"}, + {file = "propcache-0.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fb91d20fa2d3b13deea98a690534697742029f4fb83673a3501ae6e3746508b5"}, + {file = "propcache-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67054e47c01b7b349b94ed0840ccae075449503cf1fdd0a1fdd98ab5ddc2667b"}, + {file = "propcache-0.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:997e7b8f173a391987df40f3b52c423e5850be6f6df0dcfb5376365440b56667"}, + {file = "propcache-0.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d663fd71491dde7dfdfc899d13a067a94198e90695b4321084c6e450743b8c7"}, + {file = "propcache-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8884ba1a0fe7210b775106b25850f5e5a9dc3c840d1ae9924ee6ea2eb3acbfe7"}, + {file = "propcache-0.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa806bbc13eac1ab6291ed21ecd2dd426063ca5417dd507e6be58de20e58dfcf"}, + {file = "propcache-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6f4d7a7c0aff92e8354cceca6fe223973ddf08401047920df0fcb24be2bd5138"}, + {file = "propcache-0.3.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:9be90eebc9842a93ef8335291f57b3b7488ac24f70df96a6034a13cb58e6ff86"}, + {file = "propcache-0.3.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bf15fc0b45914d9d1b706f7c9c4f66f2b7b053e9517e40123e137e8ca8958b3d"}, + {file = "propcache-0.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5a16167118677d94bb48bfcd91e420088854eb0737b76ec374b91498fb77a70e"}, + {file = "propcache-0.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:41de3da5458edd5678b0f6ff66691507f9885f5fe6a0fb99a5d10d10c0fd2d64"}, + {file = "propcache-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:728af36011bb5d344c4fe4af79cfe186729efb649d2f8b395d1572fb088a996c"}, + {file = "propcache-0.3.0-cp312-cp312-win32.whl", hash = "sha256:6b5b7fd6ee7b54e01759f2044f936dcf7dea6e7585f35490f7ca0420fe723c0d"}, + {file = "propcache-0.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:2d15bc27163cd4df433e75f546b9ac31c1ba7b0b128bfb1b90df19082466ff57"}, + {file = "propcache-0.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a2b9bf8c79b660d0ca1ad95e587818c30ccdb11f787657458d6f26a1ea18c568"}, + {file = "propcache-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b0c1a133d42c6fc1f5fbcf5c91331657a1ff822e87989bf4a6e2e39b818d0ee9"}, + {file = "propcache-0.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bb2f144c6d98bb5cbc94adeb0447cfd4c0f991341baa68eee3f3b0c9c0e83767"}, + {file = "propcache-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1323cd04d6e92150bcc79d0174ce347ed4b349d748b9358fd2e497b121e03c8"}, + {file = "propcache-0.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b812b3cb6caacd072276ac0492d249f210006c57726b6484a1e1805b3cfeea0"}, + {file = "propcache-0.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:742840d1d0438eb7ea4280f3347598f507a199a35a08294afdcc560c3739989d"}, + {file = "propcache-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c6e7e4f9167fddc438cd653d826f2222222564daed4116a02a184b464d3ef05"}, + {file = "propcache-0.3.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a94ffc66738da99232ddffcf7910e0f69e2bbe3a0802e54426dbf0714e1c2ffe"}, + {file = "propcache-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3c6ec957025bf32b15cbc6b67afe233c65b30005e4c55fe5768e4bb518d712f1"}, + {file = "propcache-0.3.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:549722908de62aa0b47a78b90531c022fa6e139f9166be634f667ff45632cc92"}, + {file = "propcache-0.3.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5d62c4f6706bff5d8a52fd51fec6069bef69e7202ed481486c0bc3874912c787"}, + {file = "propcache-0.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:24c04f8fbf60094c531667b8207acbae54146661657a1b1be6d3ca7773b7a545"}, + {file = "propcache-0.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7c5f5290799a3f6539cc5e6f474c3e5c5fbeba74a5e1e5be75587746a940d51e"}, + {file = "propcache-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4fa0e7c9c3cf7c276d4f6ab9af8adddc127d04e0fcabede315904d2ff76db626"}, + {file = "propcache-0.3.0-cp313-cp313-win32.whl", hash = "sha256:ee0bd3a7b2e184e88d25c9baa6a9dc609ba25b76daae942edfb14499ac7ec374"}, + {file = "propcache-0.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:1c8f7d896a16da9455f882870a507567d4f58c53504dc2d4b1e1d386dfe4588a"}, + {file = "propcache-0.3.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e560fd75aaf3e5693b91bcaddd8b314f4d57e99aef8a6c6dc692f935cc1e6bbf"}, + {file = "propcache-0.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:65a37714b8ad9aba5780325228598a5b16c47ba0f8aeb3dc0514701e4413d7c0"}, + {file = "propcache-0.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:07700939b2cbd67bfb3b76a12e1412405d71019df00ca5697ce75e5ef789d829"}, + {file = "propcache-0.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c0fdbdf6983526e269e5a8d53b7ae3622dd6998468821d660d0daf72779aefa"}, + {file = "propcache-0.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:794c3dd744fad478b6232289c866c25406ecdfc47e294618bdf1697e69bd64a6"}, + {file = "propcache-0.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4544699674faf66fb6b4473a1518ae4999c1b614f0b8297b1cef96bac25381db"}, + {file = "propcache-0.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fddb8870bdb83456a489ab67c6b3040a8d5a55069aa6f72f9d872235fbc52f54"}, + {file = "propcache-0.3.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f857034dc68d5ceb30fb60afb6ff2103087aea10a01b613985610e007053a121"}, + {file = "propcache-0.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:02df07041e0820cacc8f739510078f2aadcfd3fc57eaeeb16d5ded85c872c89e"}, + {file = "propcache-0.3.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f47d52fd9b2ac418c4890aad2f6d21a6b96183c98021f0a48497a904199f006e"}, + {file = "propcache-0.3.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9ff4e9ecb6e4b363430edf2c6e50173a63e0820e549918adef70515f87ced19a"}, + {file = "propcache-0.3.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:ecc2920630283e0783c22e2ac94427f8cca29a04cfdf331467d4f661f4072dac"}, + {file = "propcache-0.3.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:c441c841e82c5ba7a85ad25986014be8d7849c3cfbdb6004541873505929a74e"}, + {file = "propcache-0.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c929916cbdb540d3407c66f19f73387f43e7c12fa318a66f64ac99da601bcdf"}, + {file = "propcache-0.3.0-cp313-cp313t-win32.whl", hash = "sha256:0c3e893c4464ebd751b44ae76c12c5f5c1e4f6cbd6fbf67e3783cd93ad221863"}, + {file = "propcache-0.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:75e872573220d1ee2305b35c9813626e620768248425f58798413e9c39741f46"}, + {file = "propcache-0.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:03c091bb752349402f23ee43bb2bff6bd80ccab7c9df6b88ad4322258d6960fc"}, + {file = "propcache-0.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:46ed02532cb66612d42ae5c3929b5e98ae330ea0f3900bc66ec5f4862069519b"}, + {file = "propcache-0.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11ae6a8a01b8a4dc79093b5d3ca2c8a4436f5ee251a9840d7790dccbd96cb649"}, + {file = "propcache-0.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df03cd88f95b1b99052b52b1bb92173229d7a674df0ab06d2b25765ee8404bce"}, + {file = "propcache-0.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03acd9ff19021bd0567582ac88f821b66883e158274183b9e5586f678984f8fe"}, + {file = "propcache-0.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd54895e4ae7d32f1e3dd91261df46ee7483a735017dc6f987904f194aa5fd14"}, + {file = "propcache-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26a67e5c04e3119594d8cfae517f4b9330c395df07ea65eab16f3d559b7068fe"}, + {file = "propcache-0.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee25f1ac091def37c4b59d192bbe3a206298feeb89132a470325bf76ad122a1e"}, + {file = "propcache-0.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:58e6d2a5a7cb3e5f166fd58e71e9a4ff504be9dc61b88167e75f835da5764d07"}, + {file = "propcache-0.3.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:be90c94570840939fecedf99fa72839aed70b0ced449b415c85e01ae67422c90"}, + {file = "propcache-0.3.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:49ea05212a529c2caffe411e25a59308b07d6e10bf2505d77da72891f9a05641"}, + {file = "propcache-0.3.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:119e244ab40f70a98c91906d4c1f4c5f2e68bd0b14e7ab0a06922038fae8a20f"}, + {file = "propcache-0.3.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:507c5357a8d8b4593b97fb669c50598f4e6cccbbf77e22fa9598aba78292b4d7"}, + {file = "propcache-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8526b0941ec5a40220fc4dfde76aed58808e2b309c03e9fa8e2260083ef7157f"}, + {file = "propcache-0.3.0-cp39-cp39-win32.whl", hash = "sha256:7cedd25e5f678f7738da38037435b340694ab34d424938041aa630d8bac42663"}, + {file = "propcache-0.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:bf4298f366ca7e1ad1d21bbb58300a6985015909964077afd37559084590c929"}, + {file = "propcache-0.3.0-py3-none-any.whl", hash = "sha256:67dda3c7325691c2081510e92c561f465ba61b975f481735aefdfc845d2cd043"}, + {file = "propcache-0.3.0.tar.gz", hash = "sha256:a8fd93de4e1d278046345f49e2238cdb298589325849b2645d4a94c53faeffc5"}, ] [[package]] name = "psutil" -version = "6.1.0" +version = "6.1.1" description = "Cross-platform lib for process and system monitoring in Python." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -files = [ - {file = "psutil-6.1.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff34df86226c0227c52f38b919213157588a678d049688eded74c76c8ba4a5d0"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c0e0c00aa18ca2d3b2b991643b799a15fc8f0563d2ebb6040f64ce8dc027b942"}, - {file = "psutil-6.1.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:000d1d1ebd634b4efb383f4034437384e44a6d455260aaee2eca1e9c1b55f047"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5cd2bcdc75b452ba2e10f0e8ecc0b57b827dd5d7aaffbc6821b2a9a242823a76"}, - {file = "psutil-6.1.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:045f00a43c737f960d273a83973b2511430d61f283a44c96bf13a6e829ba8fdc"}, - {file = "psutil-6.1.0-cp27-none-win32.whl", hash = "sha256:9118f27452b70bb1d9ab3198c1f626c2499384935aaf55388211ad982611407e"}, - {file = "psutil-6.1.0-cp27-none-win_amd64.whl", hash = "sha256:a8506f6119cff7015678e2bce904a4da21025cc70ad283a53b099e7620061d85"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e2dcd475ce8b80522e51d923d10c7871e45f20918e027ab682f94f1c6351688"}, - {file = "psutil-6.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0895b8414afafc526712c498bd9de2b063deaac4021a3b3c34566283464aff8e"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9dcbfce5d89f1d1f2546a2090f4fcf87c7f669d1d90aacb7d7582addece9fb38"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:498c6979f9c6637ebc3a73b3f87f9eb1ec24e1ce53a7c5173b8508981614a90b"}, - {file = "psutil-6.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d905186d647b16755a800e7263d43df08b790d709d575105d419f8b6ef65423a"}, - {file = "psutil-6.1.0-cp36-cp36m-win32.whl", hash = "sha256:6d3fbbc8d23fcdcb500d2c9f94e07b1342df8ed71b948a2649b5cb060a7c94ca"}, - {file = "psutil-6.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:1209036fbd0421afde505a4879dee3b2fd7b1e14fee81c0069807adcbbcca747"}, - {file = "psutil-6.1.0-cp37-abi3-win32.whl", hash = "sha256:1ad45a1f5d0b608253b11508f80940985d1d0c8f6111b5cb637533a0e6ddc13e"}, - {file = "psutil-6.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:a8fb3752b491d246034fa4d279ff076501588ce8cbcdbb62c32fd7a377d996be"}, - {file = "psutil-6.1.0.tar.gz", hash = "sha256:353815f59a7f64cdaca1c0307ee13558a0512f6db064e92fe833784f08539c7a"}, +groups = ["main"] +files = [ + {file = "psutil-6.1.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:9ccc4316f24409159897799b83004cb1e24f9819b0dcf9c0b68bdcb6cefee6a8"}, + {file = "psutil-6.1.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ca9609c77ea3b8481ab005da74ed894035936223422dc591d6772b147421f777"}, + {file = "psutil-6.1.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8df0178ba8a9e5bc84fed9cfa61d54601b371fbec5c8eebad27575f1e105c0d4"}, + {file = "psutil-6.1.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:1924e659d6c19c647e763e78670a05dbb7feaf44a0e9c94bf9e14dfc6ba50468"}, + {file = "psutil-6.1.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:018aeae2af92d943fdf1da6b58665124897cfc94faa2ca92098838f83e1b1bca"}, + {file = "psutil-6.1.1-cp27-none-win32.whl", hash = "sha256:6d4281f5bbca041e2292be3380ec56a9413b790579b8e593b1784499d0005dac"}, + {file = "psutil-6.1.1-cp27-none-win_amd64.whl", hash = "sha256:c777eb75bb33c47377c9af68f30e9f11bc78e0f07fbf907be4a5d70b2fe5f030"}, + {file = "psutil-6.1.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed7fe2231a444fc219b9c42d0376e0a9a1a72f16c5cfa0f68d19f1a0663e8"}, + {file = "psutil-6.1.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0bdd4eab935276290ad3cb718e9809412895ca6b5b334f5a9111ee6d9aff9377"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6e06c20c05fe95a3d7302d74e7097756d4ba1247975ad6905441ae1b5b66003"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97f7cb9921fbec4904f522d972f0c0e1f4fabbdd4e0287813b21215074a0f160"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33431e84fee02bc84ea36d9e2c4a6d395d479c9dd9bba2376c1f6ee8f3a4e0b3"}, + {file = "psutil-6.1.1-cp36-cp36m-win32.whl", hash = "sha256:384636b1a64b47814437d1173be1427a7c83681b17a450bfc309a1953e329603"}, + {file = "psutil-6.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8be07491f6ebe1a693f17d4f11e69d0dc1811fa082736500f649f79df7735303"}, + {file = "psutil-6.1.1-cp37-abi3-win32.whl", hash = "sha256:eaa912e0b11848c4d9279a93d7e2783df352b082f40111e078388701fd479e53"}, + {file = "psutil-6.1.1-cp37-abi3-win_amd64.whl", hash = "sha256:f35cfccb065fff93529d2afb4a2e89e363fe63ca1e4a5da22b603a85833c2649"}, + {file = "psutil-6.1.1.tar.gz", hash = "sha256:cf8496728c18f2d0b45198f06895be52f36611711746b7f30c464b422b50e2f5"}, ] [package.extras] -dev = ["black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "wheel"] +dev = ["abi3audit", "black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] test = ["pytest", "pytest-xdist", "setuptools"] [[package]] @@ -1462,6 +1532,8 @@ version = "0.7.0" description = "Run a subprocess in a pseudo terminal" optional = false python-versions = "*" +groups = ["main"] +markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -1473,6 +1545,7 @@ version = "0.2.3" description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -1483,13 +1556,14 @@ tests = ["pytest"] [[package]] name = "pygments" -version = "2.18.0" +version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, ] [package.extras] @@ -1497,24 +1571,25 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pylint" -version = "3.3.2" +version = "3.3.5" description = "python code static checker" optional = false python-versions = ">=3.9.0" +groups = ["main"] files = [ - {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"}, - {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"}, + {file = "pylint-3.3.5-py3-none-any.whl", hash = "sha256:7cb170929a371238530b2eeea09f5f28236d106b70308c3d46a9c0cf11634633"}, + {file = "pylint-3.3.5.tar.gz", hash = "sha256:38d0f784644ed493d91f76b5333a0e370a1c1bc97c22068a77523b4bf1e82c31"}, ] [package.dependencies] -astroid = ">=3.3.5,<=3.4.0-dev0" +astroid = ">=3.3.8,<=3.4.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] -isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" +isort = ">=4.2.5,<5.13.0 || >5.13.0,<7" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} @@ -1526,13 +1601,14 @@ testutils = ["gitpython (>3)"] [[package]] name = "pytest" -version = "8.3.4" +version = "8.3.5" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, - {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, + {file = "pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820"}, + {file = "pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845"}, ] [package.dependencies] @@ -1552,6 +1628,7 @@ version = "1.5.0" description = "A pytest plugin to report test results as JSON files" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "pytest-json-report-1.5.0.tar.gz", hash = "sha256:2dde3c647851a19b5f3700729e8310a6e66efb2077d674f27ddea3d34dc615de"}, {file = "pytest_json_report-1.5.0-py3-none-any.whl", hash = "sha256:9897b68c910b12a2e48dd849f9a284b2c79a732a8a9cb398452ddd23d3c8c325"}, @@ -1567,6 +1644,7 @@ version = "3.1.1" description = "pytest plugin for test session metadata" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "pytest_metadata-3.1.1-py3-none-any.whl", hash = "sha256:c8e0844db684ee1c798cfa38908d20d67d0463ecb6137c72e91f418558dd5f4b"}, {file = "pytest_metadata-3.1.1.tar.gz", hash = "sha256:d2a29b0355fbc03f168aa96d41ff88b1a3b44a3b02acbe491801c98a048017c8"}, @@ -1584,6 +1662,7 @@ version = "14.0" description = "pytest plugin to re-run tests to eliminate flaky failures" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "pytest-rerunfailures-14.0.tar.gz", hash = "sha256:4a400bcbcd3c7a4ad151ab8afac123d90eca3abe27f98725dc4d9702887d2e92"}, {file = "pytest_rerunfailures-14.0-py3-none-any.whl", hash = "sha256:4197bdd2eaeffdbf50b5ea6e7236f47ff0e44d1def8dae08e409f536d84e7b32"}, @@ -1599,6 +1678,7 @@ version = "2.3.1" description = "pytest plugin to abort hanging tests" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "pytest-timeout-2.3.1.tar.gz", hash = "sha256:12397729125c6ecbdaca01035b9e5239d4db97352320af155b3f5de1ba5165d9"}, {file = "pytest_timeout-2.3.1-py3-none-any.whl", hash = "sha256:68188cb703edfc6a18fad98dc25a3c61e9f24d644b0b70f33af545219fc7813e"}, @@ -1613,6 +1693,7 @@ version = "3.6.1" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "pytest_xdist-3.6.1-py3-none-any.whl", hash = "sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7"}, {file = "pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d"}, @@ -1633,6 +1714,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -1647,6 +1729,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -1705,18 +1788,20 @@ files = [ [[package]] name = "referencing" -version = "0.35.1" +version = "0.36.2" description = "JSON Referencing + Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, - {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, + {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, + {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, ] [package.dependencies] attrs = ">=22.2.0" rpds-py = ">=0.7.0" +typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} [[package]] name = "requests" @@ -1724,6 +1809,7 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -1745,6 +1831,7 @@ version = "0.4.2" description = "Use requests to talk HTTP via a UNIX domain socket" optional = false python-versions = "<4.0.0,>=3.8.1" +groups = ["main"] files = [ {file = "requests_unixsocket2-0.4.2-py3-none-any.whl", hash = "sha256:701fcd49d74bc0f759bbe45c4dfda0045fd89652948c2b473b1a312214c3770b"}, {file = "requests_unixsocket2-0.4.2.tar.gz", hash = "sha256:929c58ecc5981f3d127661ceb9ec8c76e0f08d31c52e44ab1462ac0dcd55b5f5"}, @@ -1760,6 +1847,7 @@ version = "0.1.4" description = "A pure python RFC3339 validator" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["main"] files = [ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, @@ -1770,125 +1858,127 @@ six = "*" [[package]] name = "rpds-py" -version = "0.22.3" +version = "0.23.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.9" -files = [ - {file = "rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967"}, - {file = "rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c"}, - {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09"}, - {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00"}, - {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf"}, - {file = "rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652"}, - {file = "rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8"}, - {file = "rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f"}, - {file = "rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d"}, - {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648"}, - {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74"}, - {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a"}, - {file = "rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64"}, - {file = "rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c"}, - {file = "rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e"}, - {file = "rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059"}, - {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e"}, - {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61"}, - {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7"}, - {file = "rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627"}, - {file = "rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4"}, - {file = "rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84"}, - {file = "rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd"}, - {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2"}, - {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16"}, - {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f"}, - {file = "rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de"}, - {file = "rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9"}, - {file = "rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b"}, - {file = "rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130"}, - {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c"}, - {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b"}, - {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333"}, - {file = "rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730"}, - {file = "rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf"}, - {file = "rpds_py-0.22.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea"}, - {file = "rpds_py-0.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d"}, - {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99"}, - {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831"}, - {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520"}, - {file = "rpds_py-0.22.3-cp39-cp39-win32.whl", hash = "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9"}, - {file = "rpds_py-0.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6"}, - {file = "rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d"}, +groups = ["main"] +files = [ + {file = "rpds_py-0.23.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2a54027554ce9b129fc3d633c92fa33b30de9f08bc61b32c053dc9b537266fed"}, + {file = "rpds_py-0.23.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b5ef909a37e9738d146519657a1aab4584018746a18f71c692f2f22168ece40c"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ee9d6f0b38efb22ad94c3b68ffebe4c47865cdf4b17f6806d6c674e1feb4246"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7356a6da0562190558c4fcc14f0281db191cdf4cb96e7604c06acfcee96df15"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9441af1d25aed96901f97ad83d5c3e35e6cd21a25ca5e4916c82d7dd0490a4fa"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d8abf7896a91fb97e7977d1aadfcc2c80415d6dc2f1d0fca5b8d0df247248f3"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b08027489ba8fedde72ddd233a5ea411b85a6ed78175f40285bd401bde7466d"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fee513135b5a58f3bb6d89e48326cd5aa308e4bcdf2f7d59f67c861ada482bf8"}, + {file = "rpds_py-0.23.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:35d5631ce0af26318dba0ae0ac941c534453e42f569011585cb323b7774502a5"}, + {file = "rpds_py-0.23.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a20cb698c4a59c534c6701b1c24a968ff2768b18ea2991f886bd8985ce17a89f"}, + {file = "rpds_py-0.23.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e9c206a1abc27e0588cf8b7c8246e51f1a16a103734f7750830a1ccb63f557a"}, + {file = "rpds_py-0.23.1-cp310-cp310-win32.whl", hash = "sha256:d9f75a06ecc68f159d5d7603b734e1ff6daa9497a929150f794013aa9f6e3f12"}, + {file = "rpds_py-0.23.1-cp310-cp310-win_amd64.whl", hash = "sha256:f35eff113ad430b5272bbfc18ba111c66ff525828f24898b4e146eb479a2cdda"}, + {file = "rpds_py-0.23.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b79f5ced71efd70414a9a80bbbfaa7160da307723166f09b69773153bf17c590"}, + {file = "rpds_py-0.23.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c9e799dac1ffbe7b10c1fd42fe4cd51371a549c6e108249bde9cd1200e8f59b4"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721f9c4011b443b6e84505fc00cc7aadc9d1743f1c988e4c89353e19c4a968ee"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f88626e3f5e57432e6191cd0c5d6d6b319b635e70b40be2ffba713053e5147dd"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:285019078537949cecd0190f3690a0b0125ff743d6a53dfeb7a4e6787af154f5"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b92f5654157de1379c509b15acec9d12ecf6e3bc1996571b6cb82a4302060447"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e768267cbe051dd8d1c5305ba690bb153204a09bf2e3de3ae530de955f5b5580"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5334a71f7dc1160382d45997e29f2637c02f8a26af41073189d79b95d3321f1"}, + {file = "rpds_py-0.23.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6adb81564af0cd428910f83fa7da46ce9ad47c56c0b22b50872bc4515d91966"}, + {file = "rpds_py-0.23.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:cafa48f2133d4daa028473ede7d81cd1b9f9e6925e9e4003ebdf77010ee02f35"}, + {file = "rpds_py-0.23.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fced9fd4a07a1ded1bac7e961ddd9753dd5d8b755ba8e05acba54a21f5f1522"}, + {file = "rpds_py-0.23.1-cp311-cp311-win32.whl", hash = "sha256:243241c95174b5fb7204c04595852fe3943cc41f47aa14c3828bc18cd9d3b2d6"}, + {file = "rpds_py-0.23.1-cp311-cp311-win_amd64.whl", hash = "sha256:11dd60b2ffddba85715d8a66bb39b95ddbe389ad2cfcf42c833f1bcde0878eaf"}, + {file = "rpds_py-0.23.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3902df19540e9af4cc0c3ae75974c65d2c156b9257e91f5101a51f99136d834c"}, + {file = "rpds_py-0.23.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66f8d2a17e5838dd6fb9be6baaba8e75ae2f5fa6b6b755d597184bfcd3cb0eba"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:112b8774b0b4ee22368fec42749b94366bd9b536f8f74c3d4175d4395f5cbd31"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0df046f2266e8586cf09d00588302a32923eb6386ced0ca5c9deade6af9a149"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3288930b947cbebe767f84cf618d2cbe0b13be476e749da0e6a009f986248c"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce473a2351c018b06dd8d30d5da8ab5a0831056cc53b2006e2a8028172c37ce5"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d550d7e9e7d8676b183b37d65b5cd8de13676a738973d330b59dc8312df9c5dc"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e14f86b871ea74c3fddc9a40e947d6a5d09def5adc2076ee61fb910a9014fb35"}, + {file = "rpds_py-0.23.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1bf5be5ba34e19be579ae873da515a2836a2166d8d7ee43be6ff909eda42b72b"}, + {file = "rpds_py-0.23.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d7031d493c4465dbc8d40bd6cafefef4bd472b17db0ab94c53e7909ee781b9ef"}, + {file = "rpds_py-0.23.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:55ff4151cfd4bc635e51cfb1c59ac9f7196b256b12e3a57deb9e5742e65941ad"}, + {file = "rpds_py-0.23.1-cp312-cp312-win32.whl", hash = "sha256:a9d3b728f5a5873d84cba997b9d617c6090ca5721caaa691f3b1a78c60adc057"}, + {file = "rpds_py-0.23.1-cp312-cp312-win_amd64.whl", hash = "sha256:b03a8d50b137ee758e4c73638b10747b7c39988eb8e6cd11abb7084266455165"}, + {file = "rpds_py-0.23.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:4caafd1a22e5eaa3732acb7672a497123354bef79a9d7ceed43387d25025e935"}, + {file = "rpds_py-0.23.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:178f8a60fc24511c0eb756af741c476b87b610dba83270fce1e5a430204566a4"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c632419c3870507ca20a37c8f8f5352317aca097639e524ad129f58c125c61c6"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:698a79d295626ee292d1730bc2ef6e70a3ab135b1d79ada8fde3ed0047b65a10"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:271fa2184cf28bdded86bb6217c8e08d3a169fe0bbe9be5e8d96e8476b707122"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b91cceb5add79ee563bd1f70b30896bd63bc5f78a11c1f00a1e931729ca4f1f4"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a6cb95074777f1ecda2ca4fa7717caa9ee6e534f42b7575a8f0d4cb0c24013"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:50fb62f8d8364978478b12d5f03bf028c6bc2af04082479299139dc26edf4c64"}, + {file = "rpds_py-0.23.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c8f7e90b948dc9dcfff8003f1ea3af08b29c062f681c05fd798e36daa3f7e3e8"}, + {file = "rpds_py-0.23.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5b98b6c953e5c2bda51ab4d5b4f172617d462eebc7f4bfdc7c7e6b423f6da957"}, + {file = "rpds_py-0.23.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2893d778d4671ee627bac4037a075168b2673c57186fb1a57e993465dbd79a93"}, + {file = "rpds_py-0.23.1-cp313-cp313-win32.whl", hash = "sha256:2cfa07c346a7ad07019c33fb9a63cf3acb1f5363c33bc73014e20d9fe8b01cdd"}, + {file = "rpds_py-0.23.1-cp313-cp313-win_amd64.whl", hash = "sha256:3aaf141d39f45322e44fc2c742e4b8b4098ead5317e5f884770c8df0c332da70"}, + {file = "rpds_py-0.23.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:759462b2d0aa5a04be5b3e37fb8183615f47014ae6b116e17036b131985cb731"}, + {file = "rpds_py-0.23.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3e9212f52074fc9d72cf242a84063787ab8e21e0950d4d6709886fb62bcb91d5"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e9f3a3ac919406bc0414bbbd76c6af99253c507150191ea79fab42fdb35982a"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c04ca91dda8a61584165825907f5c967ca09e9c65fe8966ee753a3f2b019fe1e"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ab923167cfd945abb9b51a407407cf19f5bee35001221f2911dc85ffd35ff4f"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed6f011bedca8585787e5082cce081bac3d30f54520097b2411351b3574e1219"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6959bb9928c5c999aba4a3f5a6799d571ddc2c59ff49917ecf55be2bbb4e3722"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1ed7de3c86721b4e83ac440751329ec6a1102229aa18163f84c75b06b525ad7e"}, + {file = "rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5fb89edee2fa237584e532fbf78f0ddd1e49a47c7c8cfa153ab4849dc72a35e6"}, + {file = "rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7e5413d2e2d86025e73f05510ad23dad5950ab8417b7fc6beaad99be8077138b"}, + {file = "rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d31ed4987d72aabdf521eddfb6a72988703c091cfc0064330b9e5f8d6a042ff5"}, + {file = "rpds_py-0.23.1-cp313-cp313t-win32.whl", hash = "sha256:f3429fb8e15b20961efca8c8b21432623d85db2228cc73fe22756c6637aa39e7"}, + {file = "rpds_py-0.23.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d6f6512a90bd5cd9030a6237f5346f046c6f0e40af98657568fa45695d4de59d"}, + {file = "rpds_py-0.23.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:09cd7dbcb673eb60518231e02874df66ec1296c01a4fcd733875755c02014b19"}, + {file = "rpds_py-0.23.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c6760211eee3a76316cf328f5a8bd695b47b1626d21c8a27fb3b2473a884d597"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e680c1518733b73c994361e4b06441b92e973ef7d9449feec72e8ee4f713da"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae28144c1daa61366205d32abd8c90372790ff79fc60c1a8ad7fd3c8553a600e"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c698d123ce5d8f2d0cd17f73336615f6a2e3bdcedac07a1291bb4d8e7d82a05a"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98b257ae1e83f81fb947a363a274c4eb66640212516becaff7bef09a5dceacaa"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c9ff044eb07c8468594d12602291c635da292308c8c619244e30698e7fc455a"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7938c7b0599a05246d704b3f5e01be91a93b411d0d6cc62275f025293b8a11ce"}, + {file = "rpds_py-0.23.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e9cb79ecedfc156c0692257ac7ed415243b6c35dd969baa461a6888fc79f2f07"}, + {file = "rpds_py-0.23.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:7b77e07233925bd33fc0022b8537774423e4c6680b6436316c5075e79b6384f4"}, + {file = "rpds_py-0.23.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a970bfaf130c29a679b1d0a6e0f867483cea455ab1535fb427566a475078f27f"}, + {file = "rpds_py-0.23.1-cp39-cp39-win32.whl", hash = "sha256:4233df01a250b3984465faed12ad472f035b7cd5240ea3f7c76b7a7016084495"}, + {file = "rpds_py-0.23.1-cp39-cp39-win_amd64.whl", hash = "sha256:c617d7453a80e29d9973b926983b1e700a9377dbe021faa36041c78537d7b08c"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c1f8afa346ccd59e4e5630d5abb67aba6a9812fddf764fd7eb11f382a345f8cc"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fad784a31869747df4ac968a351e070c06ca377549e4ace94775aaa3ab33ee06"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5a96fcac2f18e5a0a23a75cd27ce2656c66c11c127b0318e508aab436b77428"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3e77febf227a1dc3220159355dba68faa13f8dca9335d97504abf428469fb18b"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26bb3e8de93443d55e2e748e9fd87deb5f8075ca7bc0502cfc8be8687d69a2ec"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db7707dde9143a67b8812c7e66aeb2d843fe33cc8e374170f4d2c50bd8f2472d"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eedaaccc9bb66581d4ae7c50e15856e335e57ef2734dbc5fd8ba3e2a4ab3cb6"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28358c54fffadf0ae893f6c1050e8f8853e45df22483b7fff2f6ab6152f5d8bf"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:633462ef7e61d839171bf206551d5ab42b30b71cac8f10a64a662536e057fdef"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a98f510d86f689fcb486dc59e6e363af04151e5260ad1bdddb5625c10f1e95f8"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e0397dd0b3955c61ef9b22838144aa4bef6f0796ba5cc8edfc64d468b93798b4"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:75307599f0d25bf6937248e5ac4e3bde5ea72ae6618623b86146ccc7845ed00b"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3614d280bf7aab0d3721b5ce0e73434acb90a2c993121b6e81a1c15c665298ac"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e5963ea87f88bddf7edd59644a35a0feecf75f8985430124c253612d4f7d27ae"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad76f44f70aac3a54ceb1813ca630c53415da3a24fd93c570b2dfb4856591017"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2c6ae11e6e93728d86aafc51ced98b1658a0080a7dd9417d24bfb955bb09c3c2"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc869af5cba24d45fb0399b0cfdbcefcf6910bf4dee5d74036a57cf5264b3ff4"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c76b32eb2ab650a29e423525e84eb197c45504b1c1e6e17b6cc91fcfeb1a4b1d"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4263320ed887ed843f85beba67f8b2d1483b5947f2dc73a8b068924558bfeace"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7f9682a8f71acdf59fd554b82b1c12f517118ee72c0f3944eda461606dfe7eb9"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:754fba3084b70162a6b91efceee8a3f06b19e43dac3f71841662053c0584209a"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:a1c66e71ecfd2a4acf0e4bd75e7a3605afa8f9b28a3b497e4ba962719df2be57"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:8d67beb6002441faef8251c45e24994de32c4c8686f7356a1f601ad7c466f7c3"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a1e17d8dc8e57d8e0fd21f8f0f0a5211b3fa258b2e444c2053471ef93fe25a00"}, + {file = "rpds_py-0.23.1.tar.gz", hash = "sha256:7f3240dcfa14d198dba24b8b9cb3b108c06b68d45b7babd9eefc1038fdf7e707"}, ] [[package]] name = "ruamel-yaml" -version = "0.18.6" +version = "0.18.10" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ - {file = "ruamel.yaml-0.18.6-py3-none-any.whl", hash = "sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636"}, - {file = "ruamel.yaml-0.18.6.tar.gz", hash = "sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b"}, + {file = "ruamel.yaml-0.18.10-py3-none-any.whl", hash = "sha256:30f22513ab2301b3d2b577adc121c6471f28734d3d9728581245f1e76468b4f1"}, + {file = "ruamel.yaml-0.18.10.tar.gz", hash = "sha256:20c86ab29ac2153f80a428e1254a8adf686d3383df04490514ca3b79a362db58"}, ] [package.dependencies] @@ -1904,6 +1994,8 @@ version = "0.2.12" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" optional = false python-versions = ">=3.9" +groups = ["main"] +markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\"" files = [ {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969"}, @@ -1911,6 +2003,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd"}, + {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da"}, {file = "ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6"}, @@ -1919,6 +2012,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2"}, + {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4"}, {file = "ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632"}, @@ -1927,6 +2021,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680"}, + {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5"}, {file = "ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a"}, @@ -1935,6 +2030,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1"}, + {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6"}, {file = "ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:fc4b630cd3fa2cf7fce38afa91d7cfe844a9f75d7f0f36393fa98815e911d987"}, @@ -1943,6 +2039,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2f1c3765db32be59d18ab3953f43ab62a761327aafc1594a2a1fbe038b8b8a7"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d85252669dc32f98ebcd5d36768f5d4faeaeaa2d655ac0473be490ecdae3c285"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e143ada795c341b56de9418c58d028989093ee611aa27ffb9b7f609c00d813ed"}, + {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2c59aa6170b990d8d2719323e628aaf36f3bfbc1c26279c0eeeb24d05d2d11c7"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win32.whl", hash = "sha256:beffaed67936fbbeffd10966a4eb53c402fafd3d6833770516bf7314bc6ffa12"}, {file = "ruamel.yaml.clib-0.2.12-cp39-cp39-win_amd64.whl", hash = "sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b"}, {file = "ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f"}, @@ -1950,146 +2047,161 @@ files = [ [[package]] name = "scipy" -version = "1.14.1" +version = "1.15.2" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = ">=3.10" -files = [ - {file = "scipy-1.14.1-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:b28d2ca4add7ac16ae8bb6632a3c86e4b9e4d52d3e34267f6e1b0c1f8d87e389"}, - {file = "scipy-1.14.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d0d2821003174de06b69e58cef2316a6622b60ee613121199cb2852a873f8cf3"}, - {file = "scipy-1.14.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:8bddf15838ba768bb5f5083c1ea012d64c9a444e16192762bd858f1e126196d0"}, - {file = "scipy-1.14.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:97c5dddd5932bd2a1a31c927ba5e1463a53b87ca96b5c9bdf5dfd6096e27efc3"}, - {file = "scipy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ff0a7e01e422c15739ecd64432743cf7aae2b03f3084288f399affcefe5222d"}, - {file = "scipy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e32dced201274bf96899e6491d9ba3e9a5f6b336708656466ad0522d8528f69"}, - {file = "scipy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8426251ad1e4ad903a4514712d2fa8fdd5382c978010d1c6f5f37ef286a713ad"}, - {file = "scipy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:a49f6ed96f83966f576b33a44257d869756df6cf1ef4934f59dd58b25e0327e5"}, - {file = "scipy-1.14.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:2da0469a4ef0ecd3693761acbdc20f2fdeafb69e6819cc081308cc978153c675"}, - {file = "scipy-1.14.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c0ee987efa6737242745f347835da2cc5bb9f1b42996a4d97d5c7ff7928cb6f2"}, - {file = "scipy-1.14.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3a1b111fac6baec1c1d92f27e76511c9e7218f1695d61b59e05e0fe04dc59617"}, - {file = "scipy-1.14.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8475230e55549ab3f207bff11ebfc91c805dc3463ef62eda3ccf593254524ce8"}, - {file = "scipy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:278266012eb69f4a720827bdd2dc54b2271c97d84255b2faaa8f161a158c3b37"}, - {file = "scipy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fef8c87f8abfb884dac04e97824b61299880c43f4ce675dd2cbeadd3c9b466d2"}, - {file = "scipy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b05d43735bb2f07d689f56f7b474788a13ed8adc484a85aa65c0fd931cf9ccd2"}, - {file = "scipy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:716e389b694c4bb564b4fc0c51bc84d381735e0d39d3f26ec1af2556ec6aad94"}, - {file = "scipy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:631f07b3734d34aced009aaf6fedfd0eb3498a97e581c3b1e5f14a04164a456d"}, - {file = "scipy-1.14.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:af29a935803cc707ab2ed7791c44288a682f9c8107bc00f0eccc4f92c08d6e07"}, - {file = "scipy-1.14.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:2843f2d527d9eebec9a43e6b406fb7266f3af25a751aa91d62ff416f54170bc5"}, - {file = "scipy-1.14.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:eb58ca0abd96911932f688528977858681a59d61a7ce908ffd355957f7025cfc"}, - {file = "scipy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30ac8812c1d2aab7131a79ba62933a2a76f582d5dbbc695192453dae67ad6310"}, - {file = "scipy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f9ea80f2e65bdaa0b7627fb00cbeb2daf163caa015e59b7516395fe3bd1e066"}, - {file = "scipy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:edaf02b82cd7639db00dbff629995ef185c8df4c3ffa71a5562a595765a06ce1"}, - {file = "scipy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:2ff38e22128e6c03ff73b6bb0f85f897d2362f8c052e3b8ad00532198fbdae3f"}, - {file = "scipy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1729560c906963fc8389f6aac023739ff3983e727b1a4d87696b7bf108316a79"}, - {file = "scipy-1.14.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:4079b90df244709e675cdc8b93bfd8a395d59af40b72e339c2287c91860deb8e"}, - {file = "scipy-1.14.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e0cf28db0f24a38b2a0ca33a85a54852586e43cf6fd876365c86e0657cfe7d73"}, - {file = "scipy-1.14.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0c2f95de3b04e26f5f3ad5bb05e74ba7f68b837133a4492414b3afd79dfe540e"}, - {file = "scipy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b99722ea48b7ea25e8e015e8341ae74624f72e5f21fc2abd45f3a93266de4c5d"}, - {file = "scipy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5149e3fd2d686e42144a093b206aef01932a0059c2a33ddfa67f5f035bdfe13e"}, - {file = "scipy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e4f5a7c49323533f9103d4dacf4e4f07078f360743dec7f7596949149efeec06"}, - {file = "scipy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:baff393942b550823bfce952bb62270ee17504d02a1801d7fd0719534dfb9c84"}, - {file = "scipy-1.14.1.tar.gz", hash = "sha256:5a275584e726026a5699459aa72f828a610821006228e841b94275c4a7c08417"}, +groups = ["main"] +files = [ + {file = "scipy-1.15.2-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a2ec871edaa863e8213ea5df811cd600734f6400b4af272e1c011e69401218e9"}, + {file = "scipy-1.15.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:6f223753c6ea76983af380787611ae1291e3ceb23917393079dcc746ba60cfb5"}, + {file = "scipy-1.15.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:ecf797d2d798cf7c838c6d98321061eb3e72a74710e6c40540f0e8087e3b499e"}, + {file = "scipy-1.15.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:9b18aa747da280664642997e65aab1dd19d0c3d17068a04b3fe34e2559196cb9"}, + {file = "scipy-1.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87994da02e73549dfecaed9e09a4f9d58a045a053865679aeb8d6d43747d4df3"}, + {file = "scipy-1.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69ea6e56d00977f355c0f84eba69877b6df084516c602d93a33812aa04d90a3d"}, + {file = "scipy-1.15.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:888307125ea0c4466287191e5606a2c910963405ce9671448ff9c81c53f85f58"}, + {file = "scipy-1.15.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9412f5e408b397ff5641080ed1e798623dbe1ec0d78e72c9eca8992976fa65aa"}, + {file = "scipy-1.15.2-cp310-cp310-win_amd64.whl", hash = "sha256:b5e025e903b4f166ea03b109bb241355b9c42c279ea694d8864d033727205e65"}, + {file = "scipy-1.15.2-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:92233b2df6938147be6fa8824b8136f29a18f016ecde986666be5f4d686a91a4"}, + {file = "scipy-1.15.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:62ca1ff3eb513e09ed17a5736929429189adf16d2d740f44e53270cc800ecff1"}, + {file = "scipy-1.15.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4c6676490ad76d1c2894d77f976144b41bd1a4052107902238047fb6a473e971"}, + {file = "scipy-1.15.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:a8bf5cb4a25046ac61d38f8d3c3426ec11ebc350246a4642f2f315fe95bda655"}, + {file = "scipy-1.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a8e34cf4c188b6dd004654f88586d78f95639e48a25dfae9c5e34a6dc34547e"}, + {file = "scipy-1.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28a0d2c2075946346e4408b211240764759e0fabaeb08d871639b5f3b1aca8a0"}, + {file = "scipy-1.15.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:42dabaaa798e987c425ed76062794e93a243be8f0f20fff6e7a89f4d61cb3d40"}, + {file = "scipy-1.15.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6f5e296ec63c5da6ba6fa0343ea73fd51b8b3e1a300b0a8cae3ed4b1122c7462"}, + {file = "scipy-1.15.2-cp311-cp311-win_amd64.whl", hash = "sha256:597a0c7008b21c035831c39927406c6181bcf8f60a73f36219b69d010aa04737"}, + {file = "scipy-1.15.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c4697a10da8f8765bb7c83e24a470da5797e37041edfd77fd95ba3811a47c4fd"}, + {file = "scipy-1.15.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:869269b767d5ee7ea6991ed7e22b3ca1f22de73ab9a49c44bad338b725603301"}, + {file = "scipy-1.15.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:bad78d580270a4d32470563ea86c6590b465cb98f83d760ff5b0990cb5518a93"}, + {file = "scipy-1.15.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:b09ae80010f52efddb15551025f9016c910296cf70adbf03ce2a8704f3a5ad20"}, + {file = "scipy-1.15.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a6fd6eac1ce74a9f77a7fc724080d507c5812d61e72bd5e4c489b042455865e"}, + {file = "scipy-1.15.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b871df1fe1a3ba85d90e22742b93584f8d2b8e6124f8372ab15c71b73e428b8"}, + {file = "scipy-1.15.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:03205d57a28e18dfd39f0377d5002725bf1f19a46f444108c29bdb246b6c8a11"}, + {file = "scipy-1.15.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:601881dfb761311045b03114c5fe718a12634e5608c3b403737ae463c9885d53"}, + {file = "scipy-1.15.2-cp312-cp312-win_amd64.whl", hash = "sha256:e7c68b6a43259ba0aab737237876e5c2c549a031ddb7abc28c7b47f22e202ded"}, + {file = "scipy-1.15.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01edfac9f0798ad6b46d9c4c9ca0e0ad23dbf0b1eb70e96adb9fa7f525eff0bf"}, + {file = "scipy-1.15.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:08b57a9336b8e79b305a143c3655cc5bdbe6d5ece3378578888d2afbb51c4e37"}, + {file = "scipy-1.15.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:54c462098484e7466362a9f1672d20888f724911a74c22ae35b61f9c5919183d"}, + {file = "scipy-1.15.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:cf72ff559a53a6a6d77bd8eefd12a17995ffa44ad86c77a5df96f533d4e6c6bb"}, + {file = "scipy-1.15.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9de9d1416b3d9e7df9923ab23cd2fe714244af10b763975bea9e4f2e81cebd27"}, + {file = "scipy-1.15.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb530e4794fc8ea76a4a21ccb67dea33e5e0e60f07fc38a49e821e1eae3b71a0"}, + {file = "scipy-1.15.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5ea7ed46d437fc52350b028b1d44e002646e28f3e8ddc714011aaf87330f2f32"}, + {file = "scipy-1.15.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11e7ad32cf184b74380f43d3c0a706f49358b904fa7d5345f16ddf993609184d"}, + {file = "scipy-1.15.2-cp313-cp313-win_amd64.whl", hash = "sha256:a5080a79dfb9b78b768cebf3c9dcbc7b665c5875793569f48bf0e2b1d7f68f6f"}, + {file = "scipy-1.15.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:447ce30cee6a9d5d1379087c9e474628dab3db4a67484be1b7dc3196bfb2fac9"}, + {file = "scipy-1.15.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:c90ebe8aaa4397eaefa8455a8182b164a6cc1d59ad53f79943f266d99f68687f"}, + {file = "scipy-1.15.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:def751dd08243934c884a3221156d63e15234a3155cf25978b0a668409d45eb6"}, + {file = "scipy-1.15.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:302093e7dfb120e55515936cb55618ee0b895f8bcaf18ff81eca086c17bd80af"}, + {file = "scipy-1.15.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd5b77413e1855351cdde594eca99c1f4a588c2d63711388b6a1f1c01f62274"}, + {file = "scipy-1.15.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d0194c37037707b2afa7a2f2a924cf7bac3dc292d51b6a925e5fcb89bc5c776"}, + {file = "scipy-1.15.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:bae43364d600fdc3ac327db99659dcb79e6e7ecd279a75fe1266669d9a652828"}, + {file = "scipy-1.15.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f031846580d9acccd0044efd1a90e6f4df3a6e12b4b6bd694a7bc03a89892b28"}, + {file = "scipy-1.15.2-cp313-cp313t-win_amd64.whl", hash = "sha256:fe8a9eb875d430d81755472c5ba75e84acc980e4a8f6204d402849234d3017db"}, + {file = "scipy-1.15.2.tar.gz", hash = "sha256:cd58a314d92838f7e6f755c8a2167ead4f27e1fd5c1251fd54289569ef3495ec"}, ] [package.dependencies] -numpy = ">=1.23.5,<2.3" +numpy = ">=1.23.5,<2.5" [package.extras] dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy (==1.10.0)", "pycodestyle", "pydevtool", "rich-click", "ruff (>=0.0.292)", "types-psutil", "typing_extensions"] -doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.13.1)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<=7.3.7)", "sphinx-design (>=0.4.0)"] -test = ["Cython", "array-api-strict (>=2.0)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +doc = ["intersphinx_registry", "jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.16.5)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<8.0.0)", "sphinx-copybutton", "sphinx-design (>=0.4.0)"] +test = ["Cython", "array-api-strict (>=2.0,<2.1.1)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "setproctitle" -version = "1.3.4" +version = "1.3.5" description = "A Python module to customize the process title" optional = false python-versions = ">=3.8" -files = [ - {file = "setproctitle-1.3.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0f6661a69c68349172ba7b4d5dd65fec2b0917abc99002425ad78c3e58cf7595"}, - {file = "setproctitle-1.3.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:754bac5e470adac7f7ec2239c485cd0b75f8197ca8a5b86ffb20eb3a3676cc42"}, - {file = "setproctitle-1.3.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7bc7088c15150745baf66db62a4ced4507d44419eb66207b609f91b64a682af"}, - {file = "setproctitle-1.3.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a46ef3ecf61e4840fbc1145fdd38acf158d0da7543eda7b773ed2b30f75c2830"}, - {file = "setproctitle-1.3.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffcb09d5c0ffa043254ec9a734a73f3791fec8bf6333592f906bb2e91ed2af1a"}, - {file = "setproctitle-1.3.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06c16b7a91cdc5d700271899e4383384a61aae83a3d53d0e2e5a266376083342"}, - {file = "setproctitle-1.3.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9f9732e59863eaeedd3feef94b2b216cb86d40dda4fad2d0f0aaec3b31592716"}, - {file = "setproctitle-1.3.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e152f4ab9ea1632b5fecdd87cee354f2b2eb6e2dfc3aceb0eb36a01c1e12f94c"}, - {file = "setproctitle-1.3.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:020ea47a79b2bbd7bd7b94b85ca956ba7cb026e82f41b20d2e1dac4008cead25"}, - {file = "setproctitle-1.3.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8c52b12b10e4057fc302bd09cb3e3f28bb382c30c044eb3396e805179a8260e4"}, - {file = "setproctitle-1.3.4-cp310-cp310-win32.whl", hash = "sha256:a65a147f545f3fac86f11acb2d0b316d3e78139a9372317b7eb50561b2817ba0"}, - {file = "setproctitle-1.3.4-cp310-cp310-win_amd64.whl", hash = "sha256:66821fada6426998762a3650a37fba77e814a249a95b1183011070744aff47f6"}, - {file = "setproctitle-1.3.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0f749f07002c2d6fecf37cedc43207a88e6c651926a470a5f229070cf791879"}, - {file = "setproctitle-1.3.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:90ea8d302a5d30b948451d146e94674a3c5b020cc0ced9a1c28f8ddb0f203a5d"}, - {file = "setproctitle-1.3.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f859c88193ed466bee4eb9d45fbc29d2253e6aa3ccd9119c9a1d8d95f409a60d"}, - {file = "setproctitle-1.3.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b3afa5a0ed08a477ded239c05db14c19af585975194a00adf594d48533b23701"}, - {file = "setproctitle-1.3.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a78fce9018cc3e9a772b6537bbe3fe92380acf656c9f86db2f45e685af376e"}, - {file = "setproctitle-1.3.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d758e2eed2643afac5f2881542fbb5aa97640b54be20d0a5ed0691d02f0867d"}, - {file = "setproctitle-1.3.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ef133a1a2ee378d549048a12d56f4ef0e2b9113b0b25b6b77821e9af94d50634"}, - {file = "setproctitle-1.3.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1d2a154b79d5fb42d1eff06e05e22f0e8091261d877dd47b37d31352b74ecc37"}, - {file = "setproctitle-1.3.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:202eae632815571297833876a0f407d0d9c7ad9d843b38adbe687fe68c5192ee"}, - {file = "setproctitle-1.3.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2b0080819859e80a7776ac47cf6accb4b7ad313baf55fabac89c000480dcd103"}, - {file = "setproctitle-1.3.4-cp311-cp311-win32.whl", hash = "sha256:9c9d7d1267dee8c6627963d9376efa068858cfc8f573c083b1b6a2d297a8710f"}, - {file = "setproctitle-1.3.4-cp311-cp311-win_amd64.whl", hash = "sha256:475986ddf6df65d619acd52188336a20f616589403f5a5ceb3fc70cdc137037a"}, - {file = "setproctitle-1.3.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d06990dcfcd41bb3543c18dd25c8476fbfe1f236757f42fef560f6aa03ac8dfc"}, - {file = "setproctitle-1.3.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:317218c9d8b17a010ab2d2f0851e8ef584077a38b1ba2b7c55c9e44e79a61e73"}, - {file = "setproctitle-1.3.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb5fefb53b9d9f334a5d9ec518a36b92a10b936011ac8a6b6dffd60135f16459"}, - {file = "setproctitle-1.3.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0855006261635e8669646c7c304b494b6df0a194d2626683520103153ad63cc9"}, - {file = "setproctitle-1.3.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a88e466fcaee659679c1d64dcb2eddbcb4bfadffeb68ba834d9c173a25b6184"}, - {file = "setproctitle-1.3.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f963b6ed8ba33eda374a98d979e8a0eaf21f891b6e334701693a2c9510613c4c"}, - {file = "setproctitle-1.3.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:122c2e05697fa91f5d23f00bbe98a9da1bd457b32529192e934095fadb0853f1"}, - {file = "setproctitle-1.3.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:1bba0a866f5895d5b769d8c36b161271c7fd407e5065862ab80ff91c29fbe554"}, - {file = "setproctitle-1.3.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:97f1f861998e326e640708488c442519ad69046374b2c3fe9bcc9869b387f23c"}, - {file = "setproctitle-1.3.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:726aee40357d4bdb70115442cb85ccc8e8bc554fc0bbbaa3a57cbe81df42287d"}, - {file = "setproctitle-1.3.4-cp312-cp312-win32.whl", hash = "sha256:04d6ba8b816dbb0bfd62000b0c3e583160893e6e8c4233e1dca1a9ae4d95d924"}, - {file = "setproctitle-1.3.4-cp312-cp312-win_amd64.whl", hash = "sha256:9c76e43cb351ba8887371240b599925cdf3ecececc5dfb7125c71678e7722c55"}, - {file = "setproctitle-1.3.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d6e3b177e634aa6bbbfbf66d097b6d1cdb80fc60e912c7d8bace2e45699c07dd"}, - {file = "setproctitle-1.3.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6b17655a5f245b416e127e02087ea6347a48821cc4626bc0fd57101bfcd88afc"}, - {file = "setproctitle-1.3.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa5057a86df920faab8ee83960b724bace01a3231eb8e3f2c93d78283504d598"}, - {file = "setproctitle-1.3.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149fdfb8a26a555780c4ce53c92e6d3c990ef7b30f90a675eca02e83c6d5f76d"}, - {file = "setproctitle-1.3.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ded03546938a987f463c68ab98d683af87a83db7ac8093bbc179e77680be5ba2"}, - {file = "setproctitle-1.3.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ab9f5b7f2bbc1754bc6292d9a7312071058e5a891b0391e6d13b226133f36aa"}, - {file = "setproctitle-1.3.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0b19813c852566fa031902124336fa1f080c51e262fc90266a8c3d65ca47b74c"}, - {file = "setproctitle-1.3.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:db78b645dc63c0ccffca367a498f3b13492fb106a2243a1e998303ba79c996e2"}, - {file = "setproctitle-1.3.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b669aaac70bd9f03c070270b953f78d9ee56c4af6f0ff9f9cd3e6d1878c10b40"}, - {file = "setproctitle-1.3.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6dc3d656702791565994e64035a208be56b065675a5bc87b644c657d6d9e2232"}, - {file = "setproctitle-1.3.4-cp313-cp313-win32.whl", hash = "sha256:091f682809a4d12291cf0205517619d2e7014986b7b00ebecfde3d76f8ae5a8f"}, - {file = "setproctitle-1.3.4-cp313-cp313-win_amd64.whl", hash = "sha256:adcd6ba863a315702184d92d3d3bbff290514f24a14695d310f02ae5e28bd1f7"}, - {file = "setproctitle-1.3.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:acf41cf91bbc5a36d1fa4455a818bb02bf2a4ccfed2f892ba166ba2fcbb0ec8a"}, - {file = "setproctitle-1.3.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ceb3ce3262b0e8e088e4117175591b7a82b3bdc5e52e33b1e74778b5fb53fd38"}, - {file = "setproctitle-1.3.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b2ef636a6a25fe7f3d5a064bea0116b74a4c8c7df9646b17dc7386c439a26cf"}, - {file = "setproctitle-1.3.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:28b8614de08679ae95bc4e8d6daaef6b61afdf027fa0d23bf13d619000286b3c"}, - {file = "setproctitle-1.3.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:24f3c8be826a7d44181eac2269b15b748b76d98cd9a539d4c69f09321dcb5c12"}, - {file = "setproctitle-1.3.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc9d79b1bf833af63b7c720a6604eb16453ac1ad4e718eb8b59d1f97d986b98c"}, - {file = "setproctitle-1.3.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fb693000b65842c85356b667d057ae0d0bac6519feca7e1c437cc2cfeb0afc59"}, - {file = "setproctitle-1.3.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:a166251b8fbc6f2755e2ce9d3c11e9edb0c0c7d2ed723658ff0161fbce26ac1c"}, - {file = "setproctitle-1.3.4-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:0361428e6378911a378841509c56ba472d991cbed1a7e3078ec0cacc103da44a"}, - {file = "setproctitle-1.3.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:62d66e0423e3bd520b4c897063506b309843a8d07343fbfad04197e91a4edd28"}, - {file = "setproctitle-1.3.4-cp38-cp38-win32.whl", hash = "sha256:5edd01909348f3b0b2da329836d6b5419cd4869fec2e118e8ff3275b38af6267"}, - {file = "setproctitle-1.3.4-cp38-cp38-win_amd64.whl", hash = "sha256:59e0dda9ad245921af0328035a961767026e1fa94bb65957ab0db0a0491325d6"}, - {file = "setproctitle-1.3.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bdaaa81a6e95a0a19fba0285f10577377f3503ae4e9988b403feba79da3e2f80"}, - {file = "setproctitle-1.3.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ee5b19a2d794463bcc19153dfceede7beec784b4cf7967dec0bc0fc212ab3a3"}, - {file = "setproctitle-1.3.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3058a1bb0c767b3a6ccbb38b27ef870af819923eb732e21e44a3f300370fe159"}, - {file = "setproctitle-1.3.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a97d37ee4fe0d1c6e87d2a97229c27a88787a8f4ebfbdeee95f91b818e52efe"}, - {file = "setproctitle-1.3.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e61dd7d05da11fc69bb86d51f1e0ee08f74dccf3ecf884c94de41135ffdc75d"}, - {file = "setproctitle-1.3.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eb115d53dc2a1299ae72f1119c96a556db36073bacb6da40c47ece5db0d9587"}, - {file = "setproctitle-1.3.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:342570716e2647a51ea859b8a9126da9dc1a96a0153c9c0a3514effd60ab57ad"}, - {file = "setproctitle-1.3.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0ad212ae2b03951367a69584af034579b34e1e4199a75d377ef9f8e08ee299b1"}, - {file = "setproctitle-1.3.4-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4afcb38e22122465013f4621b7e9ff8d42a7a48ae0ffeb94133a806cb91b4aad"}, - {file = "setproctitle-1.3.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:30bb223e6c3f95ad9e9bb2a113292759e947d1cfd60dbd4adb55851c370006b2"}, - {file = "setproctitle-1.3.4-cp39-cp39-win32.whl", hash = "sha256:5f0521ed3bb9f02e9486573ea95e2062cd6bf036fa44e640bd54a06f22d85f35"}, - {file = "setproctitle-1.3.4-cp39-cp39-win_amd64.whl", hash = "sha256:0baadeb27f9e97e65922b4151f818b19c311d30b9efdb62af0e53b3db4006ce2"}, - {file = "setproctitle-1.3.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:939d364a187b2adfbf6ae488664277e717d56c7951a4ddeb4f23b281bc50bfe5"}, - {file = "setproctitle-1.3.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb8a6a19be0cbf6da6fcbf3698b76c8af03fe83e4bd77c96c3922be3b88bf7da"}, - {file = "setproctitle-1.3.4-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:779006f9e1aade9522a40e8d9635115ab15dd82b7af8e655967162e9c01e2573"}, - {file = "setproctitle-1.3.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5519f2a7b8c535b0f1f77b30441476571373add72008230c81211ee17b423b57"}, - {file = "setproctitle-1.3.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:743836d484151334ebba1490d6907ca9e718fe815dcd5756f2a01bc3067d099c"}, - {file = "setproctitle-1.3.4-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abda20aff8d1751e48d7967fa8945fef38536b82366c49be39b83678d4be3893"}, - {file = "setproctitle-1.3.4-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a2041b5788ce52f218b5be94af458e04470f997ab46fdebd57cf0b8374cc20e"}, - {file = "setproctitle-1.3.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:2c3b1ce68746557aa6e6f4547e76883925cdc7f8d7c7a9f518acd203f1265ca5"}, - {file = "setproctitle-1.3.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:0b6a4cbabf024cb263a45bdef425760f14470247ff223f0ec51699ca9046c0fe"}, - {file = "setproctitle-1.3.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e55d7ecc68bdc80de5a553691a3ed260395d5362c19a266cf83cbb4e046551f"}, - {file = "setproctitle-1.3.4-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02ca3802902d91a89957f79da3ec44b25b5804c88026362cb85eea7c1fbdefd1"}, - {file = "setproctitle-1.3.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:47669fc8ed8b27baa2d698104732234b5389f6a59c37c046f6bcbf9150f7a94e"}, - {file = "setproctitle-1.3.4.tar.gz", hash = "sha256:3b40d32a3e1f04e94231ed6dfee0da9e43b4f9c6b5450d53e6dd7754c34e0c50"}, +groups = ["main"] +files = [ + {file = "setproctitle-1.3.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:02870e0cb0de7f68a7a8a5b23c2bc0ce63821cab3d9b126f9be80bb6cd674c80"}, + {file = "setproctitle-1.3.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:55b278135be742b8901067479626d909f6613bd2d2c4fd0de6bb46f80e07a919"}, + {file = "setproctitle-1.3.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53fc971f7bf7a674f571a23cdec70f2f0ac88152c59c06aa0808d0be6d834046"}, + {file = "setproctitle-1.3.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb0500e1bc6f00b8ba696c3743ddff14c8679e3c2ca9d292c008ac51488d17cf"}, + {file = "setproctitle-1.3.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:995b3ac1b5fe510f4e1d1c19ebf19f4bceb448f2d6e8d99ea23f33cb6f1a277e"}, + {file = "setproctitle-1.3.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5a05e2c3fdfbda32b9c9da72d0506398d1efb5bd2c5981b9e12d3622eb3d4f9"}, + {file = "setproctitle-1.3.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:310c7f4ca4c8476a9840b2cd4b22ee602a49a3c902fdcd2dd8284685abd10a9a"}, + {file = "setproctitle-1.3.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:867af4a5c3d85484fbcc50ea88bcd375acf709cff88a3259575361849c0da351"}, + {file = "setproctitle-1.3.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8ec0a7fe9f1ba90900144489bc93ce7dd4dec3f3df1e7f188c9e58364fe4a4c5"}, + {file = "setproctitle-1.3.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:aaee7acba2733a14a886488b7495bfec4a8d6407124c04a0946dbde1684230a3"}, + {file = "setproctitle-1.3.5-cp310-cp310-win32.whl", hash = "sha256:bd2cccd972e4282af4ce2c13cd9ebdf07be157eabafd8ce648fffdc8ae6fbe28"}, + {file = "setproctitle-1.3.5-cp310-cp310-win_amd64.whl", hash = "sha256:81f2328ac34c9584e1e5f87eea916c0bc48476a06606a07debae07acdd7ab5ea"}, + {file = "setproctitle-1.3.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1c8dcc250872385f2780a5ea58050b58cbc8b6a7e8444952a5a65c359886c593"}, + {file = "setproctitle-1.3.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ca82fae9eb4800231dd20229f06e8919787135a5581da245b8b05e864f34cc8b"}, + {file = "setproctitle-1.3.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0424e1d33232322541cb36fb279ea5242203cd6f20de7b4fb2a11973d8e8c2ce"}, + {file = "setproctitle-1.3.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fec8340ab543144d04a9d805d80a0aad73fdeb54bea6ff94e70d39a676ea4ec0"}, + {file = "setproctitle-1.3.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eab441c89f181271ab749077dcc94045a423e51f2fb0b120a1463ef9820a08d0"}, + {file = "setproctitle-1.3.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2c371550a2288901a0dcd84192691ebd3197a43c95f3e0b396ed6d1cedf5c6c"}, + {file = "setproctitle-1.3.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:78288ff5f9c415c56595b2257ad218936dd9fa726b36341b373b31ca958590fe"}, + {file = "setproctitle-1.3.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f1f13a25fc46731acab518602bb1149bfd8b5fabedf8290a7c0926d61414769d"}, + {file = "setproctitle-1.3.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1534d6cd3854d035e40bf4c091984cbdd4d555d7579676d406c53c8f187c006f"}, + {file = "setproctitle-1.3.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:62a01c76708daac78b9688ffb95268c57cb57fa90b543043cda01358912fe2db"}, + {file = "setproctitle-1.3.5-cp311-cp311-win32.whl", hash = "sha256:ea07f29735d839eaed985990a0ec42c8aecefe8050da89fec35533d146a7826d"}, + {file = "setproctitle-1.3.5-cp311-cp311-win_amd64.whl", hash = "sha256:ab3ae11e10d13d514d4a5a15b4f619341142ba3e18da48c40e8614c5a1b5e3c3"}, + {file = "setproctitle-1.3.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:523424b9be4dea97d95b8a584b183f35c7bab2d0a3d995b01febf5b8a8de90e4"}, + {file = "setproctitle-1.3.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b6ec1d86c1b4d7b5f2bdceadf213310cf24696b82480a2a702194b8a0bfbcb47"}, + {file = "setproctitle-1.3.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea6c505264275a43e9b2acd2acfc11ac33caf52bc3167c9fced4418a810f6b1c"}, + {file = "setproctitle-1.3.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b91e68e6685998e6353f296100ecabc313a6cb3e413d66a03d74b988b61f5ff"}, + {file = "setproctitle-1.3.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc1fda208ae3a2285ad27aeab44c41daf2328abe58fa3270157a739866779199"}, + {file = "setproctitle-1.3.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:828727d220e46f048b82289018300a64547b46aaed96bf8810c05fe105426b41"}, + {file = "setproctitle-1.3.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:83b016221cf80028b2947be20630faa14e3e72a403e35f0ba29550b4e856767b"}, + {file = "setproctitle-1.3.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6d8a411e752e794d052434139ca4234ffeceeb8d8d8ddc390a9051d7942b2726"}, + {file = "setproctitle-1.3.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:50cfbf86b9c63a2c2903f1231f0a58edeb775e651ae1af84eec8430b0571f29b"}, + {file = "setproctitle-1.3.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f3b5e2eacd572444770026c9dd3ddc7543ce427cdf452d40a408d1e95beefb30"}, + {file = "setproctitle-1.3.5-cp312-cp312-win32.whl", hash = "sha256:cf4e3ded98027de2596c6cc5bbd3302adfb3ca315c848f56516bb0b7e88de1e9"}, + {file = "setproctitle-1.3.5-cp312-cp312-win_amd64.whl", hash = "sha256:f7a8c01ffd013dda2bed6e7d5cb59fbb609e72f805abf3ee98360f38f7758d9b"}, + {file = "setproctitle-1.3.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:162fd76781f57f42ddf27c475e5fef6a8df4fdd69b28dd554e53e2eb2bfe0f95"}, + {file = "setproctitle-1.3.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4969d996bdfbe23bbd023cd0bae6c73a27371615c4ec5296a60cecce268659ef"}, + {file = "setproctitle-1.3.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd70c95a94473216e7c7a7a1f7d8ecbaca5b16d4ba93ddbfd32050fc485a8451"}, + {file = "setproctitle-1.3.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7a887582bfdb6dcbc482db0ef9e630ad23ca95875806ef2b444bf6fbd7b7d7ca"}, + {file = "setproctitle-1.3.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:755671c39a9e70834eeec6dc6b61e344399c49881d2e7ea3534a1c69669dd9cc"}, + {file = "setproctitle-1.3.5-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ab52b4c2ce056a1b60d439991a81ca90f019488d4b4f64b2779e6badd3677e6"}, + {file = "setproctitle-1.3.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36178b944019ec7fc52bb967ffeee296a11d373734a7be276755bedb3db5c141"}, + {file = "setproctitle-1.3.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:269d41cd4f085b69821d1ee6599124f02dbbc79962b256e260b6c9021d037994"}, + {file = "setproctitle-1.3.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d880630fd81d1b3bde121c352ca7ea2f2ff507ef40c3c011d0928ed491f912c9"}, + {file = "setproctitle-1.3.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8a7fed67ab49f60bd51f3b4cffff3f8d754d1bb0a40e42869911301ec6519b65"}, + {file = "setproctitle-1.3.5-cp313-cp313-win32.whl", hash = "sha256:e9c0d0cfcf715631b10d5950d04a9978f63bc46535724ef7c2eaf1dca9988642"}, + {file = "setproctitle-1.3.5-cp313-cp313-win_amd64.whl", hash = "sha256:e1d28eb98c91fbebd3e443a45c7da5d84974959851ef304c330eabd654a386f1"}, + {file = "setproctitle-1.3.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8995a1217b52d11d92bafd069961a47c5e13d8751ca976a32b3ecbbd471eaf9b"}, + {file = "setproctitle-1.3.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ae2ce64ea87837c4e3e65a7a232ff80cf09aa7d916e74cb34a245c47fcd87981"}, + {file = "setproctitle-1.3.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20b84de1780bbb0adc67560a113a0ea57e6ecfce2325680de8efe6c2a2f781ac"}, + {file = "setproctitle-1.3.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b1d2628ac9868f960d7e87b3a9b2bb337104c3644b699e52e01efd7e106e4fe"}, + {file = "setproctitle-1.3.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa912c4d08c66afda30dd5af8f2e9c59065dfc36a51edbd5419c3a7c962875aa"}, + {file = "setproctitle-1.3.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc4f783e100f8b451cd92fcabd3b831edfb1f7cb02be4a79b972f138e0001885"}, + {file = "setproctitle-1.3.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8ca56e39d10b6758046694a84950e5c5570a034c409ef3337595f64fc2cfa94d"}, + {file = "setproctitle-1.3.5-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:8915d69260ba6a6aaf9a48f6b53dbf9f8e4dc0cb4ae25bc5edb16a1666b6e47c"}, + {file = "setproctitle-1.3.5-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7edd4fbb9fd17ed0e5a7f8bde9fa61c3987a34372084c45bab4eab6a2e554762"}, + {file = "setproctitle-1.3.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d0b19fd76d46b8096a463724739c3b09cf5ce38317f559f56f424f6ce7158de3"}, + {file = "setproctitle-1.3.5-cp38-cp38-win32.whl", hash = "sha256:53ce572cdbd43a0bed2aa24299cd823ebf233a7fa720cc7f8634728c213679c0"}, + {file = "setproctitle-1.3.5-cp38-cp38-win_amd64.whl", hash = "sha256:a58f00f35d6038ce1e8a9e5f87cb5ecce13ce118c5977a603566ad1fccc8d2cb"}, + {file = "setproctitle-1.3.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c4b299b5bbadf00034978b8d741c85af25173146747eb9dab22596ec805a52d6"}, + {file = "setproctitle-1.3.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d57e7626329d4fb138da5ce15270b08a91326969956fb19c7a8fec2639066704"}, + {file = "setproctitle-1.3.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4272295721cf1fd2acf960b674d6dc09bec87f2a1e48995817b4ec4a3d483faf"}, + {file = "setproctitle-1.3.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f8305b6e6c203222c61318f338f1de08269ec66c247bf251593c215ff1fbeaf9"}, + {file = "setproctitle-1.3.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:becc9f3f605936506d2bd63d9cf817b7ee66b10d204184c4a633064dbed579d6"}, + {file = "setproctitle-1.3.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4629de80c47155a26e8d87a0a92d9428aa8d79ccfe2c20fd18888580619704e1"}, + {file = "setproctitle-1.3.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f1af1d310b5b6cda692da52bd862a9833086c0a3f8380fa92505dd23857dcf60"}, + {file = "setproctitle-1.3.5-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3bb6ea3d6e690677619508050bc681d86223723bdf67e4e8a8dffc3d04ca3044"}, + {file = "setproctitle-1.3.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:322067ef1ffe70d297b00bee8a3862fed96021aa4318e3bce2d7c3bfa7a8d1e7"}, + {file = "setproctitle-1.3.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1b58d49c32a46c48dcc2812635a89e6bee31139b03818da49a0bbaeaf01edef9"}, + {file = "setproctitle-1.3.5-cp39-cp39-win32.whl", hash = "sha256:707c23d4a88f5e66f1005d93558bf84eb45fc0fb0c4f33480a0c7d0895e8e848"}, + {file = "setproctitle-1.3.5-cp39-cp39-win_amd64.whl", hash = "sha256:c64199a73d442a06d372b5286942229a43e86fa41bf36f317dcc60c036aff0bb"}, + {file = "setproctitle-1.3.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dc66b84beb0d5eb03abf0c3140c6d2cbe3d67ae9f0824a09dfa8c6ff164319a6"}, + {file = "setproctitle-1.3.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:31dc9b330e7cac7685bdef790747c07914081c11ee1066eb0c597303dfb52010"}, + {file = "setproctitle-1.3.5-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4028639b511f5e641d116b3b54ad70c637ebd1b4baac0948283daf11b104119f"}, + {file = "setproctitle-1.3.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6bddef4e27d0ed74e44b58bf050bc3108591bf17d20d461fc59cd141282f849c"}, + {file = "setproctitle-1.3.5-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:9996be1d1df399c3cdc6d72ce0064e46bc74fc6e29fe16a328511a303dd4d418"}, + {file = "setproctitle-1.3.5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5cefc2dbdc48121022c3c05644cd3706f08e0b3c0ce07814d3c04daba0617936"}, + {file = "setproctitle-1.3.5-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cef63879c79a570aabf7c158f453bf8d1285f0fda4b6b9b7a52d64b49c084d40"}, + {file = "setproctitle-1.3.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a863296a31fb578726c570314cb78ff3a3fddb65963dc01ea33731760f20a92c"}, + {file = "setproctitle-1.3.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b63bda3cb4b6526720dc7c6940b891c593f41771d119aeb8763875801ce2296d"}, + {file = "setproctitle-1.3.5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95913af603da5b4c7635bf1fb67ecc5df7c18360b6cfb6740fd743bb150a6e17"}, + {file = "setproctitle-1.3.5-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36b130cf8fe76dc05ad1d48cc9ff3699eb1f0d8edbf6f46a3ce46a7041e49d7b"}, + {file = "setproctitle-1.3.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe3bfd5e51c24349d022e062a96c316a1b8862ea9a0cf5ea2a8b2ae008b77cec"}, + {file = "setproctitle-1.3.5.tar.gz", hash = "sha256:1e6eaeaf8a734d428a95d8c104643b39af7d247d604f40a7bebcf3960a853c5e"}, ] [package.extras] @@ -2101,19 +2213,23 @@ version = "1.14.3" description = "Python subprocess replacement" optional = false python-versions = "*" +groups = ["main"] +markers = "sys_platform != \"win32\"" files = [ {file = "sh-1.14.3.tar.gz", hash = "sha256:e4045b6c732d9ce75d571c79f5ac2234edd9ae4f5fa9d59b09705082bdca18c7"}, ] [[package]] name = "sh" -version = "2.1.0" +version = "2.2.2" description = "Python subprocess replacement" optional = false python-versions = "<4.0,>=3.8.1" +groups = ["main"] +markers = "" files = [ - {file = "sh-2.1.0-py3-none-any.whl", hash = "sha256:bf5e44178dd96a542126c2774e9b7ab1d89bfe0e2ef84d92e6d0ed7358d63d01"}, - {file = "sh-2.1.0.tar.gz", hash = "sha256:7e27301c574bec8ca5bf6f211851357526455ee97cd27a7c4c6cc5e2375399cb"}, + {file = "sh-2.2.2-py3-none-any.whl", hash = "sha256:e0b15b4ae8ffcd399bc8ffddcbd770a43c7a70a24b16773fbb34c001ad5d52af"}, + {file = "sh-2.2.2.tar.gz", hash = "sha256:653227a7c41a284ec5302173fbc044ee817c7bad5e6e4d8d55741b9aeb9eb65b"}, ] [[package]] @@ -2122,6 +2238,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -2133,6 +2250,7 @@ version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -2152,6 +2270,7 @@ version = "8.5.0" description = "Retry code until it succeeds" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, @@ -2167,6 +2286,8 @@ version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" +groups = ["main"] +markers = "python_version < \"3.11\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -2208,6 +2329,7 @@ version = "0.13.2" description = "Style preserving TOML library" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, @@ -2219,6 +2341,7 @@ version = "5.14.3" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -2234,6 +2357,8 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main"] +markers = "python_version < \"3.13\"" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -2245,6 +2370,7 @@ version = "1.0.3" description = "Micro subset of unicode data files for linkify-it-py projects." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "uc-micro-py-1.0.3.tar.gz", hash = "sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a"}, {file = "uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5"}, @@ -2255,13 +2381,14 @@ test = ["coverage", "pytest", "pytest-cov"] [[package]] name = "urllib3" -version = "2.2.3" +version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main"] files = [ - {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, - {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, + {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, + {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, ] [package.extras] @@ -2276,6 +2403,7 @@ version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" +groups = ["main"] files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -2287,6 +2415,7 @@ version = "1.18.3" description = "Yet another URL library" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34"}, {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7"}, @@ -2378,6 +2507,6 @@ multidict = ">=4.0" propcache = ">=0.2.0" [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.10.0" -content-hash = "e38bfcb8811fb9b774956ed4b0e82603dbe5b66d8cb5bc4af6ed86417a9d5d1d" +content-hash = "b020499c9bfb8350e20d3426276ea2d2cfa530f8b5fcc7a23a2c07173beeacc7" diff --git a/tools/devctr/pyproject.toml b/tools/devctr/pyproject.toml index a4f7178aa5d..a2660a1fe59 100644 --- a/tools/devctr/pyproject.toml +++ b/tools/devctr/pyproject.toml @@ -35,7 +35,7 @@ setproctitle = "^1.3.2" tenacity = "^8.2.2" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/tools/devtool b/tools/devtool index 9011510d7e6..44f10657c06 100755 --- a/tools/devtool +++ b/tools/devtool @@ -68,7 +68,7 @@ DEVCTR_IMAGE_NO_TAG="public.ecr.aws/firecracker/fcuvm" # Development container tag -DEVCTR_IMAGE_TAG=${DEVCTR_IMAGE_TAG:-v78} +DEVCTR_IMAGE_TAG=${DEVCTR_IMAGE_TAG:-v79} # Development container image (name:tag) # This should be updated whenever we upgrade the development container.