RTEMS: Regions

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
Files | Functions
Regions
API » Classic

## Files
file | region.h
| Classic Region Manager API.
file | region.c
| Classic Region Information with Zero Objects.
file | regioncreate.c
| rtems_region_create
file | regiondelete.c
| RTEMS Delete Region.
file | regionextend.c
| RTEMS Extend Region.
file | regiongetfreeinfo.c
| RTEMS Get Region Free Information.
file | regiongetinfo.c
| RTEMS Get Region Information.
file | regiongetsegment.c
| RTEMS Get Region Segment.
file | regiongetsegmentsize.c
| RTEMS Get Region Segment Size.
file | regionident.c
| RTEMS Region Name to Id.
file | regionprocessqueue.c
| Process Region Queue.
file | regionresizesegment.c
| Resize RTEMS Region Segment.
file | regionreturnsegment.c
| RTEMS Return Region Segment.

## Functions
rtems_status_code | rtems_region_create (rtems_name name, void *starting_address, uintptr_t length, uintptr_t page_size, rtems_attribute attribute_set, rtems_id *id)
| rtems_region_create
rtems_status_code | rtems_region_extend (rtems_id id, void *starting_address, uintptr_t length)
| RTEMS Extend Region.
rtems_status_code | rtems_region_ident (rtems_name name, rtems_id *id)
| RTEMS Region Name to Id.
rtems_status_code | rtems_region_get_information (rtems_id id, Heap_Information_block *the_info)
| RTEMS Get Region Information.
rtems_status_code | rtems_region_get_free_information (rtems_id id, Heap_Information_block *the_info)
| RTEMS Get Region Free Information.
rtems_status_code | rtems_region_delete (rtems_id id)
| RTEMS Delete Region.
rtems_status_code | rtems_region_get_segment (rtems_id id, uintptr_t size, rtems_option option_set, rtems_interval timeout, void **segment)
| RTEMS Get Region Segment.
rtems_status_code | rtems_region_get_segment_size (rtems_id id, void *segment, uintptr_t *size)
| RTEMS Get Region Segment Size.
rtems_status_code | rtems_region_return_segment (rtems_id id, void *segment)
| RTEMS Return Region Segment.
rtems_status_code | rtems_region_resize_segment (rtems_id id, void *segment, uintptr_t size, uintptr_t *old_size)
| Resize RTEMS Region Segment.

## Detailed Description

This encapsulates functionality related to the Classic API Region Manager.

## Function Documentation

## ◆ rtems_region_create()

rtems_status_code rtems_region_create | ( | rtems_name | name,
|  | void * | starting_address,
|  | uintptr_t | length,
|  | uintptr_t | page_size,
|  | rtems_attribute | attribute_set,
|  | rtems_id * | id
| ) |  |

rtems_region_create

Region Manager

This routine implements the rtems_region_create directive. The region will have the name name. The memory area managed by the region is of length bytes and starts at starting_address. The memory area will be divided into as many allocatable units of page_size bytes as possible. The attribute_set determines which thread queue discipline is used by the region. It returns the id of the created region in ID.

## ◆ rtems_region_delete()

rtems_status_code rtems_region_delete | ( | rtems_id | id | ) |

RTEMS Delete Region.

This routine implements the rtems_region_delete directive. The region indicated by ID is deleted, provided that none of its segments are still allocated.

Parameters

  [in] | id | is the region id

Return values

  This | method returns RTEMS_SUCCESSFUL if there was not an error. Otherwise, a status code is returned indicating the source of the error.

## ◆ rtems_region_extend()

rtems_status_code rtems_region_extend | ( | rtems_id | id,
|  | void * | starting_address,
|  | uintptr_t | length
| ) |  |

RTEMS Extend Region.

This routine implements the rtems_region_extend directive. The region will have the name name. The memory area managed by the region will be attempted to be grown by length bytes using the memory starting at starting_address.

Parameters

  [in] | id | is the id of region to grow
  [in] | starting_address | starting address of memory area for extension
  [in] | length | is the physical length in bytes to grow the region

Return values

  This | method returns RTEMS_SUCCESSFUL if there was not an error. Otherwise, a status code is returned indicating the source of the error.

## ◆ rtems_region_get_free_information()

rtems_status_code rtems_region_get_free_information | ( | rtems_id | id,
|  | Heap_Information_block * | the_info
| ) |  |

RTEMS Get Region Free Information.

This routine implements the rtems_region_get_free_information directive. This directive returns information about the free blocks in the heap associated with this region. Information about the used blocks will be returned as zero.

Parameters

  [in] | id | is the region id
  [in] | the_info | is the pointer to region information block

Return values

  This | method returns RTEMS_SUCCESSFUL if there was not an error. Otherwise, a status code is returned indicating the source of the error. If successful, the the_info will be filled in with the region information block.

