+ Added object type field to object id.

+ Added name pointer to Object_Control.

+ Modified Object Open and Close to address name field.

+ Removed name as separate element from Thread and Proxy Control.

+ Added parameter "object class" to calls to Initialize Information
This commit is contained in:
Joel Sherrill
1995-08-18 21:42:58 +00:00
parent 95fbca1940
commit 9863dbfdd4
26 changed files with 80 additions and 33 deletions

View File

@@ -37,6 +37,7 @@ void _Dual_ported_memory_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Dual_ported_memory_Information, &_Dual_ported_memory_Information,
OBJECTS_RTEMS_PORTS,
FALSE, FALSE,
maximum_ports, maximum_ports,
sizeof( Dual_ported_memory_Control ) sizeof( Dual_ported_memory_Control )

View File

@@ -45,6 +45,7 @@ void _Message_queue_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Message_queue_Information, &_Message_queue_Information,
OBJECTS_RTEMS_MESSAGE_QUEUES,
TRUE, TRUE,
maximum_message_queues, maximum_message_queues,
sizeof( Message_queue_Control ) sizeof( Message_queue_Control )
@@ -285,7 +286,7 @@ rtems_status_code rtems_message_queue_delete(
MESSAGE_QUEUE_MP_ANNOUNCE_DELETE, MESSAGE_QUEUE_MP_ANNOUNCE_DELETE,
the_message_queue->Object.id, the_message_queue->Object.id,
0, /* Not used */ 0, /* Not used */
MPCI_DEFAULT_TIMEOUT 0
); );
} }

View File

@@ -39,6 +39,7 @@ void _Partition_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Partition_Information, &_Partition_Information,
OBJECTS_RTEMS_PARTITIONS,
TRUE, TRUE,
maximum_partitions, maximum_partitions,
sizeof( Partition_Control ) sizeof( Partition_Control )

View File

@@ -41,6 +41,7 @@ void _Rate_monotonic_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Rate_monotonic_Information, &_Rate_monotonic_Information,
OBJECTS_RTEMS_PERIODS,
FALSE, FALSE,
maximum_periods, maximum_periods,
sizeof( Rate_monotonic_Control ) sizeof( Rate_monotonic_Control )

View File

@@ -39,6 +39,7 @@ void _Region_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Region_Information, &_Region_Information,
OBJECTS_RTEMS_REGIONS,
FALSE, FALSE,
maximum_regions, maximum_regions,
sizeof( Region_Control ) sizeof( Region_Control )

View File

@@ -38,6 +38,7 @@ void _Timer_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Timer_Information, &_Timer_Information,
OBJECTS_RTEMS_TIMERS,
FALSE, FALSE,
maximum_timers, maximum_timers,
sizeof( Timer_Control ) sizeof( Timer_Control )

View File

@@ -56,6 +56,7 @@ void _Semaphore_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Semaphore_Information, &_Semaphore_Information,
OBJECTS_RTEMS_SEMAPHORES,
TRUE, TRUE,
maximum_semaphores, maximum_semaphores,
sizeof( Semaphore_Control ) sizeof( Semaphore_Control )

View File

@@ -143,7 +143,6 @@ rtems_status_code rtems_task_create(
return( RTEMS_TOO_MANY ); return( RTEMS_TOO_MANY );
} }
the_thread->name = name;
the_thread->attribute_set = the_attribute_set; the_thread->attribute_set = the_attribute_set;
the_thread->current_state = STATES_DORMANT; the_thread->current_state = STATES_DORMANT;
the_thread->current_modes = initial_modes; the_thread->current_modes = initial_modes;

View File

@@ -38,6 +38,7 @@ void _Timer_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Timer_Information, &_Timer_Information,
OBJECTS_RTEMS_TIMERS,
FALSE, FALSE,
maximum_timers, maximum_timers,
sizeof( Timer_Control ) sizeof( Timer_Control )

View File

@@ -36,6 +36,7 @@ void _Extension_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Extension_Information, &_Extension_Information,
OBJECTS_RTEMS_EXTENSIONS,
FALSE, FALSE,
maximum_extensions, maximum_extensions,
sizeof( Extension_Control ) sizeof( Extension_Control )

View File

