RTEMS CPU Kit with SuperCore  4.11.2
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
objectimpl.h File Reference

Inlined Routines in the Object Handler. More...

#include <rtems/score/object.h>
#include <rtems/score/apimutex.h>
#include <rtems/score/isrlock.h>
#include <rtems/score/threaddispatch.h>
Include dependency graph for objectimpl.h:

Go to the source code of this file.

Data Structures

struct  Objects_Information
 The following defines the structure for the information used to manage each class of objects. More...
 

Macros

#define OBJECTS_INTERNAL_CLASSES_LAST   OBJECTS_INTERNAL_MUTEXES
 This macro is used to generically specify the last API index. More...
 
#define OBJECTS_RTEMS_CLASSES_LAST   OBJECTS_RTEMS_BARRIERS
 This macro is used to generically specify the last API index. More...
 
#define OBJECTS_POSIX_CLASSES_LAST   OBJECTS_POSIX_RWLOCKS
 This macro is used to generically specify the last API index. More...
 
#define _Objects_Local_node   ((uint16_t)1)
 The following is referenced to the node number of the local node.
 
#define _Objects_Maximum_nodes   1
 The following is referenced to the number of nodes in the system.
 
#define OBJECTS_NAME_ERRORS_FIRST   OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL
 This macro defines the first entry in the Objects_Name_or_id_lookup_errors enumerated list.
 
#define OBJECTS_NAME_ERRORS_LAST   OBJECTS_INVALID_NODE
 This macro defines the last entry in the Objects_Name_or_id_lookup_errors enumerated list.
 

Typedefs

typedef bool(* Objects_Name_comparators) (void *, void *, uint16_t)
 Functions which compare names are prototyped like this.
 
