Class PosixShmMemoryProvider

Inheritance Relationships

Base Type

Class Documentation

class PosixShmMemoryProvider : public iox::roudi::MemoryProvider

Creates the shared memory based on a provided configuration.

Public Functions

PosixShmMemoryProvider(const ShmName_t &shmName, const posix::AccessMode accessMode, const posix::OpenMode openMode) noexcept

Constructs a PosixShmMemoryProvider which can be used to request memory via MemoryBlocks.

Parameters:
  • shmName[in] is the name of the posix share memory

  • accessMode[in] defines the read and write access to the memory

  • openMode[in] defines the creation/open mode of the shared memory.

~PosixShmMemoryProvider() noexcept
PosixShmMemoryProvider(PosixShmMemoryProvider&&) = delete
PosixShmMemoryProvider &operator=(PosixShmMemoryProvider&&) = delete
PosixShmMemoryProvider(const PosixShmMemoryProvider&) = delete
PosixShmMemoryProvider &operator=(const PosixShmMemoryProvider&) = delete

Protected Functions

virtual cxx::expected<void*, MemoryProviderError> createMemory(const uint64_t size, const uint64_t alignment) noexcept

This function needs to be implemented to provide the actual memory, e.g. in case of POSIX SHM, shm_open and mmap would need to be called in the implementation of this function.

Note

This creates and maps a POSIX shared memory to the address space of the application

Parameters:
  • size[in] is the size in bytes for the requested memory, the size should already be calculated according to the alignment requirements

  • alignment[in] the required alignment for the memory

Returns:

the pointer of the begin of the created memory or a MemoryProviderError if the memory could not be created

virtual cxx::expected<MemoryProviderError> destroyMemory() noexcept

This function needs to be implemented to free the actual memory, e.g. in case of POSIX SHM, shm_unlink and munmap would need to be called in the implementation of this function.

Note

This closes and unmaps a POSIX shared memory

Returns:

a MemoryProviderError if the destruction failed, otherwise success