RTEMS 5.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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>
27
28#ifdef __cplusplus
29extern "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
65typedef struct {
70
75
79 Chain_Control Ready[ 0 ];
81
85typedef struct {
89 unsigned int current_priority;
90
93
97
101typedef struct {
106
112
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 */
uint64_t Priority_Control
The thread priority control.
Definition: priority.h:70
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
void _Scheduler_priority_Block(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Blocks the thread.
Definition: schedulerpriorityblock.c:26
void _Scheduler_priority_Unblock(const Scheduler_Control *scheduler, Thread_Control *the_thread, Scheduler_Node *node)
Unblocks the thread.
Definition: schedulerpriorityunblock.c:25
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_Schedule(const Scheduler_Control *scheduler, Thread_Control *the_thread)
Sets the heir thread to be the next ready thread.
Definition: schedulerpriorityschedule.c:24
void _Scheduler_priority_Initialize(const Scheduler_Control *scheduler)
Initializes the priority scheduler.
Definition: schedulerpriority.c:23
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
Manipulation Routines for the Bitmap Priority Queue Implementation.
Chain Handler API.
Constants and Structures Associated with the Scheduler.
Definition: prioritybitmap.h:42
Definition: prioritybitmap.h:64
Scheduler context.
Definition: scheduler.h:252
Scheduler node for per-thread data.
Definition: schedulernode.h:79
Definition: schedulerpriority.h:65
Priority_bit_map_Control Bit_map
Bit map to indicate non-empty ready queues.
Definition: schedulerpriority.h:74
Scheduler_Context Base
Basic scheduler context.
Definition: schedulerpriority.h:69
Scheduler node specialization for Deterministic Priority schedulers.
Definition: schedulerpriority.h:101
Scheduler_priority_Ready_queue Ready_queue
The associated ready queue of this node.
Definition: schedulerpriority.h:110
Scheduler_Node Base
Basic scheduler node.
Definition: schedulerpriority.h:105
Data for ready queue operations.
Definition: schedulerpriority.h:85
unsigned int current_priority
The thread priority currently used by the scheduler.
Definition: schedulerpriority.h:89
Chain_Control * ready_chain
Definition: schedulerpriority.h:92
Priority_bit_map_Information Priority_map
Definition: schedulerpriority.h:95
Scheduler control.
Definition: scheduler.h:269
Definition: thread.h:732
Definition: chain.h:86