summaryrefslogtreecommitdiff
path: root/cpukit/libmisc (follow)
AgeCommit message (Collapse)Author
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-25config: Add _SMP_Is_enabledSebastian Huber
Move the is SMP enabled configuration constant out of the configuration table. Since this was the last configuration constant in rtems_configuration_table, remove this type. Update #3875.
2020-02-25config: Simplify initialization task configSebastian Huber
With the removal of the CONFIGURE_HAS_OWN_INIT_TASK_TABLE configuration option at most one Classic API user initialization task can be configured. Provide an RTEMS API configuration table for backward compatibility. Update #3873.
2020-02-17monitor: Use proper API for all config constantsSebastian Huber
2020-02-04stackchk: Add RTEMS_SYSINIT_ISR_STACKSebastian Huber
Use a dedicated system initialization step for the stack checker interrupt stack support. Update #3838.
2019-12-19libmisc/top: Fix the idle time and priorities on SMPChris Johns
- This patch is based on the patch attached to #3552 submitted by jameszxj. Closes #3552
2019-12-19config: CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORSSebastian Huber
Rename CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS into CONFIGURE_MAXIMUM_FILE_DESCRIPTORS. Update #3753.
2019-12-13config: Add _MPCI_ConfigurationSebastian Huber
Replace the user MPCI configuration table with a system provided _MPCI_Configuration. Update #3735.
2019-12-11rtems: Optimize semaphore control blockSebastian Huber
Move variant, discipline, and global information to flags stored in a node pointer of active semaphores. Update #3833.
2019-11-26untar: Properly make parent pathSebastian Huber
Close #3823.
2019-11-25untar: Make path also for symbolic linksSebastian Huber
Close #3823.
2019-11-25untar: Unify untar supportSebastian Huber
Update #3823.
2019-11-19Move feature macro before "config.h" includeSebastian Huber
This allows to use header includes in "config.h" to reduce the build configuration checks. Update #3818.
2019-07-30Add and use THREAD_DEFAULT_MAXIMUM_NAME_SIZESebastian Huber
2019-07-02misc/rtemsdefaultconfig: Add bdbuf so libbsd can be used with configure.Chris Johns
2019-06-28score: Add and use _Thread_Get_unmapped_priority().Sebastian Huber
Add and use _Thread_Get_unmapped_real_priority().
2019-05-14shell: Avoid rtems_error()Sebastian Huber
Do not use the rtems_error() function since this function pulls in exit() and abort(). The abort() function pulls in raise() which pulls in the whole POSIX signals support. This change saves about 16KiB of text/rodata on ARM Thumb-2 systems.
2019-04-09rtems: Add rtems_scheduler_get_processor_maximum()Sebastian Huber
Add rtems_scheduler_get_processor_maximum() as a replacement for rtems_get_processor_count(). The rtems_get_processor_count() is a bit orphaned. Adopt it by the Scheduler Manager. The count is also misleading, since the processor set may have gaps and the actual count of online processors may be less than the value returned by rtems_get_processor_count(). Update #3732.
2019-04-09rtems: Add rtems_scheduler_get_processor()Sebastian Huber
Add rtems_scheduler_get_processor() as a replacement for rtems_get_current_processor(). The rtems_get_current_processor() is a bit orphaned. Adopt it by the Scheduler Manager. This is in line with the glibc sched_getcpu() function. Deprecate rtems_get_current_processor(). Update #3731.
2019-03-26build: Move test support to librtemstest.aSebastian Huber
One reason to move the test support into a dedicated library are the standard output __wrap_*() functions. They may conflict with application level wrappers. Update #3199.
2019-03-14main_edit.c: Use strncpy() to eliminate potential buffer overflow.Joel Sherrill
2019-03-14Remove superfluous <rtems/system.h> includesSebastian Huber
2019-03-08shell: Correct argument order of `mfill`Jonathan Brandmeyer
Close #3720.
2019-02-28Remove explicit file names from @fileSebastian Huber
This makes the @file documentation independent of the actual file name. Update #3707.
2019-02-09libmisc: Fix rtems_print_bufferChris Johns
Closes #3684
2019-01-23libmisc: Fix swapped parameters and enable floating point usage.Maksim E. Kozlov
2019-01-10Fix format warnings due to ino_t changesSebastian Huber
2019-01-07Fix format warningsSebastian Huber
2018-12-27drvmgr: Improve LP64 compatibilitySebastian Huber
2018-12-14rtems: Use object information to get config maxSebastian Huber
Use functions instead of macros. Add missing rtems_configuration_get_maximum_*() functions. Update #3621.
2018-12-03testsupport: Include missing <rtems/bspIo.h>Sebastian Huber
2018-11-21score: Remove support for RTEMS_USE_16_BIT_OBJECTSebastian Huber
The RTEMS_USE_16_BIT_OBJECT define is not set by an RTEMS port. Remove support for 16-bit object identifiers. If someone really wants to use RTEMS on a 16-bit target, then it is better to use self-contained objects instead of playing around with object identifier optimizations. Update #3603.
2018-11-12rtems: Move internal structures to extensiondata.hSebastian Huber
Update #3598.
2018-11-12rtems: Move internal structures to tasksdata.hSebastian Huber
Update #3598.
2018-11-12rtems: Move internal structures to regiondata.hSebastian Huber
Update #3598.
2018-11-12rtems: Move internal structures to partdata.hSebastian Huber
Update #3598.
2018-11-12m32c: Remove this targetSebastian Huber
Update #3599.
2018-11-09rtems: Deprecate region_information_blockSebastian Huber
The region_information_block typedef as no corresponding API. It has no proper namespace prefix. A user can do nothing with it. Close #3591.
2018-11-08monitor: Remove dead codeSebastian Huber
Update #3587. Update #3589.
2018-11-08score: Rename interrupt stack symbolsSebastian Huber
Rename * _Configuration_Interrupt_stack_area_begin in _ISR_Stack_area_begin, * _Configuration_Interrupt_stack_area_end in _ISR_Stack_area_end, and * _Configuration_Interrupt_stack_size in _ISR_Stack_size. Move definitions to <rtems/score/isr.h>. The new names are considerable shorter and in the right namespace. Update #3459.
2018-10-29posix: Provide threads by defaultSebastian Huber
Update #2514.
2018-10-10build: Merge libmisc/Makefile.amSebastian Huber
2018-10-09build: Remove specialized CPPFLAGSSebastian Huber
2018-10-09shell: Use #include "..." for local header filesSebastian Huber
Update #3375.
2018-10-02Use rtems_task_exit()Sebastian Huber
Update #3530. Update #3533.
2018-09-24stackchk: Fix interrupt stack preparationSebastian Huber
We have to prepare the interrupt stack of each processor. Update #3459.
2018-09-21stackchk: Improve support for interrupt stacksSebastian Huber
Prepare the interrupt stack which may be used by the boot processor as initialization stack with the stack sanity pattern. Check the interrupt stack of the current processor in the thread begin and switch extension. Update #3459.
2018-09-21stackchk: Remove heap hackSebastian Huber
It is now guranteed that threads do not use a freed stack during termination.
2018-08-24capture: prevent unaligned access when reading timeDaniel Hellstrom
LLVM warns about this: cpukit/libmisc/capture/capture.c:405:30: warning: taking address of packed member 'time' of class or structure 'rtems_capture_record' may result in an unaligned pointer value [-Waddress-of-packed-member] rtems_capture_get_time (&in.time); And on sparc it generates an unaligned trap which makes smpcapture01 and smpcapture02 test to fail on sparc.
2018-07-30confdefs: Fix uniprocessor configurationSebastian Huber
Introduce a new internal define _CONFIGURE_MAXIMUM_PROCESSORS and ensure that it is _CONFIGURE_MAXIMUM_PROCESSORS > 1 only in SMP configurations. This avoids to allocate data structures for non-existing additional processors in uniprocessor configuration. Update #3459.