RTEMS
Public Attributes | List of all members
Objects_Information Struct Reference

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

#include <objectdata.h>

Public Attributes

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().

Definition at line 176 of file objectdata.h.

Member Data Documentation

◆ allocate

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

Allocate an object.

See also
_Objects_Allocate_none(), _Objects_Allocate_static(), and _Objects_Allocate_unlimited().

Definition at line 203 of file objectdata.h.

◆ 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().

Definition at line 213 of file objectdata.h.

◆ 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().

Definition at line 222 of file objectdata.h.

◆ 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.

Definition at line 256 of file objectdata.h.

◆ 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.

Definition at line 264 of file objectdata.h.

◆ 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.

Definition at line 282 of file objectdata.h.

◆ 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.

Definition at line 195 of file objectdata.h.

◆ 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.

Definition at line 185 of file objectdata.h.

◆ 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).

Definition at line 247 of file objectdata.h.

◆ 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.

Definition at line 272 of file objectdata.h.

◆ 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.

Definition at line 238 of file objectdata.h.

◆ 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.

Definition at line 231 of file objectdata.h.


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