// Copyright (c) 2022 Huawei Technologies Co.,Ltd. All rights reserved.
//
// StratoVirt is licensed under Mulan PSL v2.
// You can use this software according to the terms and conditions of the Mulan
// PSL v2.
// You may obtain a copy of Mulan PSL v2 at:
//         http://license.coscl.org.cn/MulanPSL2
// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY
// KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
// See the Mulan PSL v2 for more details.

use thiserror::Error;

#[derive(Error, Debug)]
pub enum AcpiError {
    #[error("Failed to add AllocateEntry in TableLoader, file_blob {0} already exists.")]
    FileEntryExist(String),
    #[error("Failed to find matched file_blob in TableLoader, file name: {0}.")]
    NoMatchedFile(String),
    #[error("Invalid alignment {0}. Alignment is in bytes, and must be a power of 2.")]
    Alignment(u32),
    #[error("Address overflows, offset {0}, size {1}, max size {2}.")]
    AddrOverflow(u32, u32, usize),
    #[error("Failed to add pointer command: pointer length {0}, which is expected to be 1/2/4/8.")]
    AddPointerLength(u8),
}