diff --git a/include/task.h b/include/task.h index 3eaf6eecb..96f77ab6c 100644 --- a/include/task.h +++ b/include/task.h @@ -799,6 +799,9 @@ void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION; * same xTimeIncrement parameter value will cause the task to execute with * a fixed interface period. * + * @param xWasDelayed Can be used to check whether the task was actually delayed. + * Will be set to pdTRUE if the task way delayed and to pdFALSE otherwise. + * * Example usage:
// Perform an action every 10 ticks. @@ -821,7 +824,7 @@ void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION; * \defgroup vTaskDelayUntil vTaskDelayUntil * \ingroup TaskCtrl */ -void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) PRIVILEGED_FUNCTION; +void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement, BaseType_t * xWasDelayed ) PRIVILEGED_FUNCTION; /** * task. h diff --git a/tasks.c b/tasks.c index 41b976b2f..4862cccc9 100644 --- a/tasks.c +++ b/tasks.c @@ -1251,7 +1251,7 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) #if ( INCLUDE_vTaskDelayUntil == 1 ) - void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) + void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement, BaseType_t * xWasDelayed ) { TickType_t xTimeToWake; BaseType_t xAlreadyYielded, xShouldDelay = pdFALSE; @@ -1328,6 +1328,11 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB ) { mtCOVERAGE_TEST_MARKER(); } + + if(xWasDelayed != NULL) + { + *xWasDelayed = xShouldDelay; + } } #endif /* INCLUDE_vTaskDelayUntil */