summaryrefslogtreecommitdiff
path: root/cpukit/score (follow)
AgeCommit message (Collapse)Author
2020-04-05Revert "score: Fix _ISR_Stack_area_end"Sebastian Huber
This reverts commit 8e80876bdd54e36fb668eee655eec1dd588daf13 which broke several architectures.
2020-04-03score: Fix _ISR_Stack_area_endSebastian Huber
The _ISR_Stack_area_begin and _ISR_Stack_area_end symbols are in different sections. They must have the same alignment, otherwise the following linker directive could separate them: *(SORT_BY_ALIGNMENT (SORT_BY_NAME (.rtemsstack*))) Update #3799.
2020-04-03arm: ARMv7-M statically initialized vector tableSebastian Huber
Statically initialize the ARMv7-M vector table to allow a placement in ROM with read-only MPU settings. Change licence to BSD-2-Clause in some files.
2020-03-16score: Add _IO_Base64()Sebastian Huber
Update #3904.
2020-02-28score: Fix context switch extensions (SMP)Sebastian Huber
In uniprocessor and SMP configurations, the context switch extensions were called during _Thread_Do_dispatch(): void _Thread_Do_dispatch( Per_CPU_Control *cpu_self, ISR_Level level ) { Thread_Control *executing; executing = cpu_self->executing; ... do { Thread_Control *heir; heir = _Thread_Get_heir_and_make_it_executing( cpu_self ); ... _User_extensions_Thread_switch( executing, heir ); ... _Context_Switch( &executing->Registers, &heir->Registers ); ... } while ( cpu_self->dispatch_necessary ); ... } In uniprocessor configurations, this is fine and the context switch extensions are called for all thread switches except the very first thread switch to the initialization thread. However, in SMP configurations, the context switch may be invalidated and updated in the low-level _Context_Switch() routine. See: https://docs.rtems.org/branches/master/c-user/symmetric_multiprocessing_services.html#thread-dispatch-details In case such an update happens, a thread will execute on the processor which was not seen in the previous call of the context switch extensions. This can confuse for example event record consumers which use events generated by a context switch extension. Fixing this is not straight forward. The context switch extensions call must move after the low-level context switch. The problem here is that we may end up in _Thread_Handler(). Adding the context switch extensions call to _Thread_Handler() covers now also the thread switch to the initialization thread. We also have to save the last executing thread (ancestor) of the processor. Registers or the stack cannot be used for this purpose. We have to add it to the per-processor information. Existing extensions may be affected, since now context switch extensions use the stack of the heir thread. The stack checker is affected by this. Calling the thread switch extensions in the low-level context switch is difficult since at this point an intermediate stack is used which is only large enough to enable servicing of interrupts. Update #3885.
2020-02-25score: Fix label defined but not used warningSebastian Huber
Update #3835.
2020-02-25score: _Scheduler_Is_non_preempt_mode_supported()Sebastian Huber
If the non-preempt mode for threads is supported depends on the scheduler implementation. Add _Scheduler_Is_non_preempt_mode_supported() to indicate this. Update #3876.
2020-02-25score: Add _SMP_Need_inter_processor_interrupts()Sebastian Huber
Test for the proper system condition instead of using the rtems_configuration_is_smp_enabled() workaround. Update #3876.
2020-02-25config: Add _Workspace_Is_unifiedSebastian Huber
Move the unified workspace configuration constant out of the configuration table. Provide a default definition of the unified workspace constant. Update #3875.
2020-02-25config: Add _Thread_Idle_bodySebastian Huber
Move the idle thread body configuration constant out of the configuration table. Provide a default definition of the idle thread body constant. Update #3875.
2020-02-25config: Add _Thread_Idle_stack_sizeSebastian Huber
Move the idle thread stack size configuration constant out of the configuration table. Add THREAD_IDLE_STACK_SIZE_DEFAULT and use it to provide a default definition of the idle thread stack size constant. Update #3875.
2020-02-25config: Add _Watchdog_Ticks_per_timesliceSebastian Huber
Move the ticks per timeslice configuration constant out of the configuration table. Add WATCHDOG_TICKS_PER_TIMESLICE_DEFAULT and use it to provide a default definition of the watchdog ticks per timeslice constant. Update #3875.
2020-02-17score: Clean up wkspace.cSebastian Huber
Remove DEBUG_WORKSPACE support. There are better ways to trace the application. See Tracing chapter in the RTEMS User Manual. Remove superfluous includes. Change format.
2020-02-17score: Remove unused _Workspace_Allocate_aligned()Sebastian Huber
2020-02-12score: Simplify _Thread_Initialize()Sebastian Huber
Allocate new thread queue heads during objects information extend. This removes an error case and the last dependency on the workspace in _Thread_Initialize(). Update #3835.
2020-02-12score: Add _Objects_Allocate_with_extend()Sebastian Huber
Update #3835.
2020-02-12score: Add _Objects_Activate_unlimited()Sebastian Huber
Update #3835.
2020-02-12score: Add _Freechain_Extend()Sebastian Huber
Update #3835.
2020-02-12score: _Objects_Extend_information()Sebastian Huber
Return block index in _Objects_Extend_information(). This allows to customize the objects information extend. Update #3835.
2020-02-12score: Inline _Objects_Namespace_remove_u32()Sebastian Huber
This function is simple enough to be inlined. Update #3835.
2020-02-12score: Split up objects freeSebastian Huber
Split up the different objects free methods into separate functions. This helps to avoid a dependency on the workspace in case no objects or a static set of objects is configured. Update #3835.
2020-02-12score: Split up objects allocationSebastian Huber
Split up the different objects allocation methods into separate functions. This helps to avoid a dependency on the workspace in case no objects or a static set of objects is configured. Change license to BSD-2-Clause according to file histories. Update #3053. Update #3835.
2020-02-12score: Add _Objects_Free_objects_block()Sebastian Huber
This is a preparation to allow a customization of the objects information extend. Update #3835.
2020-02-12score: Statically allocate idle/MPCI stacksSebastian Huber
Place idle and MPCI stacks into extra linker sections. This can be optionally used by applications to control the placement of the stacks. Update #3835.
2020-02-12score: Move thread stack allocationSebastian Huber
Move thread stack allocation to caller side of _Thread_Initialize(). Update #3835.
2020-02-12score: Add _Stack_Extend_size()Sebastian Huber
Update #3835.
2020-02-12score: Add Thread_ConfigurationSebastian Huber
Add the Thread_Configuration structure to reduce the parameter count of _Thread_Initialize(). This makes it easier to add more parameters in the future. It simplifies the code generation since most architectures do not have that many registers available for function parameters. Update #3835.
2020-02-12score: Split stack allocator configurationSebastian Huber
This allows the linker garbage collection to perform its work. Update #3835.
2020-02-12score: Simplify TLS area allocationSebastian Huber
Use the stack area to allocate the TLS area. Update #3835.
2020-02-12score: Simplify FP context allocationSebastian Huber
Use the stack area to allocate the FP context. This considerably simplifies the application configuration since the task count no longer influences the configured work space size. With this change the stack space size is overestimated since an FP context for each thread is accounted. Memory constraint applications can use the stack size for fine tuning. Update #3835.
2020-02-12score: Remove _Stack_Ensure_minimum() callSebastian Huber
This call is superfluous since _Thread_Initialize() will do this also. Update #3835.
2020-02-12score: Simplify thread stack freeSebastian Huber
Update #3835.
2020-02-12score: Simplify thread stack allocationSebastian Huber
Remove superfluous Thread_Control::Start::stack member. Update #3835.
2020-02-12score: Remove superfluous FP types/definesSebastian Huber
Update #3835.
2020-02-06config: Add CONFIGURE_DIRTY_MEMORYSebastian Huber
Replace the BSP_DIRTY_MEMORY BSP option with a CONFIGURE_DIRTY_MEMORY configuration option. Update #3843.
2020-02-06sysinit: Add RTEMS_SYSINIT_ZERO_MEMORYSebastian Huber
Use a dedicate system initialization step to zero the memory used for the workspace and C program heap. This avoids dead code in case CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY is not configured.
2020-02-04bsps: Rework work area initializationSebastian Huber
The work area initialization was done by the BSP through bsp_work_area_initialize(). This approach predated the system initialization through the system initialization linker set. The workspace and C program heap were unconditionally initialized. The aim is to support RTEMS application configurations which do not need the workspace and C program heap. In these configurations, the workspace and C prgram heap should not get initialized. Change all bsp_work_area_initialize() to implement _Memory_Get() instead. Move the dirty memory, sbrk(), per-CPU data, workspace, and malloc() heap initialization into separate system initialization steps. This makes it also easier to test the individual initialization steps. This change adds a dependency to _Heap_Extend() to all BSPs. This dependency will be removed in a follow up change. Update #3838.
2020-02-04score: Add _Memory_Fill()Sebastian Huber
Update #3838.
2020-02-04score: Add Memory HandlerSebastian Huber
Update #3838.
2020-02-01score: Optimize per-processor data placementSebastian Huber
Only align per-processor data in SMP configurations.
2020-01-02mpci: Fix blocking proxy statusSebastian Huber
Remove THREAD_STATUS_PROXY_BLOCKING and replace it with STATUS_PROXY_BLOCKING.
2020-01-02score: Fix objects node initializationSebastian Huber
The objects node is statically initialized to one. Clear the node field before it is set. Update #3621.
2019-12-13score: Remove _Workspace_Allocate_or_fatal_error()Sebastian Huber
This function is unused. Update #3735.
2019-12-13config: Statically allocate MP object controlsSebastian Huber
Update #3735.
2019-12-13config: Statically allocate MP thread proxiesSebastian Huber
Update #3735.
2019-12-13config: Add _MPCI_ConfigurationSebastian Huber
Replace the user MPCI configuration table with a system provided _MPCI_Configuration. Update #3735.
2019-12-11Add TOD Hooks to allow BSP to take action when TOD is setJoel Sherrill
Two use cases were envisioned for this. 1) a BSP or application which desires to update a real-time clock when the RTEMS TOD is set. 2) a paravirtualized BSP can use this to propagate setting the time in an RTEMS application to the hosting environment. This enables the entire set of applications in the virtualized environments to have a single consistent TOD.
2019-12-09userext: Simplify configurationSebastian Huber
Avoid the use of the workspace and use statically allocated switch controls for the initial extensions.
2019-11-29Regenerate headers.amSebastian Huber
2019-11-12riscv: preliminarily support for libdlHesham Almatary
Support for targets compiled with -fno-pic and -mno-relax