summaryrefslogtreecommitdiffstats
path: root/cpukit/score/macros/rtems
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cpukit/score/macros/rtems/score/object.inl30
-rw-r--r--cpukit/score/macros/rtems/score/userext.inl16
2 files changed, 36 insertions, 10 deletions
diff --git a/cpukit/score/macros/rtems/score/object.inl b/cpukit/score/macros/rtems/score/object.inl
index cce2cbde9b..62994ee4e5 100644
--- a/cpukit/score/macros/rtems/score/object.inl
+++ b/cpukit/score/macros/rtems/score/object.inl
@@ -93,21 +93,39 @@
/*PAGE
*
- * _Objects_Allocate
+ * _Objects_Get_local_object
*
*/
-#define _Objects_Allocate( _information ) \
- (Objects_Control *) _Chain_Get( &(_information)->Inactive )
+#define _Objects_Get_local_object( information, index ) \
+ ( ( index > information->maximum) ? NULL : \
+ information->local_table[ index ] )
/*PAGE
*
- * _Objects_Free
+ * _Objects_Set_local_object
*
*/
-#define _Objects_Free( _information, _the_object ) \
- _Chain_Append( &(_information)->Inactive, &(_the_object)->Node )
+#define _Objects_Set_local_object( information, index, the_object ) \
+ { \
+ if ( index <= information->maximum) \
+ information->local_table[ index ] = the_object; \
+ }
+
+
+/*PAGE
+ *
+ * _Objects_Get_information
+ *
+ */
+
+#define _Objects_Get_information( id ) \
+ ( \
+ ( !_Objects_Is_class_valid( _Objects_Get_class( id ) ) ) ? \
+ NULL : \
+ _Objects_Information_table[ _Objects_Get_class( id ) ] \
+ )
/*PAGE
*
diff --git a/cpukit/score/macros/rtems/score/userext.inl b/cpukit/score/macros/rtems/score/userext.inl
index 37b0bf8d2a..69fd0de4b1 100644
--- a/cpukit/score/macros/rtems/score/userext.inl
+++ b/cpukit/score/macros/rtems/score/userext.inl
@@ -23,14 +23,22 @@
*
*/
-#define _User_extensions_Handler_initialization( _initial_extensions ) \
+#define _User_extensions_Handler_initialization( \
+ number_of_extensions, _initial_extensions \
+) \
{ \
+ User_extensions_Control *extension; \
+ unsigned32 i; \
_Chain_Initialize_empty( &_User_extensions_List ); \
\
if ( (_initial_extensions) ) { \
- _User_extensions_Initial.Callouts = *(_initial_extensions); \
- _Chain_Append( \
- &_User_extensions_List, &_User_extensions_Initial.Node ); \
+ for (i=0 ; i<number_of_extensions ; i++ ) { \
+ extension = \
+ _Workspace_Allocate_or_fatal_error( sizeof(User_extensions_Control) ); \
+ \
+ extension->Callouts = _initial_extensions[i]; \
+ _Chain_Append( &_User_extensions_List, &extension->Node ); \
+ } \
} \
}