mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-10 17:39:47 +08:00
Previously, the _Thread_Heir was updated unconditionally in case a new heir was determined. The _Thread_Dispatch_necessary was only updated in case the executing thread was preemptible or an internal thread was unblocked. Change this to update the _Thread_Heir and _Thread_Dispatch_necessary only in case the currently selected heir thread is preemptible or a dispatch is forced. Move the schedule decision into the change priority operation and use the schedule operation only in rtems_task_mode() in case preemption is enabled or an ASR dispatch is necessary. This is a behaviour change. Previously, the RTEMS_NO_PREEMPT also prevented signal delivery in certain cases (not always). Now, signal delivery is no longer influenced by RTEMS_NO_PREEMPT. Since the currently selected heir thread is used to determine if a new heir is chosen, non-preemptible heir threads currently not executing now prevent a new heir. This may have an application impact, see change test tm04. Document this change in sp04. Update #2273.
This directory contains the RTEMS Classic API Timing Test Suite. The tests in this directory are used to measure the execution time of RTEMS directive and some critical internal functions. The results of these test are useful for comparison of RTEMS performance + between versions of RTEMS + between different boards + across different architectures These tests attempt to benchmark RTEMS as the user would. They measure the execution time for a directive (under various circumstances) from the time RTEMS is entered until it is executed. Where possible, the time is the average of at least 100 invocations of the directive. The accuracy of the times reported by these benchmarks is very dependent on the resolution of the timer being used. It is also important to insure that all sources of hardware interrupts are disabled during execution of the tests. This insures that the directive time reported does not include any interrupt time.