F´ Flight Software - C/C++ Documentation  NASA-v1.5.0
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MmapAllocator.cpp
Go to the documentation of this file.
1 
14 #include <stdlib.h>
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(NULL, size, PROT_READ | PROT_WRITE,
28  MAP_SHARED | MAP_ANONYMOUS, -1, 0);
29  if (addr == MAP_FAILED) {
30  size = 0;
31  return NULL;
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 */
Assert.hpp
MmapAllocator.hpp
A MemAllocator implementation class that uses mmap.
Fw::MmapAllocator::~MmapAllocator
virtual ~MmapAllocator()
Definition: MmapAllocator.cpp:23
NATIVE_UINT_TYPE
unsigned int NATIVE_UINT_TYPE
native unsigned integer type declaration
Definition: BasicTypes.hpp:30
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)
Deallocate memory.
Definition: MmapAllocator.cpp:41
Fw::MmapAllocator::allocate
void * allocate(const NATIVE_UINT_TYPE identifier, NATIVE_UINT_TYPE &size, bool &recoverable)
Allocate memory.
Definition: MmapAllocator.cpp:26
NULL
#define NULL
NULL.
Definition: BasicTypes.hpp:100
Fw
Definition: BufferGetPortAc.cpp:6