dazza0 wrote on Monday, November 12, 2018:
ulTaskNotifyTake()
calls prvAddCurrentTaskToDelayedList()
within a critical section, which in turn can call vListInsert()
if xTicksToWait
is not equal to portMAX_DELAY
. vListInsert()
walks pxDelayedTaskList
or pxOverflowDelayedTaskList
to insert a list item in item value order.
Does this mean ulTaskNotifyTake()
is non-deterministic?
Is maintaining determinism also the reason behind the following design decisions:
-
vTaskDelay()
callingprvAddCurrentTaskToDelayedList()
during scheduler suspension instead of a critical section - Queue send/receive functions calling
vTaskPlaceOnEventList()
during scheduler suspension instead of a critical section.
Please let me know if my understanding of determinism incorrect. Thanks!