Changeset ef9505a9 in rtems for cpukit/score/macros


Ignore:
Timestamp:
Jul 1, 2002, 10:30:12 PM (18 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
0577ec1d
Parents:
3a05d15
Message:

2002-07-01 Joel Sherrill <joel@…>

  • Mega patch merge to change the format of the object IDs to loosen the dependency between the SCORE and the various APIs. There was considerable work to simplify the object name management and it appears that the name_table field is no longer needed. This patch also includes the addition of the internal mutex which is currently only used to protect some types of allocation and deallocation. This significantly can reduce context switch latency under certain circumstances. In particular, some heap/region operations were O(n) and had dispatching disabled. This should help enormously. With this merge, the patch is not as clean as it should be. In particular, the documentation has not been modified to reflect the new object ID layout, the IDs in the test screens are not updated, and _Objects_Get_information needs to be a real routine not inlined. As part of this patch a lot of MP code for thread/proxy blocking was made conditional and cleaned up.
  • include/Makefile.am, include/rtems/score/coremsg.h, include/rtems/score/coremutex.h, include/rtems/score/coresem.h, include/rtems/score/object.h, include/rtems/score/threadq.h, inline/rtems/score/object.inl, inline/rtems/score/thread.inl, macros/rtems/score/object.inl, src/Makefile.am, src/coremsg.c, src/coremutex.c, src/coresem.c, src/mpci.c, src/objectcomparenameraw.c, src/objectextendinformation.c, src/objectinitializeinformation.c, src/objectnametoid.c, src/thread.c, src/threadclose.c, src/threadget.c, src/threadq.c, src/threadqextractwithproxy.c: Modified as part of above.
  • include/rtems/score/apimutex.h, src/objectgetnoprotection.c: New files.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/score/macros/rtems/score/object.inl

    r3a05d15 ref9505a9  
    2323 */
    2424
    25 #define _Objects_Build_id( _the_class, _node, _index ) \
    26   ( (( (Objects_Id) (_the_class) ) << OBJECTS_CLASS_START_BIT) | \
    27     (( (Objects_Id) (_node) ) << OBJECTS_NODE_START_BIT)       | \
    28     (( (Objects_Id) (_index) ) << OBJECTS_INDEX_START_BIT) )
     25#define _Objects_Build_id( _the_api, _the_class, _node, _index ) \
     26  ( (( (Objects_Id) _the_api ) << OBJECTS_API_START_BIT) | \
     27    (( (Objects_Id) _the_class ) << OBJECTS_CLASS_START_BIT) | \
     28    (( (Objects_Id) _node ) << OBJECTS_NODE_START_BIT)       | \
     29    (( (Objects_Id) _index ) << OBJECTS_INDEX_START_BIT) )
     30
     31/*PAGE
     32 *
     33 *  _Objects_Get_API
     34 */
     35 
     36#define _Objects_Get_API( _id ) \
     37  (Objects_APIs) \
     38    (((_id) >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS)
    2939
    3040/*PAGE
     
    3444 
    3545#define _Objects_Get_class( _id ) \
    36   (Objects_Classes) \
     46  (unsigned32) \
    3747    (((_id) >> OBJECTS_CLASS_START_BIT) & OBJECTS_CLASS_VALID_BITS)
    3848
     
    6272 
    6373#define _Objects_Is_class_valid( _the_class ) \
    64   ( (_the_class) && (_the_class) <= OBJECTS_CLASSES_LAST )
     74  ( (_the_class) /* XXX && (_the_class) <= OBJECTS_CLASSES_LAST */ )
    6575
    6676/*PAGE
     
    124134   ( !_Objects_Is_class_valid( _Objects_Get_class( id ) ) ) ? \
    125135     NULL : \
    126      _Objects_Information_table[ _Objects_Get_class( id ) ] \
     136     _Objects_Information_table[ _Objects_Get_API( id ) ] \
     137       [ _Objects_Get_class( id ) ] \
    127138 )
    128139
Note: See TracChangeset for help on using the changeset viewer.