use {
    core::{ptr::NonNull},
    virtio_drivers::{BufferDirection, Hal, PhysAddr},
};

pub fn test() {
    let _ps = virtio_drivers::PAGE_SIZE;
}

pub struct AbleosHal;

unsafe impl Hal for AbleosHal {
    fn dma_alloc(_pages: usize, _direction: BufferDirection) -> (PhysAddr, NonNull<u8>) {
        todo!();
    }

    unsafe fn dma_dealloc(_paddr: PhysAddr, _vaddr: NonNull<u8>, _pages: usize) -> i32 {
        todo!()
    }

    unsafe fn mmio_phys_to_virt(paddr: PhysAddr, _size: usize) -> NonNull<u8> {
        NonNull::new(paddr as _).unwrap()
    }

    unsafe fn share(_buffer: NonNull<[u8]>, _direction: BufferDirection) -> PhysAddr {
        todo!()
    }

    unsafe fn unshare(_paddr: PhysAddr, _buffer: NonNull<[u8]>, _direction: BufferDirection) {
        // Nothing to do, as the host already has access to all memory and we didn't copy the buffer
        // anywhere else.
        todo!()
    }
}
fn virt_to_phys(vaddr: usize) -> PhysAddr {
    vaddr
}