summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests/spextensions01 (follow)
Commit message (Collapse)AuthorAgeFilesLines
* bsps/testsuites/: Scripted embedded brains header file clean upJoel Sherrill2022-03-101-6/+0
| | | | Updates #4625.
* Canonicalize config.h includeSebastian Huber2020-04-161-1/+1
| | | | | | | | Use the following variant which was already used by most source files: #ifdef HAVE_CONFIG_H #include "config.h" #endif
* sptests/spextensions01: Add commentSebastian Huber2020-03-031-0/+9
| | | | Update #3885.
* score: Fix context switch extensions (SMP)Sebastian Huber2020-02-281-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* testsuite/sptests: Merged nested Makefile.am files into one Makefile.amChris Johns2018-04-101-19/+0
| | | | | | This change is part of the testsuite Makefile.am reorganization. Update #3382
* score: Simplify global constructionSebastian Huber2017-11-221-3/+3
| | | | Update #3243.
* tests: Use simple console driverSebastian Huber2017-11-061-1/+1
| | | | | Update #3170. Update #3199.
* tests: Remove TEST_INITSebastian Huber2017-10-281-2/+0
| | | | | | | | The TEST_EXTERN is a used only by the system.h style tests and they use CONFIGURE_INIT appropriately. Update #3170. Update #3199.
* tests: Remove obsolete TESTS_USE_PRINTKSebastian Huber2017-10-281-1/+0
| | | | | Update #3170. Update #3199.
* testsuite: Use printk for all test output where possible.Chris Johns2017-10-231-0/+2
| | | | | | | | | | - Remove the printf support leaving the direct printk support configured with TESTS_USE_PRINTK and all other output goes via a buffered vsniprintf call to printk. - Control the test's single init for functions and global data with TEST_INIT and not CONFIGURE_INIT. They are now separate. Updates #3170.
* spextensions01: Fix extension create orderSebastian Huber2017-02-211-11/+11
| | | | Update #2692.
* score: Fix user extensions orderSebastian Huber2017-01-261-34/+28
| | | | | | | | | | | Use forward and reverse order for initial and dynamic extensions. This is the behaviour documented in the C Users Guide. Change thread terminate order to backward to be in line with the thread delete order. Change fatal error order to forward to ensure that initial extensions are called first due the peculiar execution context of fatal error extensions, see _Terminate() documentation. Update #2692.
* Rename is_internal to always_set_to_falseSebastian Huber2016-12-121-4/+4
| | | | Update #2825.
* sptests/spextensions01: Avoid NULL pointer accessSebastian Huber2016-07-261-1/+2
|
* score: Relax thread begin extension environmentSebastian Huber2016-07-251-0/+74
| | | | Update #2752.
* cpukit, testsuite: Add rtems_printf and rtems_printer support.Chris Johns2016-05-251-4/+5
| | | | | | | | | | | | | | | | | | | This change adds rtems_printf and related functions and wraps the RTEMS print plugin support into a user API. All references to the plugin are removed and replaced with the rtems_printer interface. Printk and related functions are made to return a valid number of characters formatted and output. The function attribute to check printf functions has been added to rtems_printf and printk. No changes to remove warrnings are part of this patch set. The testsuite has been moved over to the rtems_printer. The testsuite has a mix of rtems_printer access and direct print control via the tmacros.h header file. The support for begink/endk has been removed as it served no purpose and only confused the code base. The testsuite has not been refactored to use rtems_printf. This is future work.
* score: Use chain iterator for user extensionsSebastian Huber2016-04-184-0/+480
Add a lock and use a chain iterator for safe iteration during concurrent user extension addition and removal. Ensure that dynamically added thread delete and fatal extensions are called in reverse order. Update #2555. Update #2692.