Changeset 5b1ff71a in rtems
- Timestamp:
- 05/13/14 13:57:43 (9 years ago)
- Branches:
- 4.11, 5, master
- Children:
- beab7329
- Parents:
- 774ee002
- git-author:
- Sebastian Huber <sebastian.huber@…> (05/13/14 13:57:43)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (05/14/14 12:46:19)
- Location:
- cpukit/score/include/rtems/score
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
cpukit/score/include/rtems/score/scheduler.h
r774ee002 r5b1ff71a 44 44 45 45 /** 46 * function jump table that holds pointers to the functions that 47 * implement specific schedulers. 46 * @brief The scheduler operations. 48 47 */ 49 48 typedef struct { 50 /** Implements the scheduling decision logic (policy).*/49 /** @see _Scheduler_Handler_initialization() */ 51 50 void ( *initialize )( const Scheduler_Control * ); 52 51 53 /** Implements the scheduling decision logic (policy).*/52 /** @see _Scheduler_Schedule() */ 54 53 void ( *schedule )( const Scheduler_Control *, Thread_Control *); 55 54 56 /** 57 * @brief Voluntarily yields the processor per the scheduling policy. 58 * 59 * @see _Scheduler_Yield(). 60 */ 55 /** @see _Scheduler_Yield() */ 61 56 void ( *yield )( const Scheduler_Control *, Thread_Control *); 62 57 63 /** Removes the given thread from scheduling decisions.*/58 /** @see _Scheduler_Block() */ 64 59 void ( *block )( const Scheduler_Control *, Thread_Control * ); 65 60 66 /** Adds the given thread to scheduling decisions.*/61 /** @see _Scheduler_Unblock() */ 67 62 void ( *unblock )( const Scheduler_Control *, Thread_Control * ); 68 63 69 /** allocates the scheduler field of the given thread*/64 /** @see _Scheduler_Allocate() */ 70 65 bool ( *allocate )( const Scheduler_Control *, Thread_Control * ); 71 66 72 /** frees the scheduler field of the given thread*/67 /** @see _Scheduler_Free() */ 73 68 void ( *free )( const Scheduler_Control *, Thread_Control * ); 74 69 75 /** updates the scheduler field of the given thread -- primarily used 76 * when changing the thread's priority. */ 70 /** @see _Scheduler_Update() */ 77 71 void ( *update )( const Scheduler_Control *, Thread_Control * ); 78 72 79 /** enqueue a thread as the last of its priority group*/73 /** @see _Scheduler_Enqueue() */ 80 74 void ( *enqueue )( const Scheduler_Control *, Thread_Control * ); 81 75 82 /** enqueue a thread as the first of its priority group*/76 /** @see _Scheduler_Enqueue_first() */ 83 77 void ( *enqueue_first )( const Scheduler_Control *, Thread_Control * ); 84 78 85 /** extract a thread from the ready set*/79 /** @see _Scheduler_Extract() */ 86 80 void ( *extract )( const Scheduler_Control *, Thread_Control * ); 87 81 88 /** 89 * Compares two priorities (returns >0 for higher priority, 0 for equal 90 * and <0 for lower priority). 91 */ 82 /** @see _Scheduler_Priority_compare() */ 92 83 int ( *priority_compare )( 93 84 Priority_Control, … … 95 86 ); 96 87 97 /** This routine is called upon release of a new job.*/88 /** @see _Scheduler_Release_job() */ 98 89 void ( *release_job ) ( 99 90 const Scheduler_Control *, … … 102 93 ); 103 94 104 /** perform scheduler update actions required at each clock tick*/95 /** @see _Scheduler_Tick() */ 105 96 void ( *tick )( const Scheduler_Control *, Thread_Control * ); 106 97 107 /** 108 * @brief Starts the idle thread for a particular processor. 109 * 110 * @see _Scheduler_Start_idle(). 111 */ 98 /** @see _Scheduler_Start_idle() */ 112 99 void ( *start_idle )( 113 100 const Scheduler_Control *, … … 117 104 118 105 #if defined(__RTEMS_HAVE_SYS_CPUSET_H__) && defined(RTEMS_SMP) 119 /** 120 * @brief Obtain the processor affinity for a thread. 121 * 122 * @see _Scheduler_Get_affinity(). 123 */ 106 /** @see _Scheduler_Get_affinity() */ 124 107 bool ( *get_affinity )( 125 108 const Scheduler_Control *, … … 129 112 ); 130 113 131 /** 132 * @brief Set the processor affinity for a thread. 133 * 134 * @see _Scheduler_Set_affinity(). 135 */ 114 /** @see _Scheduler_Set_affinity() */ 136 115 bool ( *set_affinity )( 137 116 const Scheduler_Control *, … … 366 345 #endif 367 346 368 /* 347 /** 348 * @brief Indicates if thread priority queues are broken with the configured 349 * scheduler or not. 350 * 369 351 * See also PR2174: Memory corruption with EDF scheduler and thread priority 370 352 * queues. -
cpukit/score/include/rtems/score/schedulerimpl.h
r774ee002 r5b1ff71a 184 184 185 185 /** 186 * @brief Scheduler enqueue. 187 * 188 * This routine enqueue @a the_thread->scheduler 186 * @brief Enqueues a thread as the last of its priority group. 187 * 188 * @param[in] scheduler The scheduler instance. 189 * @param[in] the_thread The thread to enqueue. 189 190 */ 190 191 RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue( … … 197 198 198 199 /** 199 * @brief Scheduler enqueue first. 200 * 201 * This routine enqueue_first @a the_thread->scheduler 200 * @brief Enqueues a thread as the first of its priority group. 201 * 202 * @param[in] scheduler The scheduler instance. 203 * @param[in] the_thread The thread to enqueue. 202 204 */ 203 205 RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue_first( … … 223 225 224 226 /** 225 * @brief Scheduler priority compare. 226 * 227 * This routine compares two priorities. 227 * @brief Compares two priority values. 228 * 229 * @param[in] scheduler The scheduler instance. 230 * @param[in] p1 The first priority value. 231 * @param[in] p2 The second priority value. 232 * 233 * @retval negative The value @a p1 encodes a lower priority than @a p2 in the 234 * intuitive sense of priority. 235 * @retval 0 The priorities @a p1 and @a p2 are equal. 236 * @retval positive The value @a p1 encodes a higher priority than @a p2 in the 237 * intuitive sense of priority. 238 * 239 * @see _Scheduler_Is_priority_lower_than() and 240 * _Scheduler_Is_priority_higher_than(). 228 241 */ 229 242 RTEMS_INLINE_ROUTINE int _Scheduler_Priority_compare( … … 493 506 494 507 /** 495 * @brief Returns true if @ p1 encodes a lower priority than @a p2 in the508 * @brief Returns true if @a p1 encodes a lower priority than @a p2 in the 496 509 * intuitive sense of priority. 497 510 */ … … 506 519 507 520 /** 508 * @brief Returns true if @ p1 encodes a higher priority than @a p2 in the521 * @brief Returns true if @a p1 encodes a higher priority than @a p2 in the 509 522 * intuitive sense of priority. 510 523 */ -
cpukit/score/include/rtems/score/schedulerpriority.h
r774ee002 r5b1ff71a 29 29 30 30 /** 31 * @defgroup ScoreSchedulerDPS Deterministic Priority -basedScheduler31 * @defgroup ScoreSchedulerDPS Deterministic Priority Scheduler 32 32 * 33 33 * @ingroup ScoreScheduler -
cpukit/score/include/rtems/score/schedulerpriorityaffinitysmp.h
r774ee002 r5b1ff71a 32 32 * @defgroup ScoreSchedulerPriorityAffinitySMP Deterministic Priority Affinity SMP Scheduler 33 33 * 34 * @ingroup ScoreScheduler 34 * @ingroup ScoreSchedulerPrioritySMP 35 35 * 36 36 * This is an extension of the Deterministic Priority SMP Scheduler. which -
cpukit/score/include/rtems/score/schedulerpriorityimpl.h
r774ee002 r5b1ff71a 32 32 33 33 /** 34 * @addtogroup ScoreScheduler 34 * @addtogroup ScoreSchedulerDPS 35 35 */ 36 36 /**@{**/ -
cpukit/score/include/rtems/score/schedulerprioritysmp.h
r774ee002 r5b1ff71a 35 35 * @defgroup ScoreSchedulerPrioritySMP Deterministic Priority SMP Scheduler 36 36 * 37 * @ingroup ScoreScheduler 37 * @ingroup ScoreSchedulerSMP 38 38 * 39 39 * This is an implementation of the global fixed priority scheduler (G-FP). It -
cpukit/score/include/rtems/score/schedulersimpleimpl.h
r774ee002 r5b1ff71a 29 29 30 30 /** 31 * @addtogroup ScoreScheduler 31 * @addtogroup ScoreSchedulerSimple 32 32 */ 33 33 /**@{**/ -
cpukit/score/include/rtems/score/schedulersimplesmp.h
r774ee002 r5b1ff71a 4 4 * @brief Simple SMP Scheduler API 5 5 * 6 * @ingroup ScoreSchedulerSMP 6 * @ingroup ScoreSchedulerSMPSimple 7 7 */ 8 8 … … 29 29 30 30 /** 31 * @defgroup ScoreSchedulerSMP SimpleSMP Scheduler31 * @defgroup ScoreSchedulerSMPSimple Simple Priority SMP Scheduler 32 32 * 33 * @ingroup ScoreScheduler 33 * @ingroup ScoreSchedulerSMP 34 34 * 35 * The Simple SMP Scheduler allocates a processor for the processor count36 * highest priority ready threads. The thread priority and position in the37 * ready chain are the only information to determine the scheduling decision.38 * Threads with an allocated processor are in the scheduled chain. After39 * initialization the scheduled chain has exactly processor count nodes. Each40 * processor has exactly one allocated thread after initialization. All35 * The Simple Priority SMP Scheduler allocates a processor for the processor 36 * count highest priority ready threads. The thread priority and position in 37 * the ready chain are the only information to determine the scheduling 38 * decision. Threads with an allocated processor are in the scheduled chain. 39 * After initialization the scheduled chain has exactly processor count nodes. 40 * Each processor has exactly one allocated thread after initialization. All 41 41 * enqueue and extract operations may exchange threads with the scheduled 42 42 * chain. One thread will be added and another will be removed. The scheduled
Note: See TracChangeset
for help on using the changeset viewer.