RTEMS
5.1
|
Low level handler to provide memory areas for higher level memory handlers such as the Workspace Handler. More...
Files | |
file | memory.h |
Memory Handler API. | |
Data Structures | |
struct | Memory_Area |
The memory area description. More... | |
struct | Memory_Information |
The memory information. More... | |
Macros | |
#define | MEMORY_INFORMATION_INITIALIZER(areas) { RTEMS_ARRAY_SIZE( areas ), ( areas ) } |
Statically initialize a memory information. More... | |
#define | MEMORY_INITIALIZER(begin, end) { ( begin ), ( begin ), ( end ) } |
Statically initialize a memory area. More... | |
Functions | |
RTEMS_INLINE_ROUTINE size_t | _Memory_Get_count (const Memory_Information *information) |
Get the memory area count. More... | |
RTEMS_INLINE_ROUTINE Memory_Area * | _Memory_Get_area (const Memory_Information *information, size_t index) |
Get a memory area by index. More... | |
RTEMS_INLINE_ROUTINE void | _Memory_Initialize (Memory_Area *area, void *begin, void *end) |
Initialize the memory area. More... | |
RTEMS_INLINE_ROUTINE void | _Memory_Initialize_by_size (Memory_Area *area, void *begin, uintptr_t size) |
Initialize the memory area by size. More... | |
RTEMS_INLINE_ROUTINE const void * | _Memory_Get_begin (const Memory_Area *area) |
Get the memory area begin. More... | |
RTEMS_INLINE_ROUTINE void | _Memory_Set_begin (Memory_Area *area, const void *begin) |
Set the memory area begin. More... | |
RTEMS_INLINE_ROUTINE const void * | _Memory_Get_end (const Memory_Area *area) |
Get the memory area end. More... | |
RTEMS_INLINE_ROUTINE void | _Memory_Set_end (Memory_Area *area, const void *end) |
Set the memory area end. More... | |
RTEMS_INLINE_ROUTINE uintptr_t | _Memory_Get_size (const Memory_Area *area) |
Get the memory area size. More... | |
RTEMS_INLINE_ROUTINE void * | _Memory_Get_free_begin (const Memory_Area *area) |
Get the begin of the free area of the memory area. More... | |
RTEMS_INLINE_ROUTINE void | _Memory_Set_free_begin (Memory_Area *area, void *begin) |
Set the begin of the free area of the memory area. More... | |
RTEMS_INLINE_ROUTINE uintptr_t | _Memory_Get_free_size (const Memory_Area *area) |
Get the size of the free memory area of the memory area. More... | |
RTEMS_INLINE_ROUTINE void | _Memory_Consume (Memory_Area *area, uintptr_t consume) |
Consume the specified size from the free memory area of the memory area. More... | |
const Memory_Information * | _Memory_Get (void) |
Return the memory information of this platform. More... | |
void * | _Memory_Allocate (const Memory_Information *information, uintptr_t size, uintptr_t alignment) |
Allocate a memory area from the memory information. More... | |
void | _Memory_Fill (const Memory_Information *information, int c) |
Fill all free memory areas of the memory information with a constant byte. More... | |
void | _Memory_Zero_free_areas (void) |
Zeros all free memory areas of the system. | |
void | _Memory_Dirty_free_areas (void) |
Dirty all free memory areas of the system. | |
Variables | |
const bool | _Memory_Zero_before_use |
Indicates if the memory is zeroed during system initialization. More... | |
Low level handler to provide memory areas for higher level memory handlers such as the Workspace Handler.
#define MEMORY_INFORMATION_INITIALIZER | ( | areas | ) | { RTEMS_ARRAY_SIZE( areas ), ( areas ) } |
Statically initialize a memory information.
areas | The designator of an array of the memory areas. |
#define MEMORY_INITIALIZER | ( | begin, | |
end | |||
) | { ( begin ), ( begin ), ( end ) } |
Statically initialize a memory area.
begin | The begin of the memory area. |
end | The end of the memory area. |
void* _Memory_Allocate | ( | const Memory_Information * | information, |
uintptr_t | size, | ||
uintptr_t | alignment | ||
) |
Allocate a memory area from the memory information.
It is not possible to free the memory area allocated by this function.
information | The memory information. |
size | The size in bytes of the memory area to allocate. |
alignment | The alignment in bytes of the memory area to allocate. It must be a power of two. |
NULL | No such memory area available. |
begin | The begin of the allocated memory area. |
RTEMS_INLINE_ROUTINE void _Memory_Consume | ( | Memory_Area * | area, |
uintptr_t | consume | ||
) |
Consume the specified size from the free memory area of the memory area.
area | The memory area. |
consume | The bytes to consume from the free memory area of the memory area. |
void _Memory_Fill | ( | const Memory_Information * | information, |
int | c | ||
) |
Fill all free memory areas of the memory information with a constant byte.
information | The memory information. |
c | The constant byte to fill the free memory areas. |
const Memory_Information* _Memory_Get | ( | void | ) |
Return the memory information of this platform.
This function is provided by the Board Support Package (BSP). Using a function gives the BSPs a bit more freedom with respect to the implementation. Calling this function shall not have side-effects. Initialization steps to set up the memory information shall be done in a system initialization handler (RTEMS_SYSINIT_MEMORY).
RTEMS_INLINE_ROUTINE Memory_Area* _Memory_Get_area | ( | const Memory_Information * | information, |
size_t | index | ||
) |
Get a memory area by index.
information | The memory information. |
index | The index of the memory area to return. |
RTEMS_INLINE_ROUTINE const void* _Memory_Get_begin | ( | const Memory_Area * | area | ) |
Get the memory area begin.
area | The memory area. |
RTEMS_INLINE_ROUTINE size_t _Memory_Get_count | ( | const Memory_Information * | information | ) |
Get the memory area count.
information | The memory information. |
RTEMS_INLINE_ROUTINE const void* _Memory_Get_end | ( | const Memory_Area * | area | ) |
Get the memory area end.
area | The memory area. |
RTEMS_INLINE_ROUTINE void* _Memory_Get_free_begin | ( | const Memory_Area * | area | ) |
Get the begin of the free area of the memory area.
area | The memory area. |
RTEMS_INLINE_ROUTINE uintptr_t _Memory_Get_free_size | ( | const Memory_Area * | area | ) |
Get the size of the free memory area of the memory area.
area | The memory area. |
RTEMS_INLINE_ROUTINE uintptr_t _Memory_Get_size | ( | const Memory_Area * | area | ) |
Get the memory area size.
area | The memory area. |
RTEMS_INLINE_ROUTINE void _Memory_Initialize | ( | Memory_Area * | area, |
void * | begin, | ||
void * | end | ||
) |
Initialize the memory area.
area | The memory area. |
begin | The begin of the memory area. |
end | The end of the memory area. |
RTEMS_INLINE_ROUTINE void _Memory_Initialize_by_size | ( | Memory_Area * | area, |
void * | begin, | ||
uintptr_t | size | ||
) |
Initialize the memory area by size.
area | The memory area. |
begin | The begin of the memory area. |
size | The size of the memory area in bytes. |
RTEMS_INLINE_ROUTINE void _Memory_Set_begin | ( | Memory_Area * | area, |
const void * | begin | ||
) |
Set the memory area begin.
area | The memory area. |
begin | The memory area begin. |
RTEMS_INLINE_ROUTINE void _Memory_Set_end | ( | Memory_Area * | area, |
const void * | end | ||
) |
Set the memory area end.
area | The memory area. |
end | The memory area end. |
RTEMS_INLINE_ROUTINE void _Memory_Set_free_begin | ( | Memory_Area * | area, |
void * | begin | ||
) |
Set the begin of the free area of the memory area.
area | The memory area. |
begin | The free memory area begin the memory area. |
const bool _Memory_Zero_before_use |
Indicates if the memory is zeroed during system initialization.
This value is provided via <rtems/confdefs.h> in case CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY is defined.