libcamera  v0.3.0
Supporting cameras in Linux since 2019
dma_heaps.h
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 /*
3  * Copyright (C) 2020, Raspberry Pi Ltd
4  *
5  * Helper class for dma-heap allocations.
6  */
7 
8 #pragma once
9 
10 #include <stddef.h>
11 
12 #include <libcamera/base/flags.h>
14 
15 namespace libcamera {
16 
17 class DmaHeap
18 {
19 public:
20  enum class DmaHeapFlag {
21  Cma = 1 << 0,
22  System = 1 << 1,
23  };
24 
26 
29  bool isValid() const { return dmaHeapHandle_.isValid(); }
30  UniqueFD alloc(const char *name, std::size_t size);
31 
32 private:
33  UniqueFD dmaHeapHandle_;
34 };
35 
37 
38 } /* namespace libcamera */
Helper class for dma-heap allocations.
Definition: dma_heaps.h:18
UniqueFD alloc(const char *name, std::size_t size)
Allocate a dma-buf from the DmaHeap.
Definition: dma_heaps.cpp:137
DmaHeapFlag
Type of the dma-heap.
Definition: dma_heaps.h:20
@ System
Allocate from the system dma-heap, using the page allocator.
@ Cma
Allocate from a CMA dma-heap, providing physically-contiguous memory.
~DmaHeap()
Destroy the DmaHeap instance.
DmaHeap(DmaHeapFlags flags=DmaHeapFlag::Cma)
Construct a DmaHeap of a given type.
Definition: dma_heaps.cpp:91
bool isValid() const
Check if the DmaHeap instance is valid.
Definition: dma_heaps.h:29
Type-safe container for enum-based bitfields.
Definition: flags.h:16
unique_ptr-like wrapper for a file descriptor
Definition: unique_fd.h:18
bool isValid() const
Check if the UniqueFD owns a valid file descriptor.
Definition: unique_fd.h:61
Enum-based bit fields.
#define LIBCAMERA_FLAGS_ENABLE_OPERATORS(_enum)
Enable bitwise operations on the enum enumeration.
Top-level libcamera namespace.
Definition: backtrace.h:17
File descriptor wrapper that owns a file descriptor.