RTEMS  5.1
schedulerpriority.h
Go to the documentation of this file.
1 
12 /*
13  * Copryight (c) 2010 Gedare Bloom.
14  * Copyright (C) 2011 On-Line Applications Research Corporation (OAR).
15  *
16  * The license and distribution terms for this file may be
17  * found in the file LICENSE in this distribution or at
18  * http://www.rtems.org/license/LICENSE.
19  */
20 
21 #ifndef _RTEMS_SCORE_SCHEDULERPRIORITY_H
22 #define _RTEMS_SCORE_SCHEDULERPRIORITY_H
23 
24 #include <rtems/score/chain.h>
26 #include <rtems/score/scheduler.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
45 #define SCHEDULER_PRIORITY_ENTRY_POINTS \
46  { \
47  _Scheduler_priority_Initialize, /* initialize entry point */ \
48  _Scheduler_priority_Schedule, /* schedule entry point */ \
49  _Scheduler_priority_Yield, /* yield entry point */ \
50  _Scheduler_priority_Block, /* block entry point */ \
51  _Scheduler_priority_Unblock, /* unblock entry point */ \
52  _Scheduler_priority_Update_priority, /* update priority entry point */ \
53  _Scheduler_default_Map_priority, /* map priority entry point */ \
54  _Scheduler_default_Unmap_priority, /* unmap priority entry point */ \
55  SCHEDULER_OPERATION_DEFAULT_ASK_FOR_HELP \
56  _Scheduler_priority_Node_initialize, /* node initialize entry point */ \
57  _Scheduler_default_Node_destroy, /* node destroy entry point */ \
58  _Scheduler_default_Release_job, /* new period of task */ \
59  _Scheduler_default_Cancel_job, /* cancel period of task */ \
60  _Scheduler_default_Tick, /* tick entry point */ \
61  _Scheduler_default_Start_idle /* start idle entry point */ \
62  SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY \
63  }
64 
65 typedef struct {
70 
75 
79  Chain_Control Ready[ 0 ];
81 
85 typedef struct {
89  unsigned int current_priority;
90 
93 
97 
101 typedef struct {
106 
112 
120 void _Scheduler_priority_Initialize( const Scheduler_Control *scheduler );
121 
130  const Scheduler_Control *scheduler,
131  Thread_Control *the_thread,
132  Scheduler_Node *node
133 );
134 
145  const Scheduler_Control *scheduler,
146  Thread_Control *the_thread
147 );
148 
157  const Scheduler_Control *scheduler,
158  Thread_Control *the_thread,
159  Scheduler_Node *node
160 );
161 
170  const Scheduler_Control *scheduler,
171  Thread_Control *the_thread,
172  Scheduler_Node *base_node
173 );
174 
184  const Scheduler_Control *scheduler,
185  Scheduler_Node *node,
186  Thread_Control *the_thread,
187  Priority_Control priority
188 );
189 
198  const Scheduler_Control *scheduler,
199  Thread_Control *the_thread,
200  Scheduler_Node *node
201 );
202 
205 #ifdef __cplusplus
206 }
207 #endif
208 
209 #endif
210 /* end of include file */
void _Scheduler_priority_Node_initialize(const Scheduler_Control *scheduler, Scheduler_Node *node, Thread_Control *the_thread, Priority_Control priority)
Initializes the node with the given priority.
Definition: schedulerpriority.c:35
uint64_t Priority_Control
The thread priority control.
Definition: priority.h:70
Chain_Control * ready_chain
Definition: schedulerpriority.h:92
Scheduler context.
Definition: scheduler.h:252
Definition: schedulerpriority.h:65
Definition: prioritybitmap.h:42
void _Scheduler_priority_Initialize(const Scheduler_Control *scheduler)
Initializes the priority scheduler.
Definition: schedulerpriority.c:23
Priority_bit_map_Information Priority_map
Definition: schedulerpriority.h:95
void _Scheduler_priority_Update_priority(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *base_node)
Updates the priority of the node.
Definition: schedulerprioritychangepriority.c:24
Scheduler_Node Base
Basic scheduler node.
Definition: schedulerpriority.h:105
Definition: chain.h:86
void _Scheduler_priority_Unblock(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Unblocks the thread.
Definition: schedulerpriorityunblock.c:25
unsigned int current_priority
The thread priority currently used by the scheduler.
Definition: schedulerpriority.h:89
Definition: thread.h:732
Priority_bit_map_Control Bit_map
Bit map to indicate non-empty ready queues.
Definition: schedulerpriority.h:74
Data for ready queue operations.
Definition: schedulerpriority.h:85
Scheduler_priority_Ready_queue Ready_queue
The associated ready queue of this node.
Definition: schedulerpriority.h:110
void _Scheduler_priority_Yield(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Performs the yield of a thread.
Definition: schedulerpriorityyield.c:24
void _Scheduler_priority_Block(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Blocks the thread.
Definition: schedulerpriorityblock.c:26
Scheduler node specialization for Deterministic Priority schedulers.
Definition: schedulerpriority.h:101
void _Scheduler_priority_Schedule(const Scheduler_Control *scheduler, Thread_Control *the_thread)
Sets the heir thread to be the next ready thread.
Definition: schedulerpriorityschedule.c:24
Scheduler_Context Base
Basic scheduler context.
Definition: schedulerpriority.h:69
Manipulation Routines for the Bitmap Priority Queue Implementation.
Definition: prioritybitmap.h:64
Chain Handler API.
Scheduler control.
Definition: scheduler.h:269
Scheduler node for per-thread data.
Definition: schedulernode.h:79
Constants and Structures Associated with the Scheduler.