RTEMS: cpukit/include/rtems/score/schedulersmp.h Source File

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
schedulersmp.h
Go to the documentation of this file.
1
9/*
10 * Copyright (c) 2013-2014 embedded brains GmbH. All rights reserved.
11 *
12 * embedded brains GmbH
13 * Dornierstr. 4
14 * 82178 Puchheim
15 * Germany
16 * <rtems@embedded-brains.de>
17 *
18 * The license and distribution terms for this file may be
19 * found in the file LICENSE in this distribution or at
20 * http://www.rtems.org/license/LICENSE.
21 */
22
23#ifndef _RTEMS_SCORE_SCHEDULERSMP_H
24#define _RTEMS_SCORE_SCHEDULERSMP_H
25
26#include <rtems/score/chain.h>
27#include <rtems/score/scheduler.h>
28
29#ifdef __cplusplus
30extern "C" {
31#endif /* __cplusplus */
32
46 typedef struct {
50 Scheduler_Context Base;
51
55 Chain_Control Scheduled;
56
64 Chain_Control Idle_threads;
65} Scheduler_SMP_Context;
66
70 typedef enum {
76 SCHEDULER_SMP_NODE_BLOCKED,
77
86 SCHEDULER_SMP_NODE_SCHEDULED,
87
94 SCHEDULER_SMP_NODE_READY
95} Scheduler_SMP_Node_state;
96
100 typedef struct {
104 Scheduler_Node Base;
105
109 Scheduler_SMP_Node_state state;
110
114 Priority_Control priority;
115} Scheduler_SMP_Node;
116
124void _Scheduler_SMP_Start_idle(
125 const Scheduler_Control *scheduler,
126 Thread_Control *idle,
127 struct Per_CPU_Control *cpu
128);
129
132#ifdef __cplusplus
133}
134#endif /* __cplusplus */
135
136#endif /* _RTEMS_SCORE_SCHEDULERSMP_H */
Priority_Control
uint64_t Priority_Control
The thread priority control.
Definition: priority.h:70
Scheduler_SMP_Node_state
Scheduler_SMP_Node_state
SMP scheduler node states.
Definition: schedulersmp.h:70
_Scheduler_SMP_Start_idle
void _Scheduler_SMP_Start_idle(const Scheduler_Control *scheduler, Thread_Control *idle, struct Per_CPU_Control *cpu)
Starts an idle thread on the specified cpu.
Definition: schedulersmpstartidle.c:15
SCHEDULER_SMP_NODE_READY
@ SCHEDULER_SMP_NODE_READY
This scheduler node is ready.
Definition: schedulersmp.h:94
SCHEDULER_SMP_NODE_BLOCKED
@ SCHEDULER_SMP_NODE_BLOCKED
This scheduler node is blocked.
Definition: schedulersmp.h:76
SCHEDULER_SMP_NODE_SCHEDULED
@ SCHEDULER_SMP_NODE_SCHEDULED
The scheduler node is scheduled.
Definition: schedulersmp.h:86
chain.h
Chain Handler API.
scheduler.h
Constants and Structures Associated with the Scheduler.
Per_CPU_Control
Per CPU Core Structure.
Definition: percpu.h:347
Scheduler_Context
Scheduler context.
Definition: scheduler.h:252
Scheduler_Node
Scheduler node for per-thread data.
Definition: schedulernode.h:79
Scheduler_SMP_Context
Scheduler context specialization for SMP schedulers.
Definition: schedulersmp.h:46
Scheduler_SMP_Context::Scheduled
Chain_Control Scheduled
The chain of scheduled nodes.
Definition: schedulersmp.h:55
Scheduler_SMP_Context::Base
Scheduler_Context Base
Basic scheduler context.
Definition: schedulersmp.h:50
Scheduler_SMP_Context::Idle_threads
Chain_Control Idle_threads
Chain of the available idle threads.
Definition: schedulersmp.h:64
Scheduler_SMP_Node
Scheduler node specialization for SMP schedulers.
Definition: schedulersmp.h:100
Scheduler_SMP_Node::state
Scheduler_SMP_Node_state state
The state of this node.
Definition: schedulersmp.h:109
Scheduler_SMP_Node::priority
Priority_Control priority
The current priority of thread owning this node.
Definition: schedulersmp.h:114
Scheduler_SMP_Node::Base
Scheduler_Node Base
Basic scheduler node.
Definition: schedulersmp.h:104
_Scheduler_Control
Scheduler control.
Definition: scheduler.h:269
_Thread_Control
Definition: thread.h:732
Chain_Control
Definition: chain.h:86