summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests/spintrcritical18/Makefile.am (follow)
Commit message (Collapse)AuthorAgeFilesLines
* testsuite/sptests: Merged nested Makefile.am files into one Makefile.amChris Johns2018-04-101-22/+0
| | | | | | This change is part of the testsuite Makefile.am reorganization. Update #3382
* score: Critical fix for thread dispatchingSebastian Huber2012-10-071-0/+22
The changes in _Thread_Dispatch() of commits dad36c52b8be5d7b46bc7af85655055db7208652 and d4dc7c8196355f08044e67a3f5c1e19485f17ff1 introduced a severe bug which destroys the real-time properties of RTEMS completely. Consider the following scenario. We have three tasks L (lowest priority), M (middle priority), and H (highest priority). Now let a thread dispatch from M to L happen. An interrupt occurs in _Thread_Dispatch() here: void _Thread_Dispatch( void ) { [...] post_switch: _ISR_Enable( level ); <-- INTERRUPT <-- AFTER INTERRUPT _Thread_Unnest_dispatch(); _API_extensions_Run_postswitch(); } The interrupt event makes task H ready. The interrupt code will see _Thread_Dispatch_disable_level > 0 and thus doesn't perform a _Thread_Dispatch(). Now we return to position "AFTER INTERRUPT". This means task L executes now although task H is ready! Task H will execute once someone calls _Thread_Dispatch().