============== |package_name| ============== Overview -------- lib_mem_dmabuf is a library for access and interact with Linux DMA buffer. Feature highlights ~~~~~~~~~~~~~~~~~~ - Alloc and destroy DMA buffer - Return file descriptor (fd) associated with DMA buffer - DMA buffer synchronization operation - Auto release DMA buffer and fd when leave code scope - Register DMA buffer release callback Quickstart ---------- 1. Add dependencies in your package.xml .. code:: xml lib_mem_dmabuf 2. Use ament_cmake_auto to find dependencies in your CMakeLists.txt .. code:: cmake find_package(ament_cmake_auto REQUIRED) ament_auto_find_build_dependencies() 3. Using lib_mem_dmabuf to alloc DMA buffer .. code:: cpp #include "lib_mem_dmabuf/dmabuf.hpp" // alloc dmabuf with size and DMA heap name auto buf = lib_mem_dmabuf::DmaBuffer::alloc(size, "/dev/dma_heap/system"); // get fd of buffer std::cout << "fd: " << buf->fd() << std::endl; // get CPU accessable address if (buf->map()) { std::cout << "CPU address: " << buf->addr() << std::endl; // read / write buffer // ... } // buf will auto release when leave scope API --- .. list-table:: :header-rows: 1 :widths: 3 1 1 1 * - Function - Parameters - Return Value - Description * - DmaBuffer::DmaBuffer(int fd, std::size_t size) - fd: dmabuf fd, size: dmabuf size - - Constructor for DmaBuffer class * - static std::shared_ptr alloc(std::size_t size, const std::string& heap_name) - size: buffer size (bytes), heap_name: dmabuf heap name - Allocated buffer pointer - Alloc dmabuf with size and heap name * - bool DmaBuffer::release() - - - Release dmabuf * - bool DmaBuffer::map() - - - Description * - bool DmaBuffer::unmap() - - - Description * - bool DmaBuffer::sync_start() - - - Description * - bool DmaBuffer::sync_end() - - - Description * - bool DmaBuffer::set_auto_release(bool auto_release) - auto_release: whether to auto release fd when Dmabuf object destroy - - Set auto release dmabuf fd when destroy * - void DmaBuffer::set_destroy_callback( std::function)> cb); - cb: callback function when dmabuf destroy - - Set destroys callback function * - bool DmaBuffer::set_data(void* data, std::size_t size, std::size_t offset = 0) - data: data be saved, size: data size, offset: offset to dmabuf address - - Set data into dmabuf * - int DmaBuffer::fd() const - - Dmabuf file descriptor - Get dmabuf fd * - int DmaBuffer::size() const - - Dmabuf size - Get dmabuf size * - void* DmaBuffer::addr() - - Dmabuf CPU mapped address - Get dmabuf CPU memory mapped address .. |package_name| replace:: ``lib_mem_dmabuf``