RTEMS  5.1
Data Fields
Objects_Information Struct Reference

The information structure used to manage each API class of objects. More...

#include <objectdata.h>

Data Fields

Objects_Id maximum_id
 This is the maximum valid ID of this object API class. More...
 
Objects_Control ** local_table
 This points to the table of local object control blocks. More...
 
Objects_Control *(* allocate )(Objects_Information *)
 Allocate an object. More...
 
void(* deallocate )(Objects_Information *, Objects_Control *)
 Free an object. More...
 
Objects_Maximum inactive
 This is the number of object control blocks on the inactive chain. More...
 
Objects_Maximum objects_per_block
 This is the number of object control blocks in an allocation block. More...
 
uint16_t object_size
 This is the size in bytes of each object control block. More...
 
uint16_t name_length
 This is the maximum length of names. More...
 
Chain_Control Inactive
 This is the chain of inactive object control blocks. More...
 
Objects_Maximuminactive_per_block
 This is the number of inactive object control blocks per allocation block. More...
 
Objects_Control ** object_blocks
 This is a table to allocation blocks of object control blocks. More...
 
Objects_Controlinitial_objects
 This points to the object control blocks initially available. More...
 

Detailed Description

The information structure used to manage each API class of objects.

If objects for the API class are configured, an instance of this structure is statically allocated and pre-initialized by OBJECTS_INFORMATION_DEFINE() through <rtems/confdefs.h>. The RTEMS library contains a statically allocated and pre-initialized instance for each API class providing zero objects, see OBJECTS_INFORMATION_DEFINE_ZERO().

Field Documentation

◆ allocate

Objects_Control*( * Objects_Information::allocate) (Objects_Information *)

◆ deallocate

void( * Objects_Information::deallocate) (Objects_Information *, Objects_Control *)

Free an object.

In case _Objects_Allocate_none() is used, then this may be the NULL pointer.

See also
_Objects_Free_static(), and _Objects_Free_unlimited().

◆ inactive

Objects_Maximum Objects_Information::inactive

This is the number of object control blocks on the inactive chain.

This member is only used if unlimited objects are configured for this API class. It is used to trigger calls to _Objects_Shrink_information() in _Objects_Free().

◆ Inactive

Chain_Control Objects_Information::Inactive

This is the chain of inactive object control blocks.

This member is statically initialized to an empty chain. The _Objects_Initialize_information() will populate this chain with the object control blocks initially configured.

◆ inactive_per_block

Objects_Maximum* Objects_Information::inactive_per_block

This is the number of inactive object control blocks per allocation block.

It is only used if unlimited objects are configured for this API class.

◆ initial_objects

Objects_Control* Objects_Information::initial_objects

This points to the object control blocks initially available.

This member is statically initialized and read-only. In case objects for this API class are configured, it points to a statically allocated table of object control blocks defined by <rtems/confdefs.h>, otherwise this member is NULL.

◆ local_table

Objects_Control** Objects_Information::local_table

This points to the table of local object control blocks.

This member is statically initialized. In case objects for this API class are configured, it initially points to a statically allocated table defined by <rtems/confdefs.h>. _Objects_Extend_information() may replace the table with a larger one on demand.

◆ maximum_id

Objects_Id Objects_Information::maximum_id

This is the maximum valid ID of this object API class.

This member is statically initialized and provides also the object API, class and multiprocessing node information.

It is used by _Objects_Get() to validate an object ID.

◆ name_length

uint16_t Objects_Information::name_length

This is the maximum length of names.

This member is statically initialized and read-only. A length of zero indicates that this API class has a no string name (OBJECTS_NO_STRING_NAME).

◆ object_blocks

Objects_Control** Objects_Information::object_blocks

This is a table to allocation blocks of object control blocks.

It is only used if unlimited objects are configured for this API class. The object control blocks extend and shrink by these allocation blocks.

◆ object_size

uint16_t Objects_Information::object_size

This is the size in bytes of each object control block.

This member is statically initialized and read-only.

◆ objects_per_block

Objects_Maximum Objects_Information::objects_per_block

This is the number of object control blocks in an allocation block.

This member is statically initialized and read-only. It is only used if unlimited objects are configured for this API class. It defines the count of object control blocks used to extend and shrink this API class.


The documentation for this struct was generated from the following file: