RTEMS
5.0.0
|
Configuration Table Template that will be Instantiated by an Application. More...
#include <rtems.h>
#include <rtems/extensiondata.h>
#include <rtems/ioimpl.h>
#include <rtems/sysinit.h>
#include <rtems/score/apimutex.h>
#include <rtems/score/percpu.h>
#include <rtems/score/userextimpl.h>
#include <rtems/score/wkspace.h>
#include <rtems/rtems/barrierdata.h>
#include <rtems/rtems/dpmemdata.h>
#include <rtems/rtems/messagedata.h>
#include <rtems/rtems/partdata.h>
#include <rtems/rtems/ratemondata.h>
#include <rtems/rtems/regiondata.h>
#include <rtems/rtems/semdata.h>
#include <rtems/rtems/tasksdata.h>
#include <rtems/rtems/timerdata.h>
#include <rtems/posix/key.h>
#include <rtems/posix/mqueue.h>
#include <rtems/posix/psignal.h>
#include <rtems/posix/pthread.h>
#include <rtems/posix/semaphore.h>
#include <rtems/posix/shm.h>
#include <rtems/posix/timer.h>
#include <limits.h>
#include <bsp.h>
#include <rtems/libio_.h>
#include <rtems/imfs.h>
#include <rtems/scheduler.h>
#include <rtems/malloc.h>
Go to the source code of this file.
Macros | |
#define | _CONFIGURE_NEWLIB_EXTENSION 0 |
#define | CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 3 |
#define | _CONFIGURE_LIBIO_POSIX_KEYS 1 |
#define | _CONFIGURE_MAXIMUM_PROCESSORS 1 |
#define | CONFIGURE_MAXIMUM_FIFOS 0 |
#define | CONFIGURE_MAXIMUM_PIPES 0 |
#define | _CONFIGURE_BARRIERS_FOR_FIFOS 0 |
#define | CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK |
#define | _CONFIGURE_STACK_CHECKER_EXTENSION 0 |
#define | CONFIGURE_MAXIMUM_PRIORITY PRIORITY_DEFAULT_MAXIMUM |
Maximum priority configuration. More... | |
#define | CONFIGURE_SCHEDULER_PRIORITY |
#define | CONFIGURE_SCHEDULER_NAME rtems_build_name('U', 'P', 'D', ' ') |
#define | CONFIGURE_SCHEDULER |
#define | CONFIGURE_SCHEDULER_TABLE_ENTRIES RTEMS_SCHEDULER_TABLE_PRIORITY(dflt, CONFIGURE_SCHEDULER_NAME) |
#define | CONFIGURE_IDLE_TASK_BODY _CPU_Thread_Idle_body |
Idle task body configuration. More... | |
#define | CONFIGURE_MINIMUM_TASK_STACK_SIZE CPU_STACK_MINIMUM_SIZE |
#define | CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE (2 * CONFIGURE_MINIMUM_TASK_STACK_SIZE) |
#define | CONFIGURE_IDLE_TASK_STACK_SIZE CONFIGURE_MINIMUM_TASK_STACK_SIZE |
Idle task stack size configuration. More... | |
#define | CONFIGURE_INTERRUPT_STACK_SIZE CPU_STACK_MINIMUM_SIZE |
#define | CONFIGURE_TASK_STACK_ALLOCATOR_INIT NULL |
#define | CONFIGURE_TASK_STACK_ALLOCATOR _Workspace_Allocate |
#define | CONFIGURE_TASK_STACK_DEALLOCATOR _Workspace_Free |
#define | CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY FALSE |
#define | _Configure_Zero_or_One(_number) ((_number) != 0 ? 1 : 0) |
#define | _Configure_Align_up(_val, _align) (((_val) + (_align) - 1) - ((_val) + (_align) - 1) % (_align)) |
#define | _CONFIGURE_HEAP_MIN_BLOCK_SIZE _Configure_Align_up(sizeof(Heap_Block), CPU_HEAP_ALIGNMENT) |
#define | _Configure_From_workspace(_size) |
#define | _Configure_From_stackspace(_stack_size) _Configure_From_workspace(_stack_size) |
#define | _Configure_Max_Objects(_max) (_Configure_Zero_or_One(_max) * rtems_resource_maximum_per_allocation(_max)) |
#define | CONFIGURE_INIT_TASK_TABLE NULL |
#define | CONFIGURE_INIT_TASK_TABLE_SIZE 0 |
#define | CONFIGURE_INIT_TASK_STACK_SIZE 0 |
#define | NULL_DRIVER_TABLE_ENTRY { NULL, NULL, NULL, NULL, NULL, NULL } |
#define | CONFIGURE_MAXIMUM_DRIVERS |
#define | _CONFIGURE_LIBBLOCK_TASKS 0 |
#define | _CONFIGURE_LIBBLOCK_TASK_EXTRA_STACKS 0 |
#define | CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK 0 |
#define | _CONFIGURE_TIMER_FOR_SHARED_MEMORY_DRIVER 0 |
#define | _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 0 |
#define | CONFIGURE_MAXIMUM_TASKS 0 |
#define | _CONFIGURE_TASKS (CONFIGURE_MAXIMUM_TASKS + _CONFIGURE_LIBBLOCK_TASKS) |
#define | CONFIGURE_MAXIMUM_TIMERS 0 |
#define | _CONFIGURE_TIMERS (CONFIGURE_MAXIMUM_TIMERS + _CONFIGURE_TIMER_FOR_SHARED_MEMORY_DRIVER) |
#define | CONFIGURE_MAXIMUM_SEMAPHORES 0 |
#define | _CONFIGURE_MEMORY_FOR_MRSP_SEMAPHORES 0 |
#define | CONFIGURE_MAXIMUM_MESSAGE_QUEUES 0 |
#define | CONFIGURE_MAXIMUM_PARTITIONS 0 |
#define | CONFIGURE_MAXIMUM_REGIONS 0 |
#define | CONFIGURE_MAXIMUM_PORTS 0 |
#define | CONFIGURE_MAXIMUM_PERIODS 0 |
#define | CONFIGURE_MAXIMUM_BARRIERS 0 |
#define | _CONFIGURE_BARRIERS (CONFIGURE_MAXIMUM_BARRIERS + _CONFIGURE_BARRIERS_FOR_FIFOS) |
#define | CONFIGURE_MAXIMUM_USER_EXTENSIONS 0 |
#define | CONFIGURE_MICROSECONDS_PER_TICK RTEMS_MILLISECONDS_TO_MICROSECONDS(10) |
#define | _CONFIGURE_TICKS_PER_SECOND (1000000 / CONFIGURE_MICROSECONDS_PER_TICK) |
#define | CONFIGURE_TICKS_PER_TIMESLICE 50 |
#define | CONFIGURE_MAXIMUM_POSIX_KEYS 0 |
#define | CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS |
#define | _CONFIGURE_POSIX_KEYS (CONFIGURE_MAXIMUM_POSIX_KEYS + _CONFIGURE_LIBIO_POSIX_KEYS) |
#define | CONFIGURE_MAXIMUM_POSIX_THREADS 0 |
#define | _Configure_POSIX_Named_Object_RAM(_number, _size) |
#define | CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES 0 |
#define | _CONFIGURE_MEMORY_FOR_POSIX_MESSAGE_QUEUES(_message_queues) |
#define | CONFIGURE_MAXIMUM_POSIX_SEMAPHORES 0 |
#define | _CONFIGURE_MEMORY_FOR_POSIX_SEMAPHORES(_semaphores) |
#define | CONFIGURE_MAXIMUM_POSIX_SHMS 0 |
#define | _CONFIGURE_MEMORY_FOR_POSIX_SHMS(_shms) _Configure_POSIX_Named_Object_RAM(_shms, sizeof(POSIX_Shm_Control) ) |
#define | CONFIGURE_MAXIMUM_POSIX_TIMERS 0 |
#define | CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 0 |
#define | _CONFIGURE_MEMORY_FOR_POSIX_QUEUED_SIGNALS 0 |
#define | CONFIGURE_POSIX_INIT_THREAD_TABLE_NAME NULL |
#define | CONFIGURE_POSIX_INIT_THREAD_TABLE_SIZE 0 |
#define | CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE 0 |
#define | CONFIGURE_MAXIMUM_ADA_TASKS 0 |
#define | CONFIGURE_MAXIMUM_FAKE_ADA_TASKS 0 |
#define | CONFIGURE_MAXIMUM_GOROUTINES 0 |
#define | CONFIGURE_MAXIMUM_GO_CHANNELS 0 |
#define | CONFIGURE_EXTRA_TASK_STACKS 0 |
#define | _CONFIGURE_POSIX_THREADS |
#define | _CONFIGURE_HEAP_HANDLER_OVERHEAD _Configure_Align_up( HEAP_BLOCK_HEADER_SIZE, CPU_HEAP_ALIGNMENT ) |
#define | _CONFIGURE_IDLE_TASKS_COUNT _CONFIGURE_MAXIMUM_PROCESSORS |
#define | _CONFIGURE_MEMORY_FOR_TASKS(_tasks, _number_FP_tasks) |
#define | _CONFIGURE_MEMORY_FOR_MP 0 |
#define | CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(_messages, _size) |
#define | CONFIGURE_MESSAGE_BUFFER_MEMORY 0 |
#define | CONFIGURE_MEMORY_OVERHEAD 0 |
#define | _CONFIGURE_MEMORY_FOR_INTERNAL_TASKS |
#define | _CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD _CONFIGURE_MEMORY_FOR_INTERNAL_TASKS |
#define | _CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS |
#define | CONFIGURE_EXECUTIVE_RAM_SIZE |
#define | _CONFIGURE_INITIALIZATION_THREADS_STACKS_CLASSIC_PART 0 |
#define | _CONFIGURE_INITIALIZATION_THREADS_STACKS_POSIX_PART 0 |
#define | _CONFIGURE_INITIALIZATION_THREADS_EXTRA_STACKS |
#define | _CONFIGURE_IDLE_TASKS_STACK |
#define | _CONFIGURE_MPCI_RECEIVE_SERVER_STACK |
#define | _CONFIGURE_TASKS_STACK |
#define | _CONFIGURE_POSIX_THREADS_STACK |
#define | _CONFIGURE_ADA_TASKS_STACK |
#define | _CONFIGURE_GOROUTINES_STACK |
#define | _CONFIGURE_STACK_SPACE_SIZE |
#define | CONFIGURE_MAXIMUM_THREAD_NAME_SIZE 16 |
Variables | |
rtems_initialization_tasks_table | Initialization_tasks [] |
Configuration Table Template that will be Instantiated by an Application.
This include file contains the configuration table template that will be instantiated by an application based on the setting of a number of macros. The macros are documented in the Configuring a System chapter of the Classic API User's Guide
#define _CONFIGURE_ADA_TASKS_STACK |
#define _CONFIGURE_GOROUTINES_STACK |
#define _CONFIGURE_IDLE_TASKS_COUNT _CONFIGURE_MAXIMUM_PROCESSORS |
This calculates the amount of memory reserved for the IDLE tasks. In an SMP system, each CPU core has its own idle task.
#define _CONFIGURE_IDLE_TASKS_STACK |
#define _CONFIGURE_INITIALIZATION_THREADS_EXTRA_STACKS |
#define _CONFIGURE_MEMORY_FOR_INTERNAL_TASKS |
This defines the formula used to compute the amount of memory reserved for internal task control structures.
#define _CONFIGURE_MEMORY_FOR_STATIC_EXTENSIONS |
This macro reserves the memory required by the statically configured user extensions.
#define _CONFIGURE_MEMORY_FOR_SYSTEM_OVERHEAD _CONFIGURE_MEMORY_FOR_INTERNAL_TASKS |
This macro accounts for general RTEMS system overhead.
#define _CONFIGURE_MEMORY_FOR_TASKS | ( | _tasks, | |
_number_FP_tasks | |||
) |
#define _CONFIGURE_MPCI_RECEIVE_SERVER_STACK |
#define _CONFIGURE_NEWLIB_EXTENSION 0 |
This macro determines whether the RTEMS reentrancy support for the Newlib C Library is enabled.
#define _CONFIGURE_POSIX_THREADS |
This macro provides a summation of the various POSIX thread requirements.
#define _CONFIGURE_POSIX_THREADS_STACK |
#define _CONFIGURE_STACK_CHECKER_EXTENSION 0 |
This defines the IMFS file system table entry. DEVFS FTPFS TFTPFS NFS DOSFS RFS JFFS2 This configures the stack checker user extension.
#define _CONFIGURE_STACK_SPACE_SIZE |
#define _CONFIGURE_TASKS_STACK |
#define CONFIGURE_EXECUTIVE_RAM_SIZE |
This calculates the memory required for the executive workspace.
This is an internal parameter.
#define CONFIGURE_EXTRA_TASK_STACKS 0 |
This is so we can account for tasks with stacks greater than minimum size. This is in bytes.
#define CONFIGURE_IDLE_TASK_BODY _CPU_Thread_Idle_body |
Idle task body configuration.
There is a default IDLE thread body provided by RTEMS which has the possibility of being CPU specific. There may be a BSP specific override of the RTEMS default body and in turn, the application may override and provide its own.
#define CONFIGURE_IDLE_TASK_STACK_SIZE CONFIGURE_MINIMUM_TASK_STACK_SIZE |
Idle task stack size configuration.
By default, the IDLE task will have a stack of minimum size. The BSP or application may override this value.
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 3 |
This macro defines the number of POSIX file descriptors allocated and managed by libio. These are the "integer" file descriptors that are used by calls like open(2) and read(2).
#define CONFIGURE_MAXIMUM_FIFOS 0 |
This is specified to configure the maximum number of POSIX FIFOs.
#define CONFIGURE_MAXIMUM_PIPES 0 |
This is specified to configure the maximum number of POSIX named pipes.
#define CONFIGURE_MAXIMUM_PRIORITY PRIORITY_DEFAULT_MAXIMUM |
Maximum priority configuration.
This configures the maximum priority value that a task may have.
The following applies to the data space requirements of the Priority Scheduler.
By reducing the number of priorities in a system, the amount of RAM required by RTEMS can be significantly reduced. RTEMS allocates a Chain_Control structure per priority and this structure contains 3 pointers. So the default is (256 * 12) = 3K on 32-bit architectures.
This must be one less than a power of 2 between 4 and 256. Valid values along with the application priority levels and memory saved when pointers are 32-bits in size are:
It is specified in terms of Classic API priority values.
#define CONFIGURE_MEMORY_OVERHEAD 0 |
This macro is available just in case the confdefs.h file underallocates memory for a particular application. This lets the user add some extra memory in case something broken and underestimates.
It is also possible for cases where confdefs.h overallocates memory, you could substract memory from the allocated. The estimate is just that, an estimate, and assumes worst case alignment and padding on each allocated element. So in some cases it could be too conservative.
NOTE: Historically this was used for message buffers.
#define CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE | ( | _messages, | |
_size | |||
) |
The following macro is used to calculate the memory allocated by RTEMS for the message buffers associated with a particular message queue. There is a fixed amount of overhead per message.
#define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE (2 * CONFIGURE_MINIMUM_TASK_STACK_SIZE) |
This specifies the default POSIX thread stack size. By default, it is twice that recommended for the port.
#define CONFIGURE_MINIMUM_TASK_STACK_SIZE CPU_STACK_MINIMUM_SIZE |
By default, use the minimum stack size requested by this port.
#define CONFIGURE_SCHEDULER |
Configure the context needed by the scheduler instance
#define CONFIGURE_SCHEDULER_NAME rtems_build_name('U', 'P', 'D', ' ') |
Configure the name of the scheduler instance
#define CONFIGURE_SCHEDULER_PRIORITY |
If no scheduler is specified in a uniprocessor configuration, the priority scheduler is default.
#define CONFIGURE_SCHEDULER_TABLE_ENTRIES RTEMS_SCHEDULER_TABLE_PRIORITY(dflt, CONFIGURE_SCHEDULER_NAME) |
Configure the controls for this scheduler instance
#define CONFIGURE_TASK_STACK_ALLOCATOR _Workspace_Allocate |
This specifies the task stack allocator method.
#define CONFIGURE_TASK_STACK_ALLOCATOR_INIT NULL |
Configure the very much optional task stack allocator initialization
#define CONFIGURE_TASK_STACK_DEALLOCATOR _Workspace_Free |
This specifies the task stack deallocator method.
rtems_initialization_tasks_table Initialization_tasks[] |
This is the Classic API initialization tasks table.