pub trait DmaOp:
Sync
+ Send
+ 'static {
// Required methods
fn page_size(&self) -> usize;
unsafe fn map_single(
&self,
dma_mask: u64,
addr: NonNull<u8>,
size: NonZeroUsize,
align: usize,
direction: DmaDirection,
) -> Result<DmaMapHandle, DmaError>;
unsafe fn unmap_single(&self, handle: DmaMapHandle);
unsafe fn alloc_coherent(
&self,
dma_mask: u64,
layout: Layout,
) -> Option<DmaHandle>;
unsafe fn dealloc_coherent(&self, handle: DmaHandle);
// Provided methods
fn flush(&self, addr: NonNull<u8>, size: usize) { ... }
fn invalidate(&self, addr: NonNull<u8>, size: usize) { ... }
fn flush_invalidate(&self, addr: NonNull<u8>, size: usize) { ... }
fn prepare_read(
&self,
handle: &DmaMapHandle,
offset: usize,
size: usize,
direction: DmaDirection,
) { ... }
fn confirm_write(
&self,
handle: &DmaMapHandle,
offset: usize,
size: usize,
direction: DmaDirection,
) { ... }
}Required Methods§
fn page_size(&self) -> usize
Sourceunsafe fn map_single(
&self,
dma_mask: u64,
addr: NonNull<u8>,
size: NonZeroUsize,
align: usize,
direction: DmaDirection,
) -> Result<DmaMapHandle, DmaError>
unsafe fn map_single( &self, dma_mask: u64, addr: NonNull<u8>, size: NonZeroUsize, align: usize, direction: DmaDirection, ) -> Result<DmaMapHandle, DmaError>
Sourceunsafe fn unmap_single(&self, handle: DmaMapHandle)
unsafe fn unmap_single(&self, handle: DmaMapHandle)
Sourceunsafe fn dealloc_coherent(&self, handle: DmaHandle)
unsafe fn dealloc_coherent(&self, handle: DmaHandle)
Provided Methods§
Sourcefn invalidate(&self, addr: NonNull<u8>, size: usize)
fn invalidate(&self, addr: NonNull<u8>, size: usize)
使缓存无效 (invalidate)