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" 137 _CONFIGURE_MAXIMUM_PROCESSORS
138 * ( CONFIGURE_IDLE_TASK_STACK_SIZE + CPU_IDLE_TASK_IS_FP *
CONTEXT_FP_SIZE )
142 #if defined(CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION) && \ 143 !defined(CONFIGURE_IDLE_TASK_BODY) 144 #error "If you define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION, then you must define CONFIGURE_IDLE_TASK_BODY as well" 147 #if !defined(CONFIGURE_IDLE_TASK_BODY) && defined(BSP_IDLE_TASK_BODY) 148 #define CONFIGURE_IDLE_TASK_BODY BSP_IDLE_TASK_BODY 151 #ifdef CONFIGURE_IDLE_TASK_BODY char _ISR_Stack_area_begin[]
The interrupt stack area begin.
const Thread_Idle_body _Thread_Idle_body
The idle thread body.
Definition: threadidledefault.c:35
Information About Each Thread's Context.
#define CONTEXT_FP_SIZE
Size of floating point context area.
Definition: context.h:52
void *(* Thread_Idle_body)(uintptr_t)
The idle thread body type.
Definition: threadidledata.h:62
#define _SMP_Processor_configured_maximum
The configured processor maximum.
Definition: smp.h:49
#define RTEMS_ALIGNED(_alignment)
Instructs the compiler to enforce the specified alignment.
Definition: basedefs.h:216
#define CPU_INTERRUPT_STACK_ALIGNMENT
Definition: cpu.h:605
SuperCore SMP Support API.
const size_t _Thread_Idle_stack_size
The idle thread stack size in bytes.
const char _ISR_Stack_area_end[]
The interrupt stack area end.
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_DEFINE_GLOBAL_SYMBOL(_name, _value)
Defines a global symbol with the specified name and value.
Definition: basedefs.h:360
char _Thread_Idle_stacks[]
The idle thread stacks.