summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/priority.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/include/rtems/score/priority.h')
-rw-r--r--cpukit/score/include/rtems/score/priority.h81
1 files changed, 53 insertions, 28 deletions
diff --git a/cpukit/score/include/rtems/score/priority.h b/cpukit/score/include/rtems/score/priority.h
index 58b70add1b..bfe43e282d 100644
--- a/cpukit/score/include/rtems/score/priority.h
+++ b/cpukit/score/include/rtems/score/priority.h
@@ -7,7 +7,7 @@
*/
/*
- * COPYRIGHT (c) 1989-2004.
+ * COPYRIGHT (c) 1989-2006.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -23,7 +23,16 @@
/**
* @defgroup ScorePriority Priority Handler
*
- * This group contains functionality which XXX
+ * This handler encapsulates functionality which is used to manage
+ * thread priorities. At the SuperCore level 256 priority levels
+ * are supported with lower numbers representing logically more important
+ * threads. The priority level 0 is reserved for internal RTEMS use.
+ * Typically it is assigned to threads which defer internal RTEMS
+ * actions from an interrupt to thread level to improve interrupt response.
+ * Priority level 255 is assigned to the IDLE thread and really should not
+ * be used by application threads. The default IDLE thread implementation
+ * is an infinite "branch to self" loop which never yields to other threads
+ * at the same priority.
*/
/**@{*/
@@ -31,43 +40,48 @@
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 uint32_t Priority_Control;
-#define PRIORITY_MINIMUM 0 /* highest thread priority */
-#define PRIORITY_MAXIMUM 255 /* lowest thread priority */
+/** This defines the highest (most important) thread priority. */
+#define PRIORITY_MINIMUM 0
+/** This defines the lowest (least important) thread priority. */
+#define PRIORITY_MAXIMUM 255
-/*
+/**
* 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 */
+ /** This is the address of minor bit map slot. */
+ Priority_Bit_map_control *minor;
+ /** This is the priority bit map ready mask. */
+ Priority_Bit_map_control ready_major;
+ /** This is the priority bit map ready mask. */
+ Priority_Bit_map_control ready_minor;
+ /** This is the priority bit map block mask. */
+ Priority_Bit_map_control block_major;
+ /** This is the priority bit map block mask. */
+ Priority_Bit_map_control block_minor;
} 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
+/**
+ * Each sixteen bit entry in this array is associated with one of
+ * the sixteen entries in the Priority Bit map.
+ */
+SCORE_EXTERN volatile Priority_Bit_map_control _Priority_Major_bit_map;
+
+/** Each bit in the Priority Bitmap 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;
@@ -76,22 +90,33 @@ SCORE_EXTERN Priority_Bit_map_control
*
*/
-/*
- * Priority Bitfield Manipulation Routines
+#if ( CPU_USE_GENERIC_BITFIELD_CODE == FALSE )
+/**
+ * This method returns the priority bit mask for the specified major
+ * or minor bit number.
*
- * @note
+ * @param[in] _bit_number is the bit number for which we need a mask
*
- * These may simply be pass throughs to CPU dependent routines.
+ * @return the priority bit mask
+ *
+ * @note This may simply be a pass through to a CPU dependent implementation.
*/
-
-#if ( CPU_USE_GENERIC_BITFIELD_CODE == FALSE )
-
#define _Priority_Mask( _bit_number ) \
_CPU_Priority_Mask( _bit_number )
+#endif
+#if ( CPU_USE_GENERIC_BITFIELD_CODE == FALSE )
+/**
+ * This method returns the bit index position for the specified priority.
+ *
+ * @param[in] _priority is the priority for which we need the index.
+ *
+ * @return This method returns the array index into the priority bit map.
+ *
+ * @note This may simply be a pass through to a CPU dependent implementation.
+ */
#define _Priority_Bits_index( _priority ) \
_CPU_Priority_bits_index( _priority )
-
#endif
#ifndef __RTEMS_APPLICATION__