source: rtems/c/src/exec/score/inline/priority.inl @ eb5a7e07

4.104.114.84.95
Last change on this file since eb5a7e07 was 5e9b32b, checked in by Joel Sherrill <joel.sherrill@…>, on 09/26/95 at 19:27:15

posix support initially added

  • Property mode set to 100644
File size: 3.3 KB
Line 
1/*  priority.inl
2 *
3 *  This file contains the static inline implementation of all inlined
4 *  routines in the Priority 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 __PRIORITY_inl
18#define __PRIORITY_inl
19
20#include <rtems/score/bitfield.h>
21
22/*PAGE
23 *
24 *  _Priority_Handler_initialization
25 *
26 */
27
28STATIC INLINE void _Priority_Handler_initialization( void )
29{
30  unsigned32 index;
31
32  _Priority_Major_bit_map = 0;
33  for ( index=0 ; index <16 ; index++ )
34     _Priority_Bit_map[ index ] = 0;
35}
36
37/*PAGE
38 *
39 *  _Priority_Is_valid
40 *
41 */
42
43STATIC INLINE boolean _Priority_Is_valid (
44  Priority_Control the_priority
45)
46{
47  /*
48   *  Since PRIORITY_MINIMUM is 0 and priorities are stored unsigned,
49   *  then checking for less than 0 is unnecessary.
50   */
51
52  return ( the_priority <= PRIORITY_MAXIMUM );
53}
54
55/*PAGE
56 *
57 *  _Priority_Major
58 *
59 */
60
61STATIC INLINE unsigned32 _Priority_Major (
62  Priority_Control the_priority
63)
64{
65  return ( the_priority / 16 );
66}
67
68/*PAGE
69 *
70 *  _Priority_Minor
71 *
72 */
73
74STATIC INLINE unsigned32 _Priority_Minor (
75  Priority_Control the_priority
76)
77{
78  return ( the_priority % 16 );
79}
80
81/*PAGE
82 *
83 *  _Priority_Add_to_bit_map
84 *
85 */
86
87STATIC INLINE void _Priority_Add_to_bit_map (
88  Priority_Information *the_priority_map
89)
90{
91  *the_priority_map->minor |= the_priority_map->ready_minor;
92  _Priority_Major_bit_map  |= the_priority_map->ready_major;
93}
94
95/*PAGE
96 *
97 *  _Priority_Remove_from_bit_map
98 *
99 */
100
101STATIC INLINE void _Priority_Remove_from_bit_map (
102  Priority_Information *the_priority_map
103)
104{
105  *the_priority_map->minor &= the_priority_map->block_minor;
106  if ( *the_priority_map->minor == 0 )
107    _Priority_Major_bit_map &= the_priority_map->block_major;
108}
109
110/*PAGE
111 *
112 *  _Priority_Get_highest
113 *
114 */
115
116STATIC INLINE Priority_Control _Priority_Get_highest( void )
117{
118  Priority_Bit_map_control minor;
119  Priority_Bit_map_control major;
120
121  _Bitfield_Find_first_bit( _Priority_Major_bit_map, major );
122  _Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
123
124  return (_CPU_Priority_Bits_index( major ) << 4) +
125          _CPU_Priority_Bits_index( minor );
126}
127
128/*PAGE
129 *
130 *  _Priority_Initialize_information
131 *
132 */
133
134STATIC INLINE void _Priority_Initialize_information(
135  Priority_Information *the_priority_map,
136  Priority_Control      new_priority
137)
138{
139  Priority_Bit_map_control major;
140  Priority_Bit_map_control minor;
141  Priority_Bit_map_control mask;
142
143  major = _Priority_Major( new_priority );
144  minor = _Priority_Minor( new_priority );
145
146  the_priority_map->minor =
147    &_Priority_Bit_map[ _CPU_Priority_Bits_index(major) ];
148
149  mask = _CPU_Priority_Mask( major );
150  the_priority_map->ready_major = mask;
151  the_priority_map->block_major = ~mask;
152
153  mask = _CPU_Priority_Mask( minor );
154  the_priority_map->ready_minor = mask;
155  the_priority_map->block_minor = ~mask;
156}
157
158/*PAGE
159 *
160 *  _Priority_Is_group_empty
161 *
162 */
163
164STATIC INLINE boolean _Priority_Is_group_empty (
165  Priority_Control      the_priority
166)
167{
168  return the_priority == 0;
169}
170
171#endif
172/* end of include file */
Note: See TracBrowser for help on using the repository browser.