36 #ifndef _RTEMS_CONFDEFS_WKSPACE_H 37 #define _RTEMS_CONFDEFS_WKSPACE_H 39 #ifndef __CONFIGURATION_TEMPLATE_h 40 #error "Do not include this file directly, use <rtems/confdefs.h> instead" 55 #include <rtems/sysinit.h> 57 #ifdef CONFIGURE_TASK_STACK_FROM_ALLOCATOR 58 #define _Configure_From_stackspace( _stack_size ) \ 59 CONFIGURE_TASK_STACK_FROM_ALLOCATOR( _stack_size + CONTEXT_FP_SIZE ) 61 #define _Configure_From_stackspace( _stack_size ) \ 62 _Configure_From_workspace( _stack_size + CONTEXT_FP_SIZE ) 65 #ifndef CONFIGURE_EXTRA_TASK_STACKS 66 #define CONFIGURE_EXTRA_TASK_STACKS 0 69 #ifndef CONFIGURE_EXECUTIVE_RAM_SIZE 71 #define CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( _messages, _size ) \ 72 _Configure_From_workspace( \ 73 ( _messages ) * ( _Configure_Align_up( _size, sizeof( uintptr_t ) ) \ 74 + sizeof( CORE_message_queue_Buffer_control ) ) ) 76 #ifndef CONFIGURE_MESSAGE_BUFFER_MEMORY 77 #define CONFIGURE_MESSAGE_BUFFER_MEMORY 0 80 #ifndef CONFIGURE_MEMORY_OVERHEAD 81 #define CONFIGURE_MEMORY_OVERHEAD 0 89 #define _CONFIGURE_HEAP_HANDLER_OVERHEAD \ 90 _Configure_Align_up( HEAP_BLOCK_HEADER_SIZE, CPU_HEAP_ALIGNMENT ) 92 #define CONFIGURE_EXECUTIVE_RAM_SIZE \ 93 ( _CONFIGURE_MEMORY_FOR_POSIX_OBJECTS \ 94 + CONFIGURE_MESSAGE_BUFFER_MEMORY \ 95 + 1024 * CONFIGURE_MEMORY_OVERHEAD \ 96 + _CONFIGURE_HEAP_HANDLER_OVERHEAD ) 98 #define _CONFIGURE_STACK_SPACE_SIZE \ 99 ( _CONFIGURE_INIT_TASK_STACK_EXTRA \ 100 + _CONFIGURE_POSIX_INIT_THREAD_STACK_EXTRA \ 101 + _CONFIGURE_LIBBLOCK_TASKS_STACK_EXTRA \ 102 + CONFIGURE_EXTRA_TASK_STACKS \ 103 + rtems_resource_maximum_per_allocation( _CONFIGURE_TASKS ) \ 104 * _Configure_From_stackspace( CONFIGURE_MINIMUM_TASK_STACK_SIZE ) \ 105 + rtems_resource_maximum_per_allocation( CONFIGURE_MAXIMUM_POSIX_THREADS ) \ 106 * _Configure_From_stackspace( CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE ) \ 107 + _CONFIGURE_HEAP_HANDLER_OVERHEAD ) 111 #if CONFIGURE_EXTRA_TASK_STACKS != 0 112 #error "CONFIGURE_EXECUTIVE_RAM_SIZE defined with request for CONFIGURE_EXTRA_TASK_STACKS" 115 #define _CONFIGURE_STACK_SPACE_SIZE 0 125 #ifdef CONFIGURE_UNIFIED_WORK_AREAS 133 #if defined(CONFIGURE_TASK_STACK_ALLOCATOR) \ 134 && defined(CONFIGURE_TASK_STACK_DEALLOCATOR) 135 #ifdef CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE 141 #ifdef CONFIGURE_TASK_STACK_ALLOCATOR_INIT 153 #elif defined(CONFIGURE_TASK_STACK_ALLOCATOR) \ 154 || defined(CONFIGURE_TASK_STACK_DEALLOCATOR) 155 #error "CONFIGURE_TASK_STACK_ALLOCATOR and CONFIGURE_TASK_STACK_DEALLOCATOR must be both defined or both undefined" 158 #ifdef CONFIGURE_DIRTY_MEMORY 161 RTEMS_SYSINIT_DIRTY_MEMORY,
162 RTEMS_SYSINIT_ORDER_MIDDLE
166 #ifdef CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY 171 RTEMS_SYSINIT_ZERO_MEMORY,
172 RTEMS_SYSINIT_ORDER_MIDDLE
const bool _Stack_Allocator_avoids_workspace
Indicates if the stack allocator avoids the workspace.
Definition: stackallocator.c:35
Configuration Options Workspace Support Macros.
const bool _Memory_Zero_before_use
Indicates if the memory is zeroed during system initialization.
Definition: memoryzerobeforeuse.c:34
const Stack_Allocator_initialize _Stack_Allocator_initialize
The stack allocator initialization handler.
Definition: stackallocator.c:37
Information About the Thread Stack Handler.
Information About Each Thread's Context.
#define CONFIGURE_TASK_STACK_ALLOCATOR
Task stack allocator configuration option.
Definition: stackalloc.h:81
const uintptr_t _Stack_Space_size
The configured stack space size.
Evaluate Thread Configuration Options.
void _Memory_Zero_free_areas(void)
Zeros all free memory areas of the system.
Definition: memoryzerofreeareas.c:34
#define CONFIGURE_TASK_STACK_ALLOCATOR_INIT
Task stack allocator initialization configuration option.
Definition: stackalloc.h:76
const bool _Workspace_Is_unified
Indicates if the workspace and C program heap are unified.
Definition: wkspaceisunifieddefault.c:34
uint32_t rtems_minimum_stack_size
The minimum stack size.
Evaluate POSIX Initialization Thread Configuration Options.
#define CONFIGURE_TASK_STACK_DEALLOCATOR
Task stack deallocator configuration option.
Definition: stackalloc.h:86
const Stack_Allocator_free _Stack_Allocator_free
The stack allocator free handler.
Definition: stackallocator.c:41
void(* Stack_Allocator_initialize)(size_t stack_space_size)
The stack allocator initialization handler.
Definition: stack.h:65
Evaluate POSIX API Objects Configuration Options.
void(* Stack_Allocator_free)(void *addr)
Stack allocator free handler.
Definition: stack.h:82
Constants and Structures Associated with the Message Queue Handler.
const uintptr_t _Workspace_Size
The workspace size in bytes.
const Stack_Allocator_allocate _Stack_Allocator_allocate
The stack allocator allocate handler.
Definition: stackallocator.c:39
Evaluate Block Device Cache Configuration Options.
Evaluate User Initialization Task Configuration Options.
void *(* Stack_Allocator_allocate)(size_t stack_size)
Stack allocator allocate handler.
Definition: stack.h:75
void _Memory_Dirty_free_areas(void)
Dirty all free memory areas of the system.
Definition: memorydirtyfreeareas.c:34
#define NULL
Requests a GPIO pin group configuration.
Definition: bestcomm_api.h:77