![]() |
RTEMS 5.2
|
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. |
|
extern |
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.