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 aMemRegionFlagsinstance. The stream output operator is also overloaded.Values:
-
enumerator SHARED
-
enumerator SHARED
-
using cuddl::MemRegionFlags = Flags<MemRegionFlag>
C++ class representing a set of one or more
MemRegionFlagelements.See the
Flagsclass template documentation for member functions.The
|operator is overloaded forMemRegionFlagandMemRegionFlagsarguments. The|=operator is overloaded as an alias forFlags::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 aMemRegionClaimFlagsinstance. The stream output operator is also overloaded.Values:
-
enumerator HOSTILE
-
enumerator HOSTILE
-
using cuddl::MemRegionClaimFlags = Flags<MemRegionClaimFlag>
C++ class representing a set of one or more
MemRegionClaimFlagelements.See the
Flagsclass template documentation for member functions.The
|operator is overloaded forMemRegionClaimFlagandMemRegionClaimFlagsarguments. The|=operator is overloaded as an alias forFlags::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 aMemRegionMapFlagsinstance. The stream output operator is also overloaded.Values:
-
using cuddl::MemRegionMapFlags = Flags<MemRegionMapFlag>
C++ class representing a set of one or more
MemRegionMapFlagelements.See the
Flagsclass template documentation for member functions.The
|operator is overloaded forMemRegionMapFlagandMemRegionMapFlagsarguments. The|=operator is overloaded as an alias forFlags::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.
Public Functions
-
inline operator cuddl_memregion_info() const
Cast operator for converting class instances to the equivalent C structure.
-
inline operator cuddl_memregion_info() const
-
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 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.
-
inline MemRegion()