## ◆ rtems_region_get_information()

rtems_status_code rtems_region_get_information | ( | rtems_id | id,
|  | Heap_Information_block * | the_info
| ) |  |

RTEMS Get Region Information.

This routine implements the rtems_region_get_information directive. This directive returns information about the heap associated with this region.

Parameters

  [in] | id | is the region id
  [in] | the_info | is the pointer to region information block

Return values

  RTEMS_SUCCESSFUL | if successful or error code if unsuccessful and *id filled with the region information block

## ◆ rtems_region_get_segment()

rtems_status_code rtems_region_get_segment | ( | rtems_id | id,
|  | uintptr_t | size,
|  | rtems_option | option_set,
|  | rtems_interval | timeout,
|  | void ** | segment
| ) |  |

RTEMS Get Region Segment.

This routine implements the rtems_region_get_segment directive. It attempts to allocate a segment from the region associated with id. If a segment of the requested size size can be allocated, its address is returned in segment. If no segment is available, then the task may return immediately or block waiting for a segment with an optional timeout of timeout clock ticks. Whether the task blocks or returns immediately is based on the no_wait option in the option_set.

Parameters

  [in] | id | is the region id
  [in] | size | is the segment size in bytes
  [in] | option_set | is the wait option
  [in] | timeout | is the number of ticks to wait (0 means wait forever)
  [in] | segment | is the pointer to segment address

Return values

  This | method returns RTEMS_SUCCESSFUL if there was not an error. Otherwise, a status code is returned indicating the source of the error. If successful, the segment will be filled in with the segment address.

## ◆ rtems_region_get_segment_size()

rtems_status_code rtems_region_get_segment_size | ( | rtems_id | id,
|  | void * | segment,
|  | uintptr_t * | size
| ) |  |

RTEMS Get Region Segment Size.

This routine implements the rtems_region_get_segment_size directive. It returns the size in bytes of the specified user memory area.

Parameters

  [in] | id | is the region id
  [in] | segment | is the segment address
  [in] | size | is the pointer to segment size in bytes

Return values

  This | method returns RTEMS_SUCCESSFUL if there was not an error. Otherwise, a status code is returned indicating the source of the error. If successful, the size will be filled in with the segment size in bytes.

## ◆ rtems_region_ident()

rtems_status_code rtems_region_ident | ( | rtems_name | name,
|  | rtems_id * | id
| ) |  |

RTEMS Region Name to Id.

This routine implements the rtems_region_ident directive. This directive returns the region ID associated with name. If more than one region is named name, then the region to which the ID belongs is arbitrary.

Parameters

  [in] | name | is the user defined region name
  [in] | id | is the pointer to region id

Return values

  This | method returns RTEMS_SUCCESSFUL if there was not an error. Otherwise, a status code is returned indicating the source of the error. If successful, the id will be filled in with the region id.

## ◆ rtems_region_resize_segment()

rtems_status_code rtems_region_resize_segment | ( | rtems_id | id,
|  | void * | segment,
|  | uintptr_t | size,
|  | uintptr_t * | old_size
| ) |  |

Resize RTEMS Region Segment.

This routine implements the rtems_region_resize_segment directive. It tries to resize segment in the region associated with 'id' to the new size 'size' in place. The first 'size' or old size bytes of the segment (whatever is less) are guaranteed to remain unmodified. The segment must have been previously allocated from the same region. If resizing the segment results in enough memory being available to satisfy the rtems_region_get_segment of the first blocked task, then that task and as many subsequent tasks as possible will be unblocked with their requests satisfied.

Parameters

  [in] | id | is the region id
  [in] | segment | is the pointer to segment address
  [in] | size | is the new required size

Return values

  RTEMS_SUCCESSFUL | if operation successful, RTEMS_UNSATISFIED if the the segment can't be resized in place or any other code at failure

Note
  On RTEMS_SUCCESSFUL or RTEMS_UNSATISFIED exit it returns into the 'old_size' the old size in bytes of the user memory area of the specified segment.

## ◆ rtems_region_return_segment()

rtems_status_code rtems_region_return_segment | ( | rtems_id | id,
|  | void * | segment
| ) |  |

RTEMS Return Region Segment.

This routine implements the rtems_region_return_segment directive. It frees the segment to the region associated with ID. The segment must have been previously allocated from the same region. If freeing the segment results in enough memory being available to satisfy the rtems_region_get_segment of the first blocked task, then that task and as many subsequent tasks as possible will be unblocked with their requests satisfied.

Parameters

  [in] | id | is the region id
  [in] | segment | is the pointer to segment address

Return values

  RTEMS_SUCCESSFUL | if successful or error code if unsuccessful