Fix #274: Avoid possible deadlock of timer callback #278
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Describe the contribution
Fix issue #274, avoids timer callback deadlock if actual tick_time is consistently bigger than the configured iinterval_time.
Testing performed
Modify
timer-test
to choose an interval that is not a multiple of the system clock tick, such that it will be rounded up to the next tick by the implementation.Verify that evenually, two callbacks are generated in a single time tick, such that the long-term average of callbacks over time is consistent with the configured interval_time.
Confirm that callbacks continue normally until the application is stopped, as expected.
Expected behavior changes
Callbacks no longer cease once the "overrun" condition occurs (callbacks behind by >=1 full interval time)
Confirm consistent behavior on POSIX, RTEMS, and VxWorks
System(s) tested on:
Ubuntu 18.04.2 LTS 64-bit (POSIX/simulation)
RTEMS 4.11 pc686 BSP running in QEMU
MPC750 VxWorks 6.9
Contributor Info
Joseph Hickey, Vantage Systems, Inc.