Latest News Items: FAT file system released - Tick suppression demo'ed SAM4L MCU & RX100 MCUs - embTCP released for PIC32
FreeRTOS royalty free RTOS RSS feed  Real time embedded FreeRTOS mailing list  
Quick Start Supported MCUs Books & Kits Ecosystem Training Contact & Support



Last site update May 1 2013

Task Utilities
[API]

Modules


xTaskGetCurrentTaskHandle

task.h
xTaskHandle xTaskGetCurrentTaskHandle( void );

INCLUDE_xTaskGetCurrentTaskHandle must be set to 1 for this function to be available.

Returns:
The handle of the currently running (calling) task.

xTaskGetIdleTaskHandle

task.h
xTaskHandle xTaskGetIdleTaskHandle( void );

INCLUDE_xTaskGetIdleTaskHandle must be set to 1 for this function to be available.

Returns:
The task handle associated with the Idle task. The Idle task is created automatically when the RTOS scheduler is started.

eTaskGetState

task.h
eTaskState eTaskGetState( xTaskHandle xTask );

Returns as an enumerated type the state in which a task existed at the time eTaskGetState() was executed.

INCLUDE_eTaskGetState must be set to 1 in FreeRTOSConfig.h for eTaskGetState() to be available.

Parameters:
xTask The handle of the subject task (the task being queried).
Returns:
The table below lists the value that eTaskGetState() will return for each possible state that the task referenced by the xTask parameter can exist in.

State
Returned Value
Ready eReady
Running eRunning (the calling task is querying its own priority)
Blocked eBlocked
Suspended eSuspended
Deleted eDeleted (the tasks TCB is waiting to be cleaned up)

pcTaskGetTaskName

task.h
signed char * pcTaskGetTaskName( xTaskHandle xTaskToQuery );

INCLUDE_pcTaskGetTaskName must be set to 1 in FreeRTOSConfig.h for pcTaskGetTaskName() to be available.

Parameters:
xTaskToQuery The handle of the task being queried. xTaskToQuery can be set to NULL to query the name of the calling task.
Returns:
A pointer to the subject tasks name, which is a standard NULL terminated C string.

xTaskGetTickCount

task.h
volatile portTickType xTaskGetTickCount( void );

This function cannot be called from an ISR. Use xTaskGetTickCountFromISR() instead.

Returns:
The count of ticks since vTaskStartScheduler was called.

xTaskGetTickCountFromISR

task.h
volatile portTickType xTaskGetTickCountFromISR( void );

A version of xTaskGetTickCount() that can be called from an ISR.

Returns:
The count of ticks since vTaskStartScheduler was called.

xTaskGetSchedulerState

task.h
portBASE_TYPE xTaskGetSchedulerState( void );

Returns:
One of the following constants (defined within task.h): taskSCHEDULER_NOT_STARTED, taskSCHEDULER_RUNNING, taskSCHEDULER_SUSPENDED.

uxTaskGetNumberOfTasks

task.h
unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void );

Returns:
The number of tasks that the RTOS kernel is currently managing. This includes all ready, blocked and suspended tasks. A task that has been deleted but not yet freed by the idle task will also be included in the count.

vTaskList

task.h
void vTaskList( portCHAR *pcWriteBuffer );

configUSE_TRACE_FACILITY must be defined as 1 for this function to be available. See the configuration section for more information.

NOTE: This function will disable interrupts for its duration. It is not intended for normal application runtime use but as a debug aid.

Lists all the current tasks, along with their current state and stack usage high water mark.

Tasks are reported as blocked ('B'), ready ('R'), deleted ('D') or suspended ('S').

Parameters:
pcWriteBuffer A buffer into which the above mentioned details will be written, in ascii form. This buffer is assumed to be large enough to contain the generated report. Approximately 40 bytes per task should be sufficient.

vTaskStartTrace

task.h
void vTaskStartTrace( portCHAR * pcBuffer, unsigned portLONG ulBufferSize );

[The function relates to the legacy trace utility - which was removed in FreeRTOS V7.1.0 - users may find the newer Trace Hook Macros easier and more powerful to use.]

Starts a RTOS kernel activity trace. The trace logs the identity of which task is running when.

The trace file is stored in binary format. A separate DOS utility called convtrce.exe is used to convert this into a tab delimited text file which can be viewed and plotted in a spread sheet.

Parameters:
pcBuffer The buffer into which the trace will be written.
ulBufferSize The size of pcBuffer in bytes. The trace will continue until either the buffer in full, or ulTaskEndTrace() is called.

ulTaskEndTrace

task.h
unsigned portLONG ulTaskEndTrace( void );

[The function relates to the legacy trace utility - which was removed in FreeRTOS V7.1.0 - users may find the newer Trace Hook Macros easier and more powerful to use.]

Stops an RTOS kernel activity trace. See vTaskStartTrace().

Returns:
The number of bytes that have been written into the trace buffer.

vTaskGetRunTimeStats

task.h
void vTaskGetRunTimeStats( portCHAR *pcWriteBuffer );

See the Run Time Stats page for a full description of this feature.

configGENERATE_RUN_TIME_STATS must be defined as 1 for this function to be available. The application must also then provide definitions for portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE to configure a peripheral timer/counter and return the timers current count value respectively. The counter should be at least 10 times the frequency of the tick count.

NOTE: This function will disable interrupts for its duration. It is not intended for normal application runtime use but as a debug aid.

Setting configGENERATE_RUN_TIME_STATS to 1 will result in a total accumulated execution time being stored for each task. The resolution of the accumulated time value depends on the frequency of the timer configured by the portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() macro. Calling vTaskGetRunTimeStats() writes the total execution time of each task into a buffer, both as an absolute count value and as a percentage of the total system execution time.

Parameters:
pcWriteBuffer  A buffer into which the execution times will be written, in ascii form. This buffer is assumed to be large enough to contain the generated report. Approximately 40 bytes per task should be sufficient.







[ Back to the top ]    [ About FreeRTOS ]    [ Sitemap ]    [ ]




Copyright (C) 2004-2010 Richard Barry. Copyright (C) 2010-2013 Real Time Engineers Ltd.
Any and all data, files, source code, html content and documentation included in the FreeRTOSTM distribution or available on this site are the exclusive property of Real Time Engineers Ltd.. See the files license.txt (included in the distribution) and this copyright notice for more information. FreeRTOSTM and FreeRTOS.orgTM are trade marks of Real Time Engineers Ltd.