typedef void(* Objects_Thread_queue_Extract_callout) (void *)
 The following type defines the callout used when a local task is extracted from a remote thread queue (i.e. More...
 

Enumerations

enum  Objects_Internal_API { OBJECTS_INTERNAL_NO_CLASS = 0, OBJECTS_INTERNAL_THREADS = 1, OBJECTS_INTERNAL_MUTEXES = 2 }
 This enumerated type is used in the class field of the object ID for RTEMS internal object classes.
 
enum  Objects_Classic_API {
  OBJECTS_CLASSIC_NO_CLASS = 0, OBJECTS_RTEMS_TASKS = 1, OBJECTS_RTEMS_TIMERS = 2, OBJECTS_RTEMS_SEMAPHORES = 3,
  OBJECTS_RTEMS_MESSAGE_QUEUES = 4, OBJECTS_RTEMS_PARTITIONS = 5, OBJECTS_RTEMS_REGIONS = 6, OBJECTS_RTEMS_PORTS = 7,
  OBJECTS_RTEMS_PERIODS = 8, OBJECTS_RTEMS_EXTENSIONS = 9, OBJECTS_RTEMS_BARRIERS = 10
}
 This enumerated type is used in the class field of the object ID for the RTEMS Classic API.
 
enum  Objects_POSIX_API {
  OBJECTS_POSIX_NO_CLASS = 0, OBJECTS_POSIX_THREADS = 1, OBJECTS_POSIX_KEYS = 2, OBJECTS_POSIX_INTERRUPTS = 3,
  OBJECTS_POSIX_MESSAGE_QUEUE_FDS = 4, OBJECTS_POSIX_MESSAGE_QUEUES = 5, OBJECTS_POSIX_MUTEXES = 6, OBJECTS_POSIX_SEMAPHORES = 7,
  OBJECTS_POSIX_CONDITION_VARIABLES = 8, OBJECTS_POSIX_TIMERS = 9, OBJECTS_POSIX_BARRIERS = 10, OBJECTS_POSIX_SPINLOCKS = 11,
  OBJECTS_POSIX_RWLOCKS = 12
}
 This enumerated type is used in the class field of the object ID for the POSIX API.
 
enum  Objects_Fake_objects_API { OBJECTS_FAKE_OBJECTS_NO_CLASS = 0, OBJECTS_FAKE_OBJECTS_SCHEDULERS = 1 }
 
enum  Objects_Locations { OBJECTS_LOCAL = 0, OBJECTS_ERROR = 1 }
 This enumerated type lists the locations which may be returned by _Objects_Get. More...
 
enum  Objects_Name_or_id_lookup_errors {
  OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL, OBJECTS_INVALID_NAME, OBJECTS_INVALID_ADDRESS, OBJECTS_INVALID_ID,
  OBJECTS_INVALID_NODE
}
 This function implements the common portion of the object identification directives. More...
 

Functions

void _Objects_Extend_information (Objects_Information *information)
 This function extends an object class information record. More...
 
void _Objects_Shrink_information (Objects_Information *information)
 Shrink an object class information record. More...
 
void _Objects_Initialize_information (Objects_Information *information, Objects_APIs the_api, uint16_t the_class, uint32_t maximum, uint16_t size, bool is_string, uint32_t maximum_name_length)
 Initialize object Information. More...
 
unsigned int _Objects_API_maximum_class (uint32_t api)
 Object API Maximum Class. More...
 
Objects_Control_Objects_Allocate_unprotected (Objects_Information *information)
 Allocates an object without locking the allocator mutex. More...
 
Objects_Control_Objects_Allocate (Objects_Information *information)
 Allocates an object. More...
 
void _Objects_Free (Objects_Information *information, Objects_Control *the_object)
 Frees an object. More...
 
Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32 (Objects_Information *information, uint32_t name, uint32_t node, Objects_Id *id)
 Converts an object name to an Id. More...
 
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (Objects_Id id, Objects_Name *name)
 Implements the common portion of the object Id to name directives. More...
 
Objects_Control_Objects_Get (Objects_Information *information, Objects_Id id, Objects_Locations *location)
 Maps object ids to object control blocks. More...
 
Objects_Control_Objects_Get_isr_disable (Objects_Information *information, Objects_Id id, Objects_Locations *location, ISR_lock_Context *lock_context)
 Maps object ids to object control blocks. More...
 
Objects_Control_Objects_Get_no_protection (Objects_Information *information, Objects_Id id, Objects_Locations *location)
 Maps object ids to object control blocks. More...
 
Objects_Control_Objects_Get_next (Objects_Information *information, Objects_Id id, Objects_Locations *location_p, Objects_Id *next_id_p)
 Like _Objects_Get, but is used to find "next" open object. More...
 
Objects_Information_Objects_Get_information (Objects_APIs the_api, uint16_t the_class)
 Get object information. More...
 
Objects_Information_Objects_Get_information_id (Objects_Id id)
 Get information of an object from an ID. More...
 
char * _Objects_Get_name_as_string (Objects_Id id, size_t length, char *name)
 Gets object name in the form of a C string. More...
 
bool _Objects_Set_name (Objects_Information *information, Objects_Control *the_object, const char *name)
 Set objects name. More...
 
void _Objects_Namespace_remove (Objects_Information *information, Objects_Control *the_object)
 Removes object from namespace. More...
 
void _Objects_Close (Objects_Information *information, Objects_Control *the_object)
 Close object. More...
 
Objects_Maximum _Objects_Active_count (const Objects_Information *information)
 Returns the count of active objects. More...
 
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid (uint32_t the_api)
 This function returns true if the api is valid. More...
 
RTEMS_INLINE_ROUTINE bool _Objects_Is_local_node (uint32_t node)
 This function returns true if the node is of the local object, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _Objects_Is_local_id (Objects_Id id)
 This function returns true if the id is of a local object, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _Objects_Are_ids_equal (Objects_Id left, Objects_Id right)
 This function returns true if left and right are equal, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE Objects_Control_Objects_Get_local_object (Objects_Information *information, uint16_t index)
 This function returns a pointer to the local_table object referenced by the index. More...
 
RTEMS_INLINE_ROUTINE void _Objects_Set_local_object (Objects_Information *information, uint32_t index, Objects_Control *the_object)
 This function sets the pointer to the local_table object referenced by the index. More...
 
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id (Objects_Information *information, Objects_Control *the_object)
 This function sets the pointer to the local_table object referenced by the index to a NULL so the object Id is invalid after this call. More...
 
RTEMS_INLINE_ROUTINE void _Objects_Open (Objects_Information *information, Objects_Control *the_object, Objects_Name name)
 This function places the_object control pointer and object name in the Local Pointer and Local Name Tables, respectively. More...
 
RTEMS_INLINE_ROUTINE void _Objects_Open_u32 (Objects_Information *information, Objects_Control *the_object, uint32_t name)
 This function places the_object control pointer and object name in the Local Pointer and Local Name Tables, respectively. More...
 
RTEMS_INLINE_ROUTINE void _Objects_Open_string (Objects_Information *information, Objects_Control *the_object, const char *name)
 This function places the_object control pointer and object name in the Local Pointer and Local Name Tables, respectively. More...
 
RTEMS_INLINE_ROUTINE void _Objects_Put (Objects_Control *the_object)
 Puts back an object obtained with _Objects_Get(). More...
 
RTEMS_INLINE_ROUTINE void _Objects_Put_without_thread_dispatch (Objects_Control *the_object)
 Puts back an object obtained with _Objects_Get(). More...
 
RTEMS_INLINE_ROUTINE void _Objects_Allocator_lock (void)
 Locks the object allocator mutex. More...
 
RTEMS_INLINE_ROUTINE void _Objects_Allocator_unlock (void)
 Unlocks the object allocator mutex. More...
 

Variables

SCORE_EXTERN Objects_Information ** _Objects_Information_table [OBJECTS_APIS_LAST+1]
 The following is the list of information blocks per API for each object class. More...
 

Detailed Description

Inlined Routines in the Object Handler.

This include file contains the static inline implementation of all of the inlined routines in the Object Handler.