tree b835696236c143ad40d4d891fd66a0b3f72c0a6a
parent abd887c687fb990014f38a3227f4ef1796eadf7b
author Jeff Tenney <jeff.tenney@gmail.com> 1641843852 -0700
committer GitHub <noreply@github.com> 1641843852 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJh3IyMCRBK7hj4Ov3rIwAAcgIIAIJtn0ojb7AoT2h8AZXPsbEK
 MD+zFHQ2vk0vyAX8vnEzoJK7kitQIDVMDL8daajClwCDYgmyrSHlXHmxqutRINFR
 E1kPgJbboEBNRkjN+YL8QrCYHpqZbQUmG/IEp8p+SKbqy/aSv3DwK5R5ZVOXWxJL
 yz9mnBqioXqP7E3ipKOqoa4ewNptO4AsN5teF+kivA7zy6TLQYvde646GhcWbw+l
 C4iwOc06kphKY8OMAiyYhObhlDlrzk4C2Z2WrurxGCQh+iYtFMCqG/7bgCf6tBp5
 HPUGDl7wBxKFILAzt9ZoMroCZwZgF8Stui723tPm2eAOM5zTYxyv4aPoCV15ncw=
 =g2EQ
 -----END PGP SIGNATURE-----
 

Fix support for stepping tick by xExpectedIdleTime (#73)

* Fix support for stepping maximum number of ticks

This commit fixes support for tickless implementations that call
vTaskStepTick() with the maximum number of allowed ticks to step.

vTaskStepTick()
---------------
Function vTaskStepTick() provides a way for the tickless idle
implementation to account for ticks that elapse during tickless idle.
The maximum number of stepped ticks allowed is the number passed to
portSUPPRESS_TICKS_AND_SLEEP().  It is the number of ticks between
xTickCount and xNextTaskUnblockTime.

vTaskStepTick() is specifically intended for use with tickless idle,
so it always executes with the scheduler disabled.  For reference,
compare it with the more general function xTaskCatchUpTicks().

Without this Change
-------------------
Prior to this commit, if a task is supposed to wake at xTickCount ==
0xFFFFFFFF, then when tickless idle ends, function vTaskStepTick()
sets the tick to 0xFFFFFFFF but the task remains on the delayed list
because xTaskIncrementTick() does not execute.  One tick later,
xTaskIncrementTick() executes because it's time to increment xTickCount
to 0x00000000.  An assertion failure occurs in
taskSWITCH_DELAYED_LISTS() because the delayed task list is not
empty.  Other examples of valling vTaskStepTick() with the maximum
allowed number of ticks merely result in a task waking one tick late.

Default Tickless Implementations
--------------------------------
Note that the default tickless implementations never pass the maximum
allowed value to vTaskStepTick().  The default implementations use the
tick interrupt to finish the sleep and allow that one tick to be
counted normally via the tick ISR and xTaskIncrementTick().

* Protect xPendedTicks with critical section

Function xTaskIncrementTick() increments xPendedTicks when the
scheduler is disabled.  That function typically executes inside the tick
ISR.  So code in xTaskCatchUpTicks() must mask interrupts when modifying
xPendedTicks.

* uncrustify tasks.c

* Update tasks.c

Style changes only - added comment and indentation to the two modified files.

* uncrustify

* Add test coverage for new conditional

* Add typecast

Co-authored-by: Cobus van Eeden <35851496+cobusve@users.noreply.github.com>
Co-authored-by: Joseph Julicher <jjulicher@mac.com>
Co-authored-by: RichardBarry <3073890+RichardBarry@users.noreply.github.com>