mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-21 22:11:57 -04:00
Allow tasks to be suspended immediately after creation - provided the scheduler is not running.
Add API function that allows the tick count to be queried from an interrupt.
This commit is contained in:
parent
ad451e8b70
commit
7ce7d21ca8
|
@ -963,7 +963,7 @@ signed portBASE_TYPE xTaskIsTaskSuspended( xTaskHandle xTask ) PRIVILEGED_FUNCTI
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* task. h
|
* task. h
|
||||||
* <PRE>volatile portTickType xTaskGetTickCount( void );</PRE>
|
* <PRE>portTickType xTaskGetTickCount( void );</PRE>
|
||||||
*
|
*
|
||||||
* @return The count of ticks since vTaskStartScheduler was called.
|
* @return The count of ticks since vTaskStartScheduler was called.
|
||||||
*
|
*
|
||||||
|
@ -972,6 +972,22 @@ signed portBASE_TYPE xTaskIsTaskSuspended( xTaskHandle xTask ) PRIVILEGED_FUNCTI
|
||||||
*/
|
*/
|
||||||
portTickType xTaskGetTickCount( void ) PRIVILEGED_FUNCTION;
|
portTickType xTaskGetTickCount( void ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* task. h
|
||||||
|
* <PRE>portTickType xTaskGetTickCountFromISR( void );</PRE>
|
||||||
|
*
|
||||||
|
* @return The count of ticks since vTaskStartScheduler was called.
|
||||||
|
*
|
||||||
|
* This is a version of xTaskGetTickCount() that is safe to be called from an
|
||||||
|
* ISR - provided that portTickType is the natural word size of the
|
||||||
|
* microcontroller being used or interrupt nesting is either not supported or
|
||||||
|
* not being used.
|
||||||
|
*
|
||||||
|
* \page xTaskGetTickCount xTaskGetTickCount
|
||||||
|
* \ingroup TaskUtils
|
||||||
|
*/
|
||||||
|
portTickType xTaskGetTickCountFromISR( void ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* task. h
|
* task. h
|
||||||
* <PRE>unsigned short uxTaskGetNumberOfTasks( void );</PRE>
|
* <PRE>unsigned short uxTaskGetNumberOfTasks( void );</PRE>
|
||||||
|
|
|
@ -894,7 +894,7 @@ tskTCB * pxNewTCB;
|
||||||
portEXIT_CRITICAL();
|
portEXIT_CRITICAL();
|
||||||
|
|
||||||
/* We may have just suspended the current task. */
|
/* We may have just suspended the current task. */
|
||||||
if( ( void * ) pxTaskToSuspend == NULL )
|
if( ( ( void * ) pxTaskToSuspend == NULL ) && ( xSchedulerRunning != pdFALSE ) )
|
||||||
{
|
{
|
||||||
portYIELD_WITHIN_API();
|
portYIELD_WITHIN_API();
|
||||||
}
|
}
|
||||||
|
@ -1175,6 +1175,12 @@ portTickType xTicks;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
portTickType xTaskGetTickCountFromISR( void )
|
||||||
|
{
|
||||||
|
return xTickCount;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )
|
unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )
|
||||||
{
|
{
|
||||||
/* A critical section is not required because the variables are of type
|
/* A critical section is not required because the variables are of type
|
||||||
|
|
Loading…
Reference in a new issue