DmaBufAllocator: Add Dma Buffer synchronization function & helper class
To synchronize CPU access with mmap and hardware access on DMA buffers, using `DMA_BUF_IOCTL_SYNC` is required. This patch adds a function and a helper class to allow users to sync buffers more easily. Signed-off-by: Han-Lin Chen <hanlinchen@chromium.org> Co-developed-by: Harvey Yang <chenghaoyang@chromium.org> Signed-off-by: Harvey Yang <chenghaoyang@chromium.org> Reviewed-by: Milan Zamazal <mzamazal@redhat.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
committed by
Kieran Bingham
parent
562b6335d9
commit
39482d59fe
@@ -12,6 +12,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include <libcamera/base/flags.h>
|
||||
#include <libcamera/base/shared_fd.h>
|
||||
#include <libcamera/base/unique_fd.h>
|
||||
|
||||
namespace libcamera {
|
||||
@@ -48,6 +49,26 @@ private:
|
||||
DmaBufAllocatorFlag type_;
|
||||
};
|
||||
|
||||
class DmaSyncer final
|
||||
{
|
||||
public:
|
||||
enum class SyncType {
|
||||
Read = 0,
|
||||
Write,
|
||||
ReadWrite,
|
||||
};
|
||||
|
||||
explicit DmaSyncer(SharedFD fd, SyncType type = SyncType::ReadWrite);
|
||||
|
||||
~DmaSyncer();
|
||||
|
||||
private:
|
||||
void sync(uint64_t step);
|
||||
|
||||
SharedFD fd_;
|
||||
uint64_t flags_ = 0;
|
||||
};
|
||||
|
||||
LIBCAMERA_FLAGS_ENABLE_OPERATORS(DmaBufAllocator::DmaBufAllocatorFlag)
|
||||
|
||||
} /* namespace libcamera */
|
||||
|
||||
Reference in New Issue
Block a user