F´ Flight Software - C/C++ Documentation  NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
MmapAllocator.cpp
Go to the documentation of this file.
1 
14 #include <cstdlib>
15 #include <sys/mman.h>
16 #include <Fw/Types/Assert.hpp>
17 
18 namespace Fw {
19 
20  MmapAllocator::MmapAllocator() : m_length(0) {
21  }
22 
24  }
25 
26  void *MmapAllocator::allocate(const NATIVE_UINT_TYPE identifier, NATIVE_UINT_TYPE &size, bool& recoverable) {
27  void* addr = mmap(nullptr, size, PROT_READ | PROT_WRITE,
28  MAP_SHARED | MAP_ANONYMOUS, -1, 0);
29  if (addr == MAP_FAILED) {
30  size = 0;
31  return nullptr;
32  }
33  this->m_length = size;
34 
35  // mmap memory is never recoverable
36  recoverable = false;
37 
38  return addr;
39  }
40 
41  void MmapAllocator::deallocate(const NATIVE_UINT_TYPE identifier, void* ptr) {
42  if (this->m_length) {
43  int stat = munmap(ptr, this->m_length);
44  FW_ASSERT(stat == 0, stat);
45  }
46  }
47 
48 } /* namespace Fw */
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:28
MmapAllocator.hpp
A MemAllocator implementation class that uses mmap.
Fw::MmapAllocator::~MmapAllocator
virtual ~MmapAllocator()
Destructor with no arguments.
Definition: MmapAllocator.cpp:23
FW_ASSERT
#define FW_ASSERT(...)
Definition: Assert.hpp:9
Fw::MmapAllocator::MmapAllocator
MmapAllocator()
Definition: MmapAllocator.cpp:20
Fw::MmapAllocator::deallocate
void deallocate(const NATIVE_UINT_TYPE identifier, void *ptr)
Definition: MmapAllocator.cpp:41
Fw::MmapAllocator::allocate
void * allocate(const NATIVE_UINT_TYPE identifier, NATIVE_UINT_TYPE &size, bool &recoverable)
Definition: MmapAllocator.cpp:26
Fw
Definition: SerIds.hpp:20