blob: 43f810efcfc6b12ae5292a6068f16850e756942f (
plain) (
blame)
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-1997.
* On-Line Applications Research Corporation (OAR).
* Copyright assigned to U.S. Government, 1994.
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
* http://www.OARcorp.com/rtems/license.html.
*
* $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 */
|