RTEMS CPU Kit with SuperCore  4.11.3
Files | Macros | Functions | Variables
Classic Region Manager Implementation
Collaboration diagram for Classic Region Manager Implementation:

Files

file  regionimpl.h
 Classic Region Manager Implementation.
 

Macros

#define RTEMS_REGION_EXTERN   extern
 Instantiate RTEMS Region Data. More...
 
#define _Region_Debug_Walk(_the_region, _source)
 _Region_Debug_Walk More...
 

Functions

void _Region_Manager_initialization (void)
 _Region_Manager_initialization More...
 
RTEMS_INLINE_ROUTINE Region_Control_Region_Allocate (void)
 Region_Allocate. More...
 
RTEMS_INLINE_ROUTINE void _Region_Free (Region_Control *the_region)
 Region_Free. More...
 
RTEMS_INLINE_ROUTINE Region_Control_Region_Get (Objects_Id id, Objects_Locations *location)
 Region_Get. More...
 
RTEMS_INLINE_ROUTINE void * _Region_Allocate_segment (Region_Control *the_region, uintptr_t size)
 Region_Allocate_segment. More...
 
RTEMS_INLINE_ROUTINE bool _Region_Free_segment (Region_Control *the_region, void *the_segment)
 Region_Free_segment. More...
 
void _Region_Process_queue (Region_Control *the_region)
 Process Region Queue. More...
 

Variables

RTEMS_REGION_EXTERN Objects_Information _Region_Information
 The following defines the information control block used to manage this class of objects.
 

Detailed Description

Macro Definition Documentation

◆ _Region_Debug_Walk

#define _Region_Debug_Walk (   _the_region,
  _source 
)

_Region_Debug_Walk

This routine is invoked to verify the integrity of a heap associated with the_region.

◆ RTEMS_REGION_EXTERN

#define RTEMS_REGION_EXTERN   extern

Instantiate RTEMS Region Data.

Region Manager – Instantiate Data

This constant is defined to extern most of the time when using this header file. However by defining it to nothing, the data declared in this header file can be instantiated. This is done in a single per manager file.

Function Documentation

◆ _Region_Allocate()

RTEMS_INLINE_ROUTINE Region_Control* _Region_Allocate ( void  )

Region_Allocate.

This function allocates a region control block from the inactive chain of free region control blocks.

References _Objects_Allocate().

◆ _Region_Allocate_segment()

RTEMS_INLINE_ROUTINE void* _Region_Allocate_segment ( Region_Control the_region,
uintptr_t  size 
)

Region_Allocate_segment.

This function attempts to allocate a segment from the_region. If successful, it returns the address of the allocated segment. Otherwise, it returns NULL.

◆ _Region_Free()

RTEMS_INLINE_ROUTINE void _Region_Free ( Region_Control the_region)

Region_Free.

This routine frees a region control block to the inactive chain of free region control blocks.

◆ _Region_Free_segment()

RTEMS_INLINE_ROUTINE bool _Region_Free_segment ( Region_Control the_region,
void *  the_segment 
)

Region_Free_segment.

This function frees the_segment to the_region.

References _Heap_Free(), and _Region_Process_queue().

◆ _Region_Get()

RTEMS_INLINE_ROUTINE Region_Control* _Region_Get ( Objects_Id  id,
Objects_Locations location 
)

Region_Get.

This function maps region IDs to region control blocks. If ID corresponds to a local region, then it returns the_region control pointer which maps to ID and location is set to OBJECTS_LOCAL. Otherwise, location is set to OBJECTS_ERROR and the_region is undefined.

References _Objects_Get_no_protection().

Referenced by rtems_region_delete().

◆ _Region_Manager_initialization()

void _Region_Manager_initialization ( void  )

_Region_Manager_initialization

Region Manager

This routine performs the initialization necessary for this manager.

References _Objects_Initialize_information(), and _Region_Information.

◆ _Region_Process_queue()

void _Region_Process_queue ( Region_Control the_region)

Process Region Queue.

This is a helper routine which is invoked any time memory is freed. It looks at the set of waiting tasks and attempts to satisfy all outstanding requests.

Parameters
[in]the_regionis the the region

References _Thread_Disable_dispatch().

Referenced by _Region_Free_segment().