37 memset( &config, 0,
sizeof( config ) );
40 #if defined(RTEMS_SMP) 78 #if defined(RTEMS_SMP) 99 cpu_max = _SMP_Get_processor_maximum();
101 for ( cpu_index = 0 ; cpu_index < cpu_max ; ++cpu_index ) {
104 if ( _Per_CPU_Is_processor_online( cpu ) ) {
105 _Thread_Create_idle_for_CPU( cpu );
void _Thread_Load_environment(Thread_Control *the_thread)
Initializes enviroment for a thread.
static __inline__ const Scheduler_Control * _Scheduler_Get_by_CPU(const Per_CPU_Control *cpu)
Gets the scheduler for the cpu.
const Thread_Idle_body _Thread_Idle_body
The idle thread body.
Thread_CPU_budget_algorithms budget_algorithm
The thread's budget algorithm.
#define CPU_IDLE_TASK_IS_FP
#define CONTEXT_FP_SIZE
Size of floating point context area.
struct _Thread_Control * executing
This is the thread executing on this processor.
static __inline__ Priority_Control _Scheduler_Map_priority(const Scheduler_Control *scheduler, Priority_Control priority)
Maps a thread priority from the user domain to the scheduler domain.
Thread_Start_information Start
static __inline__ void _System_state_Set(System_state_Codes state)
Sets the current system state to the given state.
Inlined Routines Associated with the Manipulation of the Scheduler.
static __inline__ void _Scheduler_Start_idle(const Scheduler_Control *scheduler, Thread_Control *the_thread, Per_CPU_Control *cpu)
Starts the idle thread for a particular processor.
struct _Thread_Control * ancestor
The ancestor of the executing thread.
User Extension Handler API.
bool _Thread_Initialize(Thread_Information *information, Thread_Control *the_thread, const Thread_Configuration *config)
Initializes thread.
Inlined Routines from the Stack Handler.
const size_t _Thread_Idle_stack_size
The idle thread stack size in bytes.
Objects_Name name
Name of the object for the thread.
Information for the Assert Handler.
Priority_Control priority
The new thread's priority.
const struct _Scheduler_Control * scheduler
The scheduler control instance for the thread.
Priority_Control maximum_priority
The maximum priority value of this scheduler.
The configuration of a new thread to initialize.
void _Thread_Create_idle(void)
Creates idle thread.
size_t stack_size
The size of the stack area in bytes.
States_Control current_state
#define _Objects_Build_name(_C1, _C2, _C3, _C4)
static void _User_extensions_Thread_start(Thread_Control *started)
Starts a thread.
struct _Thread_Control * heir
This is the heir thread for this processor.
void _Thread_Entry_adaptor_idle(Thread_Control *executing)
Calls the start kinds idle entry of the thread.
bool is_fp
Indicates whether the thread needs a floating-point area.
The system is between end of the first phase of initialization but before multitasking is started...
System State Handler API.
void * stack_area
The starting address of the stack area.
Constants for the idle threads.
Inlined Routines from the Thread Handler.
bool is_preemptible
Indicates whether the new thread is preemptible.
union Thread_Entry_information::@25 Kinds
Thread entry data used by the adaptor to call the thread entry function with the right parameters...
static __inline__ Thread_Control * _Thread_Internal_allocate(void)
Allocates an internal thread and returns it.
void(* adaptor)(Thread_Control *executing)
Thread entry adaptor.
Thread_Information _Thread_Information
The internal thread objects information.
char _Thread_Idle_stacks[]
The idle thread stacks.
#define _Assert(_e)
Assertion similar to assert() controlled via RTEMS_DEBUG instead of NDEBUG.