4.115
Last change
on this file since 25f5730f was
beab7329,
checked in by Sebastian Huber <sebastian.huber@…>, on 05/13/14 at 14:03:05
|
score: Introduce scheduler nodes
Rename scheduler per-thread information into scheduler nodes using
Scheduler_Node as the base type. Use inheritance for specialized
schedulers.
Move the scheduler specific states from the thread control block into
the scheduler node structure.
Validate the SMP scheduler node state transitions in case RTEMS_DEBUG is
defined.
|
-
Property mode set to
100644
|
File size:
1.1 KB
|
Line | |
---|
1 | /** |
---|
2 | * @file |
---|
3 | * |
---|
4 | * @brief Scheduler EDF Yield |
---|
5 | * |
---|
6 | * @ingroup ScoreScheduler |
---|
7 | */ |
---|
8 | |
---|
9 | /* |
---|
10 | * Copyright (C) 2011 Petr Benes. |
---|
11 | * Copyright (C) 2011 On-Line Applications Research Corporation (OAR). |
---|
12 | * |
---|
13 | * The license and distribution terms for this file may be |
---|
14 | * found in the file LICENSE in this distribution or at |
---|
15 | * http://www.rtems.org/license/LICENSE. |
---|
16 | */ |
---|
17 | |
---|
18 | #if HAVE_CONFIG_H |
---|
19 | #include "config.h" |
---|
20 | #endif |
---|
21 | |
---|
22 | #include <rtems/score/scheduleredfimpl.h> |
---|
23 | |
---|
24 | void _Scheduler_EDF_Yield( |
---|
25 | const Scheduler_Control *scheduler, |
---|
26 | Thread_Control *the_thread |
---|
27 | ) |
---|
28 | { |
---|
29 | Scheduler_EDF_Context *context = |
---|
30 | _Scheduler_EDF_Get_context( scheduler ); |
---|
31 | Scheduler_EDF_Node *node = _Scheduler_EDF_Node_get( the_thread ); |
---|
32 | ISR_Level level; |
---|
33 | |
---|
34 | _ISR_Disable( level ); |
---|
35 | |
---|
36 | /* |
---|
37 | * The RBTree has more than one node, enqueue behind the tasks |
---|
38 | * with the same priority in case there are such ones. |
---|
39 | */ |
---|
40 | _RBTree_Extract( &context->Ready, &node->Node ); |
---|
41 | _RBTree_Insert( &context->Ready, &node->Node ); |
---|
42 | |
---|
43 | _ISR_Flash( level ); |
---|
44 | |
---|
45 | _Scheduler_EDF_Schedule_body( scheduler, the_thread, false ); |
---|
46 | |
---|
47 | _ISR_Enable( level ); |
---|
48 | } |
---|
Note: See
TracBrowser
for help on using the repository browser.