Memory Region

C++ memory region declarations.

Memory regions are commonly used to expose device registers to user-space applications for reading and writing. The following entities are defined in the cuddl namespace.

enum class cuddl::MemRegionFlag

C++ wrapper for cuddl_memregion_flags.

The | operator is overloaded to return a MemRegionFlags instance. The stream output operator is also overloaded.

Values:

enumerator SHARED
using cuddl::MemRegionFlags = Flags<MemRegionFlag>

C++ class representing a set of one or more MemRegionFlag elements.

See the Flags class template documentation for member functions.

The | operator is overloaded for MemRegionFlag and MemRegionFlags arguments. The |= operator is overloaded as an alias for Flags::set. The stream output operator is also overloaded.

enum class cuddl::MemRegionClaimFlag

C++ wrapper for cuddl_memregion_claim_flags.

The | operator is overloaded to return a MemRegionClaimFlags instance. The stream output operator is also overloaded.

Values:

enumerator HOSTILE
using cuddl::MemRegionClaimFlags = Flags<MemRegionClaimFlag>

C++ class representing a set of one or more MemRegionClaimFlag elements.

See the Flags class template documentation for member functions.

The | operator is overloaded for MemRegionClaimFlag and MemRegionClaimFlags arguments. The |= operator is overloaded as an alias for Flags::set. The stream output operator is also overloaded.

enum class cuddl::MemRegionMapFlag

Placeholder for memory region mapping flags that may possibly be implemented in the future.

The | operator is overloaded to return a MemRegionMapFlags instance. The stream output operator is also overloaded.

Values:

using cuddl::MemRegionMapFlags = Flags<MemRegionMapFlag>

C++ class representing a set of one or more MemRegionMapFlag elements.

See the Flags class template documentation for member functions.

The | operator is overloaded for MemRegionMapFlag and MemRegionMapFlags arguments. The |= operator is overloaded as an alias for Flags::set. The stream output operator is also overloaded.

class MemRegionInfo

C++ wrapper class for cuddl_memregion_info.

The stream output operator is overloaded for instances of this class.

Constructors

inline MemRegionInfo()
inline MemRegionInfo(const cuddl_memregion_info &info)

Getter Functions

inline cuddl::size_t len() const
inline MemRegionFlags flags() const

Public Functions

inline operator cuddl_memregion_info() const

Cast operator for converting class instances to the equivalent C structure.

class MemRegion

C++ wrapper class for cuddl_memregion.

The stream output operator is overloaded for instances of this class.

Constructors

inline MemRegion()
inline MemRegion(const cuddl_memregion &mem, bool mapped = false)
inline MemRegion(const cuddl_resource_id &id, const MemRegionClaimFlags &claim_flags = 0, const MemRegionMapFlags &map_flags = 0)
Throws:

std::system_error – Operation failed.

inline MemRegion(const char *group, const char *device, const char *resource = "", int instance = 0, const MemRegionClaimFlags &claim_flags = 0, const MemRegionMapFlags &map_flags = 0)
Throws:

std::system_error – Operation failed.

inline MemRegion(const std::string &full_name, const MemRegionClaimFlags &claim_flags = 0, const MemRegionMapFlags &map_flags = 0)
Throws:

std::system_error – Operation failed.

Destructor

inline ~MemRegion()

Getter Functions

inline cuddl::iomem_t *addr() const
inline cuddl::size_t len() const
inline MemRegionFlags flags() const

Explicit Resource Management

Note that resource management can be performed explicitly, or via the constructor / destructor.

inline void claim_and_map(const cuddl_resource_id &id, const MemRegionClaimFlags &claim_flags = 0, const MemRegionMapFlags &map_flags = 0)

C++ wrapper for cuddl_memregion_claim_and_map().

Throws:

std::system_error – Operation failed.

inline void claim_and_map(const char *group, const char *device, const char *resource = "", int instance = 0, const MemRegionClaimFlags &claim_flags = 0, const MemRegionMapFlags &map_flags = 0)

C++ wrapper for cuddl_memregion_claim_and_map().

Throws:

std::system_error – Operation failed.

inline void claim_and_map(const std::string &full_name, const MemRegionClaimFlags &claim_flags = 0, const MemRegionMapFlags &map_flags = 0)

C++ wrapper for cuddl_memregion_claim_and_map().

Throws:

std::system_error – Operation failed.

inline void unmap_and_release()

C++ wrapper for cuddl_memregion_unmap_and_release().

I/O Memory Access

inline uint8_t ioread8(cuddl::size_t offset)

C++ wrapper for cuddl_memregion_ioread8().

inline uint16_t ioread16(cuddl::size_t offset)

C++ wrapper for cuddl_memregion_ioread16().

inline uint32_t ioread32(cuddl::size_t offset)

C++ wrapper for cuddl_memregion_ioread32().

inline void iowrite8(uint8_t value, cuddl::size_t offset)

C++ wrapper for cuddl_memregion_iowrite8().

inline void iowrite16(uint16_t value, cuddl::size_t offset)

C++ wrapper for cuddl_memregion_iowrite16().

inline void iowrite32(uint32_t value, cuddl::size_t offset)

C++ wrapper for cuddl_memregion_iowrite32().

Public Functions

inline operator cuddl_memregion() const

Cast operator for converting class instances to the equivalent C structure.

inline bool is_mapped() const

Test if the memory region has been successfully mapped.

inline ResourceID get_resource_id()

C++ wrapper for cuddl_memregion_get_resource_id().

Throws:

std::system_error – Operation failed.