blob: a17870d86801adcb5175f7a550f1f7560054879e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
/* priority.h
*
* This include file contains all thread priority manipulation routines.
* This Handler provides mechanisms which can be used to
* initialize and manipulate thread priorities.
*
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
* On-Line Applications Research Corporation (OAR).
* All rights assigned to U.S. Government, 1994.
*
* This material may be reproduced by or for the U.S. Government pursuant
* to the copyright license under the clause at DFARS 252.227-7013. This
* notice must appear in all copies of this file and its derivatives.
*
* $Id$
*/
#ifndef __PRIORITY_h
#define __PRIORITY_h
#ifdef __cplusplus
extern "C" {
#endif
/*
* The following type defines the control block used to manage
* thread priorities.
*
* NOTE: Priority 0 is reserved for internal threads only.
*/
typedef unsigned32 Priority_Control;
#define PRIORITY_MINIMUM 0 /* highest thread priority */
#define PRIORITY_MAXIMUM 255 /* lowest thread priority */
/*
* The following record defines the information associated with
* each thread to manage its interaction with the priority bit maps.
*/
typedef struct {
Priority_Bit_map_control *minor; /* addr of minor bit map slot */
Priority_Bit_map_control ready_major; /* priority bit map ready mask */
Priority_Bit_map_control ready_minor; /* priority bit map ready mask */
Priority_Bit_map_control block_major; /* priority bit map block mask */
Priority_Bit_map_control block_minor; /* priority bit map block mask */
} Priority_Information;
/*
* The following data items are the priority bit map.
* Each of the sixteen bits used in the _Priority_Major_bit_map is
* associated with one of the sixteen entries in the _Priority_Bit_map.
* Each bit in the _Priority_Bit_map indicates whether or not there are
* threads ready at a particular priority. The mapping of
* individual priority levels to particular bits is processor
* dependent as is the value of each bit used to indicate that
* threads are ready at that priority.
*/
SCORE_EXTERN volatile Priority_Bit_map_control _Priority_Major_bit_map;
SCORE_EXTERN Priority_Bit_map_control
_Priority_Bit_map[16] CPU_STRUCTURE_ALIGNMENT;
/*
* The definition of the Priority_Bit_map_control type is CPU dependent.
*
*/
/*
* Priority Bitfield Manipulation Routines
*
* NOTE:
*
* These may simply be pass throughs to CPU dependent routines.
*/
#if ( CPU_USE_GENERIC_BITFIELD_CODE == FALSE )
#define _Priority_Mask( _bit_number ) \
_CPU_Priority_Mask( _bit_number )
#define _Priority_Bits_index( _priority ) \
_CPU_Priority_bits_index( _priority )
#endif
#ifndef __RTEMS_APPLICATION__
#include <rtems/score/priority.inl>
#endif
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */
|