@@ -51,7 +51,8 @@ void _Objects_Handler_initialization(
* This routine initializes all object information related data structures. * This routine initializes all object information related data structures.
* *
* Input parameters: * Input parameters:
* information - object class * information - object information table
* the_class - object class
* supports_global - TRUE if this is a global object class * supports_global - TRUE if this is a global object class
* maximum - maximum objects of this class * maximum - maximum objects of this class
* size - size of this object's control block * size - size of this object's control block
@@ -61,25 +62,27 @@ void _Objects_Handler_initialization(
void _Objects_Initialize_information( void _Objects_Initialize_information(
Objects_Information *information, Objects_Information *information,
boolean supports_global, Objects_Classes the_class,
unsigned32 maximum, boolean supports_global,
unsigned32 size unsigned32 maximum,
unsigned32 size
) )
{ {
unsigned32 minimum_index; unsigned32 minimum_index;
unsigned32 index; unsigned32 index;
Objects_Control *the_object; Objects_Control *the_object;
information->maximum = maximum; information->maximum = maximum;
information->the_class = the_class;
if ( maximum == 0 ) minimum_index = 0; if ( maximum == 0 ) minimum_index = 0;
else minimum_index = 1; else minimum_index = 1;
information->minimum_id = information->minimum_id =
_Objects_Build_id( _Objects_Local_node, minimum_index ); _Objects_Build_id( the_class, _Objects_Local_node, minimum_index );
information->maximum_id = information->maximum_id =
_Objects_Build_id( _Objects_Local_node, maximum ); _Objects_Build_id( the_class, _Objects_Local_node, maximum );
information->local_table = _Workspace_Allocate_or_fatal_error( information->local_table = _Workspace_Allocate_or_fatal_error(
(maximum + 1) * sizeof(Objects_Control *) (maximum + 1) * sizeof(Objects_Control *)
@@ -110,7 +113,8 @@ void _Objects_Initialize_information(
for ( index=1; for ( index=1;
index <= maximum ; index <= maximum ;
index++ ) { index++ ) {
the_object->id = _Objects_Build_id( _Objects_Local_node, index ); the_object->id =
_Objects_Build_id( the_class, _Objects_Local_node, index );
the_object = (Objects_Control *) the_object->Node.next; the_object = (Objects_Control *) the_object->Node.next;
} }
@@ -172,7 +176,11 @@ rtems_status_code _Objects_Name_to_id(
index++ index++
) )
if ( name == names[ index ] ) { if ( name == names[ index ] ) {
*id = _Objects_Build_id( _Objects_Local_node, index ); *id = _Objects_Build_id(
information->the_class,
_Objects_Local_node,
index
);
return( RTEMS_SUCCESSFUL ); return( RTEMS_SUCCESSFUL );
} }
} }
@@ -213,6 +221,7 @@ Objects_Control *_Objects_Get(
unsigned32 index; unsigned32 index;
index = id - information->minimum_id; index = id - information->minimum_id;
if ( information->maximum >= index ) { if ( information->maximum >= index ) {
_Thread_Disable_dispatch(); _Thread_Disable_dispatch();
if ( (the_object = information->local_table[index+1]) != NULL ) { if ( (the_object = information->local_table[index+1]) != NULL ) {
@@ -273,7 +282,7 @@ _Objects_Get_next(
do { do {
/* walked off end of list? */ /* walked off end of list? */
if (next_id > information->maximum_id) if (rtems_get_index(next_id) > information->maximum)
{ {
*location_p = OBJECTS_ERROR; *location_p = OBJECTS_ERROR;
goto final; goto final;

View File

@@ -59,6 +59,7 @@ void _Thread_Handler_initialization(
_Objects_Initialize_information( _Objects_Initialize_information(
&_Thread_Information, &_Thread_Information,
OBJECTS_RTEMS_TASKS,
TRUE, TRUE,
maximum_tasks, maximum_tasks,
sizeof( Thread_Control ) sizeof( Thread_Control )

View File

@@ -120,12 +120,16 @@ rtems_monitor_id_fixup(
{ {
#if 0 #if 0
/* XXX Uncomment this when types are added to id's */ /* XXX Uncomment this when types are added to id's */
if (rtems_get_type(id) != RTEMS_OBJECT_INVALID) if (rtems_get_class(id) != OBJECTS_NO_CLASS)
type = rtems_get_type(id); type = rtems_get_class(id);
id = _Objects_Build_id(type, default_node, rtems_get_index(id)); id = _Objects_Build_id(type, default_node, rtems_get_index(id));
#else #else
id = _Objects_Build_id(default_node, rtems_get_index(id)); #warning "TONY... FIX ME!!!!!"
#if defined(hppa1_1)
#error "TONY... I SAID TO FIX ME!!!!! <HAHAHAHAHA>"
#endif
id = _Objects_Build_id(0, default_node, rtems_get_index(id));
#endif #endif
} }
return id; return id;

View File

@@ -120,12 +120,16 @@ rtems_monitor_id_fixup(
{ {
#if 0 #if 0
/* XXX Uncomment this when types are added to id's */ /* XXX Uncomment this when types are added to id's */
if (rtems_get_type(id) != RTEMS_OBJECT_INVALID) if (rtems_get_class(id) != OBJECTS_NO_CLASS)
type = rtems_get_type(id); type = rtems_get_class(id);
id = _Objects_Build_id(type, default_node, rtems_get_index(id)); id = _Objects_Build_id(type, default_node, rtems_get_index(id));
#else #else
id = _Objects_Build_id(default_node, rtems_get_index(id)); #warning "TONY... FIX ME!!!!!"
#if defined(hppa1_1)
#error "TONY... I SAID TO FIX ME!!!!! <HAHAHAHAHA>"
#endif
id = _Objects_Build_id(0, default_node, rtems_get_index(id));
#endif #endif
} }
return id; return id;

View File

@@ -120,12 +120,16 @@ rtems_monitor_id_fixup(
{ {
#if 0 #if 0
/* XXX Uncomment this when types are added to id's */ /* XXX Uncomment this when types are added to id's */
if (rtems_get_type(id) != RTEMS_OBJECT_INVALID) if (rtems_get_class(id) != OBJECTS_NO_CLASS)
type = rtems_get_type(id); type = rtems_get_class(id);
id = _Objects_Build_id(type, default_node, rtems_get_index(id)); id = _Objects_Build_id(type, default_node, rtems_get_index(id));
#else #else
id = _Objects_Build_id(default_node, rtems_get_index(id)); #warning "TONY... FIX ME!!!!!"
#if defined(hppa1_1)
#error "TONY... I SAID TO FIX ME!!!!! <HAHAHAHAHA>"
#endif
id = _Objects_Build_id(0, default_node, rtems_get_index(id));
#endif #endif
} }
return id; return id;

View File

@@ -37,6 +37,7 @@ void _Dual_ported_memory_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Dual_ported_memory_Information, &_Dual_ported_memory_Information,
OBJECTS_RTEMS_PORTS,
FALSE, FALSE,
maximum_ports, maximum_ports,
sizeof( Dual_ported_memory_Control ) sizeof( Dual_ported_memory_Control )

View File

@@ -45,6 +45,7 @@ void _Message_queue_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Message_queue_Information, &_Message_queue_Information,
OBJECTS_RTEMS_MESSAGE_QUEUES,
TRUE, TRUE,
maximum_message_queues, maximum_message_queues,
sizeof( Message_queue_Control ) sizeof( Message_queue_Control )
@@ -285,7 +286,7 @@ rtems_status_code rtems_message_queue_delete(
MESSAGE_QUEUE_MP_ANNOUNCE_DELETE, MESSAGE_QUEUE_MP_ANNOUNCE_DELETE,
the_message_queue->Object.id, the_message_queue->Object.id,
0, /* Not used */ 0, /* Not used */
MPCI_DEFAULT_TIMEOUT 0
); );
} }

View File

@@ -39,6 +39,7 @@ void _Partition_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Partition_Information, &_Partition_Information,
OBJECTS_RTEMS_PARTITIONS,
TRUE, TRUE,
maximum_partitions, maximum_partitions,
sizeof( Partition_Control ) sizeof( Partition_Control )

View File

@@ -41,6 +41,7 @@ void _Rate_monotonic_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Rate_monotonic_Information, &_Rate_monotonic_Information,
OBJECTS_RTEMS_PERIODS,
FALSE, FALSE,
maximum_periods, maximum_periods,
sizeof( Rate_monotonic_Control ) sizeof( Rate_monotonic_Control )

View File

@@ -39,6 +39,7 @@ void _Region_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Region_Information, &_Region_Information,
OBJECTS_RTEMS_REGIONS,
FALSE, FALSE,
maximum_regions, maximum_regions,
sizeof( Region_Control ) sizeof( Region_Control )

View File

@@ -38,6 +38,7 @@ void _Timer_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Timer_Information, &_Timer_Information,
OBJECTS_RTEMS_TIMERS,
FALSE, FALSE,
maximum_timers, maximum_timers,
sizeof( Timer_Control ) sizeof( Timer_Control )

View File

@@ -56,6 +56,7 @@ void _Semaphore_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Semaphore_Information, &_Semaphore_Information,
OBJECTS_RTEMS_SEMAPHORES,
TRUE, TRUE,
maximum_semaphores, maximum_semaphores,
sizeof( Semaphore_Control ) sizeof( Semaphore_Control )

View File

@@ -143,7 +143,6 @@ rtems_status_code rtems_task_create(
return( RTEMS_TOO_MANY ); return( RTEMS_TOO_MANY );
} }
the_thread->name = name;
the_thread->attribute_set = the_attribute_set; the_thread->attribute_set = the_attribute_set;
the_thread->current_state = STATES_DORMANT; the_thread->current_state = STATES_DORMANT;
the_thread->current_modes = initial_modes; the_thread->current_modes = initial_modes;

View File

@@ -36,6 +36,7 @@ void _Extension_Manager_initialization(
{ {
_Objects_Initialize_information( _Objects_Initialize_information(
&_Extension_Information, &_Extension_Information,
OBJECTS_RTEMS_EXTENSIONS,
FALSE, FALSE,
maximum_extensions, maximum_extensions,
sizeof( Extension_Control ) sizeof( Extension_Control )

View File

@@ -51,7 +51,8 @@ void _Objects_Handler_initialization(
* This routine initializes all object information related data structures. * This routine initializes all object information related data structures.
* *
* Input parameters: * Input parameters:
* information - object class * information - object information table
* the_class - object class
* supports_global - TRUE if this is a global object class * supports_global - TRUE if this is a global object class
* maximum - maximum objects of this class * maximum - maximum objects of this class
* size - size of this object's control block * size - size of this object's control block
@@ -61,25 +62,27 @@ void _Objects_Handler_initialization(
void _Objects_Initialize_information( void _Objects_Initialize_information(
Objects_Information *information, Objects_Information *information,
boolean supports_global, Objects_Classes the_class,
unsigned32 maximum, boolean supports_global,
unsigned32 size unsigned32 maximum,
unsigned32 size
) )
{ {
unsigned32 minimum_index; unsigned32 minimum_index;
unsigned32 index; unsigned32 index;
Objects_Control *the_object; Objects_Control *the_object;
information->maximum = maximum; information->maximum = maximum;
information->the_class = the_class;
if ( maximum == 0 ) minimum_index = 0; if ( maximum == 0 ) minimum_index = 0;
else minimum_index = 1; else minimum_index = 1;
information->minimum_id = information->minimum_id =
_Objects_Build_id( _Objects_Local_node, minimum_index ); _Objects_Build_id( the_class, _Objects_Local_node, minimum_index );
information->maximum_id = information->maximum_id =
_Objects_Build_id( _Objects_Local_node, maximum ); _Objects_Build_id( the_class, _Objects_Local_node, maximum );
information->local_table = _Workspace_Allocate_or_fatal_error( information->local_table = _Workspace_Allocate_or_fatal_error(
(maximum + 1) * sizeof(Objects_Control *) (maximum + 1) * sizeof(Objects_Control *)
@@ -110,7 +113,8 @@ void _Objects_Initialize_information(
for ( index=1; for ( index=1;
index <= maximum ; index <= maximum ;
index++ ) { index++ ) {
the_object->id = _Objects_Build_id( _Objects_Local_node, index ); the_object->id =
_Objects_Build_id( the_class, _Objects_Local_node, index );
the_object = (Objects_Control *) the_object->Node.next; the_object = (Objects_Control *) the_object->Node.next;
} }
@@ -172,7 +176,11 @@ rtems_status_code _Objects_Name_to_id(
index++ index++
) )
if ( name == names[ index ] ) { if ( name == names[ index ] ) {
*id = _Objects_Build_id( _Objects_Local_node, index ); *id = _Objects_Build_id(
information->the_class,
_Objects_Local_node,
index
);
return( RTEMS_SUCCESSFUL ); return( RTEMS_SUCCESSFUL );
} }
} }
@@ -213,6 +221,7 @@ Objects_Control *_Objects_Get(
unsigned32 index; unsigned32 index;
index = id - information->minimum_id; index = id - information->minimum_id;
if ( information->maximum >= index ) { if ( information->maximum >= index ) {
_Thread_Disable_dispatch(); _Thread_Disable_dispatch();
if ( (the_object = information->local_table[index+1]) != NULL ) { if ( (the_object = information->local_table[index+1]) != NULL ) {
@@ -273,7 +282,7 @@ _Objects_Get_next(
do { do {
/* walked off end of list? */ /* walked off end of list? */
if (next_id > information->maximum_id) if (rtems_get_index(next_id) > information->maximum)
{ {
*location_p = OBJECTS_ERROR; *location_p = OBJECTS_ERROR;
goto final; goto final;

View File

@@ -59,6 +59,7 @@ void _Thread_Handler_initialization(
_Objects_Initialize_information( _Objects_Initialize_information(
&_Thread_Information, &_Thread_Information,
OBJECTS_RTEMS_TASKS,
TRUE, TRUE,
maximum_tasks, maximum_tasks,
sizeof( Thread_Control ) sizeof( Thread_Control )