use crate::{VirtioDeviceID, constants::*};
use axaddrspace::GuestPhysAddr;
#[derive(Debug, Clone)]
pub struct VirtioConfig {
pub base_addr: GuestPhysAddr,
pub mmio_size: usize,
pub total_mmio_size: usize,
pub vendor_id: u32,
pub max_queue_size: u16,
pub num_queues: u16,
pub device_features: u64,
pub device_type: VirtioDeviceID,
}
impl VirtioConfig {
pub fn new(
base_addr: GuestPhysAddr,
device_features: u64,
num_queues: u16,
device_type: VirtioDeviceID,
) -> Self {
Self {
base_addr,
mmio_size: VIRTIO_MMIO_DEVICE_SIZE,
total_mmio_size: VIRTIO_MMIO_TOTAL_SIZE,
vendor_id: VIRTIO_VENDOR_ID,
max_queue_size: DEFAULT_QUEUE_SIZE,
num_queues,
device_features,
device_type,
}
}
}