| struct_dma_buf_ops(9) - phpMan
STRUCT DMA_BUF_OPS(9) Device drivers infrastructure STRUCT DMA_BUF_OPS(9)
NAME
struct_dma_buf_ops - operations possible on struct dma_buf
SYNOPSIS
struct dma_buf_ops {
int (* attach) (struct dma_buf *, struct device *,struct dma_buf_attachment *);
void (* detach) (struct dma_buf *, struct dma_buf_attachment *);
struct sg_table * (* map_dma_buf) (struct dma_buf_attachment *,enum dma_data_direction);
void (* unmap_dma_buf) (struct dma_buf_attachment *,struct sg_table *,enum dma_data_direction);
void (* release) (struct dma_buf *);
int (* begin_cpu_access) (struct dma_buf *, enum dma_data_direction);
int (* end_cpu_access) (struct dma_buf *, enum dma_data_direction);
void *(* kmap_atomic) (struct dma_buf *, unsigned long);
void (* kunmap_atomic) (struct dma_buf *, unsigned long, void *);
void *(* kmap) (struct dma_buf *, unsigned long);
void (* kunmap) (struct dma_buf *, unsigned long, void *);
int (* mmap) (struct dma_buf *, struct vm_area_struct *vma);
void *(* vmap) (struct dma_buf *);
void (* vunmap) (struct dma_buf *, void *vaddr);
};
MEMBERS
attach
[optional] allows different devices to 'attach' themselves to the given buffer. It
might return -EBUSY to signal that backing storage is already allocated and
incompatible with the requirements of requesting device.
detach
[optional] detach a given device from this buffer.
map_dma_buf
returns list of scatter pages allocated, increases usecount of the buffer. Requires
atleast one attach to be called before. Returned sg list should already be mapped into
_device_ address space. This call may sleep. May also return -EINTR. Should return
-EINVAL if attach hasn't been called yet.
unmap_dma_buf
decreases usecount of buffer, might deallocate scatter pages.
release
release this buffer; to be called after the last dma_buf_put.
begin_cpu_access
[optional] called before cpu access to invalidate cpu caches and allocate backing
storage (if not yet done) respectively pin the object into memory.
end_cpu_access
[optional] called after cpu access to flush caches.
kmap_atomic
maps a page from the buffer into kernel address space, users may not block until the
subsequent unmap call. This callback must not sleep.
kunmap_atomic
[optional] unmaps a atomically mapped page from the buffer. This Callback must not
sleep.
kmap
maps a page from the buffer into kernel address space.
kunmap
[optional] unmaps a page from the buffer.
mmap
used to expose the backing storage to userspace. Note that the mapping needs to be
coherent - if the exporter doesn't directly support this, it needs to fake coherency
by shooting down any ptes when transitioning away from the cpu domain.
vmap
[optional] creates a virtual mapping for the buffer into kernel address space. Same
restrictions as for vmap and friends apply.
vunmap
[optional] unmaps a vmap from the buffer
COPYRIGHT
Kernel Hackers Manual 4.8. January 2017 STRUCT DMA_BUF_OPS(9)
|