44#ifndef _RTEMS_CONFDEFS_PERCPU_H
45#define _RTEMS_CONFDEFS_PERCPU_H
47#ifndef __CONFIGURATION_TEMPLATE_h
48#error "Do not include this file directly, use <rtems/confdefs.h> instead"
63#if defined(CONFIGURE_MAXIMUM_PROCESSORS) && defined(RTEMS_SMP)
64 #define _CONFIGURE_MAXIMUM_PROCESSORS CONFIGURE_MAXIMUM_PROCESSORS
66 #define _CONFIGURE_MAXIMUM_PROCESSORS 1
71 _CONFIGURE_MAXIMUM_PROCESSORS;
74 _Per_CPU_Information[ _CONFIGURE_MAXIMUM_PROCESSORS ];
79#ifndef CONFIGURE_INTERRUPT_STACK_SIZE
80 #ifdef BSP_INTERRUPT_STACK_SIZE
81 #define CONFIGURE_INTERRUPT_STACK_SIZE BSP_INTERRUPT_STACK_SIZE
83 #define CONFIGURE_INTERRUPT_STACK_SIZE CPU_STACK_MINIMUM_SIZE
87#if CONFIGURE_INTERRUPT_STACK_SIZE % CPU_INTERRUPT_STACK_ALIGNMENT != 0
88 #error "CONFIGURE_INTERRUPT_STACK_SIZE fails to meet the CPU port interrupt stack alignment"
93 CONFIGURE_INTERRUPT_STACK_SIZE
96#define _CONFIGURE_INTERRUPT_STACK_AREA_SIZE \
97 ( CONFIGURE_INTERRUPT_STACK_SIZE * _CONFIGURE_MAXIMUM_PROCESSORS )
106 + _CONFIGURE_INTERRUPT_STACK_AREA_SIZE
111#ifndef CONFIGURE_MINIMUM_TASK_STACK_SIZE
112 #define CONFIGURE_MINIMUM_TASK_STACK_SIZE CPU_STACK_MINIMUM_SIZE
115#ifndef CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
116 #define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE \
117 ( 2 * CONFIGURE_MINIMUM_TASK_STACK_SIZE )
122#ifndef CONFIGURE_IDLE_TASK_STACK_SIZE
123 #ifdef BSP_IDLE_TASK_STACK_SIZE
124 #define CONFIGURE_IDLE_TASK_STACK_SIZE BSP_IDLE_TASK_STACK_SIZE
126 #define CONFIGURE_IDLE_TASK_STACK_SIZE CONFIGURE_MINIMUM_TASK_STACK_SIZE
130#if CONFIGURE_IDLE_TASK_STACK_SIZE < CONFIGURE_MINIMUM_TASK_STACK_SIZE
131 #error "CONFIGURE_IDLE_TASK_STACK_SIZE less than CONFIGURE_MINIMUM_TASK_STACK_SIZE"
142#ifndef CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE
144 _CONFIGURE_MAXIMUM_PROCESSORS
145 * ( CONFIGURE_IDLE_TASK_STACK_SIZE + CPU_IDLE_TASK_IS_FP *
CONTEXT_FP_SIZE )
150#if defined(CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION) && \
151 !defined(CONFIGURE_IDLE_TASK_BODY)
152 #error "If you define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION, then you must define CONFIGURE_IDLE_TASK_BODY as well"
155#if !defined(CONFIGURE_IDLE_TASK_BODY) && defined(BSP_IDLE_TASK_BODY)
156 #define CONFIGURE_IDLE_TASK_BODY BSP_IDLE_TASK_BODY
159#ifdef CONFIGURE_IDLE_TASK_BODY
Information About Each Thread's Context.
Evaluate BSP Related Configuration Options.
#define RTEMS_SECTION(_section)
Instructs the compiler to place a specific variable or function in the specified section.
Definition: basedefs.h:154
#define RTEMS_ALIGNED(_alignment)
Instructs the compiler to enforce the specified alignment.
Definition: basedefs.h:216
#define RTEMS_DEFINE_GLOBAL_SYMBOL(_name, _value)
Defines a global symbol with the specified name and value.
Definition: basedefs.h:360
#define CONTEXT_FP_SIZE
Size of floating point context area.
Definition: context.h:52
const char _ISR_Stack_area_end[]
The interrupt stack area end.
char _ISR_Stack_area_begin[]
The interrupt stack area begin.
#define _SMP_Processor_configured_maximum
The configured processor maximum.
Definition: smp.h:49
void *(* Thread_Idle_body)(uintptr_t)
The idle thread body type.
Definition: threadidledata.h:62
const Thread_Idle_body _Thread_Idle_body
The idle thread body.
Definition: threadidledefault.c:35
char _Thread_Idle_stacks[]
The idle thread stacks.
const size_t _Thread_Idle_stack_size
The idle thread stack size in bytes.
#define CPU_INTERRUPT_STACK_ALIGNMENT
Definition: cpu.h:605
SuperCore SMP Support API.