source: rtems/c/src/exec/score/inline/rtems/score/object.inl @ 3235ad9

4.104.114.84.95
Last change on this file since 3235ad9 was 3235ad9, checked in by Joel Sherrill <joel.sherrill@…>, on 08/23/95 at 19:30:23

Support for variable length names added to Object Handler. This supports
both fixed length "raw" names and strings from the API's point of view.

Both inline and macro implementations were tested.

  • Property mode set to 100644
File size: 3.1 KB
Line 
1/*  object.inl
2 *
3 *  This include file contains the static inline implementation of all
4 *  of the inlined routines in the Object Handler.
5 *
6 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
7 *  On-Line Applications Research Corporation (OAR).
8 *  All rights assigned to U.S. Government, 1994.
9 *
10 *  This material may be reproduced by or for the U.S. Government pursuant
11 *  to the copyright license under the clause at DFARS 252.227-7013.  This
12 *  notice must appear in all copies of this file and its derivatives.
13 *
14 *  $Id$
15 */
16
17#ifndef __OBJECTS_inl
18#define __OBJECTS_inl
19
20/*PAGE
21 *
22 *  _Objects_Build_id
23 *
24 */
25
26STATIC INLINE Objects_Id _Objects_Build_id(
27  Objects_Classes  the_class,
28  unsigned32       node,
29  unsigned32       index
30)
31{
32  return ( (the_class << OBJECTS_CLASS_START_BIT) |
33           (node << OBJECTS_NODE_START_BIT)       |
34           (index << OBJECTS_INDEX_START_BIT) );
35}
36
37/*PAGE
38 *
39 *  rtems_get_class
40 */
41 
42STATIC INLINE Objects_Classes rtems_get_class(
43  Objects_Id id
44)
45{
46  return (Objects_Classes)
47    ((id >> OBJECTS_CLASS_START_BIT) & OBJECTS_CLASS_VALID_BITS);
48}
49 
50
51/*PAGE
52 *
53 *  rtems_get_node
54 *
55 */
56
57STATIC INLINE unsigned32 rtems_get_node(
58  Objects_Id id
59)
60{
61  return (id >> OBJECTS_NODE_START_BIT) & OBJECTS_NODE_VALID_BITS;
62}
63
64/*PAGE
65 *
66 *  rtems_get_index
67 *
68 */
69
70STATIC INLINE unsigned32 rtems_get_index(
71  Objects_Id id
72)
73{
74  return (id >> OBJECTS_INDEX_START_BIT) & OBJECTS_INDEX_VALID_BITS;
75}
76
77/*PAGE
78 *
79 *  _Objects_Is_local_node
80 *
81 */
82
83STATIC INLINE boolean _Objects_Is_local_node(
84  unsigned32 node
85)
86{
87  return ( node == _Objects_Local_node );
88}
89
90/*PAGE
91 *
92 *  _Objects_Is_local_id
93 *
94 */
95
96STATIC INLINE boolean _Objects_Is_local_id(
97  Objects_Id id
98)
99{
100  return _Objects_Is_local_node( rtems_get_node(id) );
101}
102
103/*PAGE
104 *
105 *  _Objects_Are_ids_equal
106 *
107 */
108
109STATIC INLINE boolean _Objects_Are_ids_equal(
110  Objects_Id left,
111  Objects_Id right
112)
113{
114  return ( left == right );
115}
116
117/*PAGE
118 *
119 *  _Objects_Allocate
120 *
121 */
122
123STATIC INLINE Objects_Control *_Objects_Allocate(
124  Objects_Information *information
125)
126{
127  return (Objects_Control *) _Chain_Get( &information->Inactive );
128}
129
130/*PAGE
131 *
132 *  _Objects_Free
133 *
134 */
135
136STATIC INLINE void _Objects_Free(
137  Objects_Information *information,
138  Objects_Control     *the_object
139)
140{
141  _Chain_Append( &information->Inactive, &the_object->Node );
142}
143
144/*PAGE
145 *
146 *  _Objects_Open
147 *
148 */
149
150STATIC INLINE void _Objects_Open(
151  Objects_Information *information,
152  Objects_Control     *the_object,
153  Objects_Name         name
154)
155{
156  unsigned32  index;
157
158  index = rtems_get_index( the_object->id );
159  information->local_table[ index ] = the_object;
160
161  if ( information->is_string )
162    _Objects_Copy_name_string( name, the_object->name );
163  else
164    _Objects_Copy_name_raw( name, the_object->name, information->name_length );
165}
166
167/*PAGE
168 *
169 *  _Objects_Close
170 *
171 */
172
173STATIC INLINE void _Objects_Close(
174  Objects_Information  *information,
175  Objects_Control      *the_object
176)
177{
178  unsigned32 index;
179
180  index = rtems_get_index( the_object->id );
181  information->local_table[ index ] = NULL;
182  _Objects_Clear_name( the_object->name, information->name_length );
183}
184
185#endif
186/* end of include file */
Note: See TracBrowser for help on using the repository browser.