mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2024-11-24 20:48:55 +00:00
arch: convert to ThisError and sort
BUG=b:197143586 TEST=cargo check Change-Id: Id02ed4873158e20664b45bf651ba68e0eb715b1c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3105071 Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Dennis Kempin <denniskempin@google.com>
This commit is contained in:
parent
114361eb26
commit
e8e871b085
2 changed files with 53 additions and 78 deletions
107
arch/src/lib.rs
107
arch/src/lib.rs
|
@ -9,7 +9,6 @@ pub mod serial;
|
|||
|
||||
use std::collections::BTreeMap;
|
||||
use std::error::Error as StdError;
|
||||
use std::fmt::{self, Display};
|
||||
use std::fs::File;
|
||||
use std::io::{self, Read, Seek, SeekFrom};
|
||||
use std::path::PathBuf;
|
||||
|
@ -26,8 +25,10 @@ use devices::{
|
|||
};
|
||||
use hypervisor::{IoEventAddress, Vm};
|
||||
use minijail::Minijail;
|
||||
use remain::sorted;
|
||||
use resources::{MmioType, SystemAllocator};
|
||||
use sync::Mutex;
|
||||
use thiserror::Error;
|
||||
use vm_control::{BatControl, BatteryType};
|
||||
use vm_memory::{GuestAddress, GuestMemory, GuestMemoryError};
|
||||
|
||||
|
@ -255,79 +256,69 @@ pub trait LinuxArch {
|
|||
}
|
||||
|
||||
/// Errors for device manager.
|
||||
#[derive(Debug)]
|
||||
#[sorted]
|
||||
#[derive(Error, Debug)]
|
||||
pub enum DeviceRegistrationError {
|
||||
/// No more MMIO space available.
|
||||
#[error("no more addresses are available")]
|
||||
AddrsExhausted,
|
||||
/// Could not allocate device address space for the device.
|
||||
#[error("Allocating device addresses: {0}")]
|
||||
AllocateDeviceAddrs(PciDeviceError),
|
||||
/// Could not allocate IO space for the device.
|
||||
#[error("Allocating IO addresses: {0}")]
|
||||
AllocateIoAddrs(PciDeviceError),
|
||||
/// Could not allocate MMIO or IO resource for the device.
|
||||
#[error("Allocating IO resource: {0}")]
|
||||
AllocateIoResource(resources::Error),
|
||||
/// Could not allocate device address space for the device.
|
||||
AllocateDeviceAddrs(PciDeviceError),
|
||||
/// Could not allocate an IRQ number.
|
||||
#[error("Allocating IRQ number")]
|
||||
AllocateIrq,
|
||||
/// Unable to clone a jail for the device.
|
||||
#[error("failed to clone jail: {0}")]
|
||||
CloneJail(minijail::Error),
|
||||
/// Appending to kernel command line failed.
|
||||
#[error("unable to add device to kernel command line: {0}")]
|
||||
Cmdline(kernel_cmdline::Error),
|
||||
// Unable to create a pipe.
|
||||
#[error("failed to create pipe: {0}")]
|
||||
CreatePipe(base::Error),
|
||||
// Unable to create serial device from serial parameters
|
||||
#[error("failed to create serial device: {0}")]
|
||||
CreateSerialDevice(devices::SerialError),
|
||||
// Unable to create tube
|
||||
#[error("failed to create tube: {0}")]
|
||||
CreateTube(base::TubeError),
|
||||
/// Could not clone an event.
|
||||
#[error("failed to clone event: {0}")]
|
||||
EventClone(base::Error),
|
||||
/// Could not create an event.
|
||||
#[error("failed to create event: {0}")]
|
||||
EventCreate(base::Error),
|
||||
/// No more IRQs are available.
|
||||
#[error("no more IRQs are available")]
|
||||
IrqsExhausted,
|
||||
/// Missing a required serial device.
|
||||
#[error("missing required serial device {0}")]
|
||||
MissingRequiredSerialDevice(u8),
|
||||
/// Could not add a device to the mmio bus.
|
||||
#[error("failed to add to mmio bus: {0}")]
|
||||
MmioInsert(BusError),
|
||||
/// Failed to initialize proxy device for jailed device.
|
||||
#[error("failed to create proxy device: {0}")]
|
||||
ProxyDeviceCreation(devices::ProxyError),
|
||||
/// Failed to register battery device.
|
||||
#[error("failed to register battery device to VM: {0}")]
|
||||
RegisterBattery(devices::BatteryError),
|
||||
/// Could not register PCI device capabilities.
|
||||
#[error("could not register PCI device capabilities: {0}")]
|
||||
RegisterDeviceCapabilities(PciDeviceError),
|
||||
/// Failed to register ioevent with VM.
|
||||
#[error("failed to register ioevent to VM: {0}")]
|
||||
RegisterIoevent(base::Error),
|
||||
/// Failed to register irq event with VM.
|
||||
#[error("failed to register irq event to VM: {0}")]
|
||||
RegisterIrqfd(base::Error),
|
||||
/// Failed to initialize proxy device for jailed device.
|
||||
ProxyDeviceCreation(devices::ProxyError),
|
||||
/// Appending to kernel command line failed.
|
||||
Cmdline(kernel_cmdline::Error),
|
||||
/// No more IRQs are available.
|
||||
IrqsExhausted,
|
||||
/// No more MMIO space available.
|
||||
AddrsExhausted,
|
||||
/// Could not register PCI device capabilities.
|
||||
RegisterDeviceCapabilities(PciDeviceError),
|
||||
// Failed to register battery device.
|
||||
RegisterBattery(devices::BatteryError),
|
||||
}
|
||||
|
||||
impl Display for DeviceRegistrationError {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
use self::DeviceRegistrationError::*;
|
||||
|
||||
match self {
|
||||
AllocateIoAddrs(e) => write!(f, "Allocating IO addresses: {}", e),
|
||||
AllocateIoResource(e) => write!(f, "Allocating IO resource: {}", e),
|
||||
AllocateDeviceAddrs(e) => write!(f, "Allocating device addresses: {}", e),
|
||||
AllocateIrq => write!(f, "Allocating IRQ number"),
|
||||
CloneJail(e) => write!(f, "failed to clone jail: {}", e),
|
||||
CreatePipe(e) => write!(f, "failed to create pipe: {}", e),
|
||||
CreateSerialDevice(e) => write!(f, "failed to create serial device: {}", e),
|
||||
CreateTube(e) => write!(f, "failed to create tube: {}", e),
|
||||
Cmdline(e) => write!(f, "unable to add device to kernel command line: {}", e),
|
||||
EventClone(e) => write!(f, "failed to clone event: {}", e),
|
||||
EventCreate(e) => write!(f, "failed to create event: {}", e),
|
||||
MissingRequiredSerialDevice(n) => write!(f, "missing required serial device {}", n),
|
||||
MmioInsert(e) => write!(f, "failed to add to mmio bus: {}", e),
|
||||
RegisterIoevent(e) => write!(f, "failed to register ioevent to VM: {}", e),
|
||||
RegisterIrqfd(e) => write!(f, "failed to register irq event to VM: {}", e),
|
||||
ProxyDeviceCreation(e) => write!(f, "failed to create proxy device: {}", e),
|
||||
IrqsExhausted => write!(f, "no more IRQs are available"),
|
||||
AddrsExhausted => write!(f, "no more addresses are available"),
|
||||
RegisterDeviceCapabilities(e) => {
|
||||
write!(f, "could not register PCI device capabilities: {}", e)
|
||||
}
|
||||
RegisterBattery(e) => write!(f, "failed to register battery device to VM: {}", e),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Config a PCI device for used by this vm.
|
||||
|
@ -633,25 +624,17 @@ pub fn add_goldfish_battery(
|
|||
}
|
||||
|
||||
/// Errors for image loading.
|
||||
#[derive(Debug)]
|
||||
#[sorted]
|
||||
#[derive(Error, Debug)]
|
||||
pub enum LoadImageError {
|
||||
#[error("Alignment not a power of two: {0}")]
|
||||
BadAlignment(u64),
|
||||
Seek(io::Error),
|
||||
#[error("Image size too large: {0}")]
|
||||
ImageSizeTooLarge(u64),
|
||||
#[error("Reading image into memory failed: {0}")]
|
||||
ReadToMemory(GuestMemoryError),
|
||||
}
|
||||
|
||||
impl Display for LoadImageError {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
use self::LoadImageError::*;
|
||||
|
||||
match self {
|
||||
BadAlignment(a) => write!(f, "Alignment not a power of two: {}", a),
|
||||
Seek(e) => write!(f, "Seek failed: {}", e),
|
||||
ImageSizeTooLarge(size) => write!(f, "Image size too large: {}", size),
|
||||
ReadToMemory(e) => write!(f, "Reading image into memory failed: {}", e),
|
||||
}
|
||||
}
|
||||
#[error("Seek failed: {0}")]
|
||||
Seek(io::Error),
|
||||
}
|
||||
|
||||
/// Load an image from a file into guest memory.
|
||||
|
|
|
@ -2,40 +2,32 @@
|
|||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
use std::fmt::{self, Display};
|
||||
use std::fs::OpenOptions;
|
||||
use std::io;
|
||||
|
||||
use crate::Pstore;
|
||||
use base::MemoryMappingBuilder;
|
||||
use hypervisor::Vm;
|
||||
use remain::sorted;
|
||||
use resources::SystemAllocator;
|
||||
use resources::{Alloc, MmioType};
|
||||
use thiserror::Error;
|
||||
use vm_memory::GuestAddress;
|
||||
|
||||
/// Error for pstore.
|
||||
#[derive(Debug)]
|
||||
#[sorted]
|
||||
#[derive(Error, Debug)]
|
||||
pub enum Error {
|
||||
#[error("failed to create pstore backend file: {0}")]
|
||||
IoError(io::Error),
|
||||
#[error("failed to get file mapped address: {0}")]
|
||||
MmapError(base::MmapError),
|
||||
#[error("failed to allocate pstore region: {0}")]
|
||||
ResourcesError(resources::Error),
|
||||
#[error("file to add pstore region to mmio: {0}")]
|
||||
SysUtilError(base::Error),
|
||||
}
|
||||
|
||||
impl Display for Error {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
use self::Error::*;
|
||||
|
||||
match self {
|
||||
IoError(e) => write!(f, "failed to create pstore backend file: {}", e),
|
||||
MmapError(e) => write!(f, "failed to get file mapped address: {}", e),
|
||||
ResourcesError(e) => write!(f, "failed to allocate pstore region: {}", e),
|
||||
SysUtilError(e) => write!(f, "file to add pstore region to mmio: {}", e),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::error::Error for Error {}
|
||||
type Result<T> = std::result::Result<T, Error>;
|
||||
|
||||
pub struct RamoopsRegion {
|
||||
|
|
Loading…
Reference in a new issue