xTaskCallApplicationTaskHook
[任务控制]
task. h
BaseType_t xTaskCallApplicationTaskHook(
TaskHandle_t xTask,
void *pvParameter );
configUSE_APPLICATION_TASK_TAG 必须定义为 1,此函数才可用。
有关详细信息,请参阅 RTOS 配置文档。
可以为每个任务分配“标签”值。 通常,此值仅供应用程序使用,并且 RTOS 内核无法访问它。 但是,可以
使用标签为任务分配钩子(或回调)函数——通过调用 xTaskCallApplicationTaskHook() 执行该钩子函数。 每个任务都可以定义
自己的回调,或者干脆不定义回调。
尽管可以使用第一个函数参数来调用任何任务的钩子函数,
但任务钩子函数最常见的用途是与跟踪钩子宏一起使用,如下面的例子所示。
任务钩子函数必须具有 TaskHookFunction_t 类型,即接受一个 void * 参数,并返回一个 BaseType_t 类型的值。 void * 参数可用于
将任何信息传递到钩子函数中。
- 参数:
-
xTask | 其钩子函数被调用的任务的句柄。 传递 NULL 作为 xTask 将调用与当前执行的任务相关的钩子函数。 |
pvParameter | 要传递给钩子函数的值。 这可以是指向一个结构体的指针,也可以是一个数值。 |
用法示例:
/* In this example a callback function is being assigned as the task tag.
First define the callback function - this must have type TaskHookFunction_t
as per this example. */
static BaseType_t prvExampleTaskHook( void * pvParameter )
{
/* Perform some action - this could be anything from logging a value,
updating the task state, outputting a value, etc. */
return 0;
}
/* Now define the task that sets prvExampleTaskHook as its hook/tag value.
This is in fact registering the task callback, as described on the
xTaskCallApplicationTaskHook() documentation page. */
void vAnotherTask( void *pvParameters )
{
/* Register our callback function. */
vTaskSetApplicationTaskTag( NULL, prvExampleTaskHook );
for( ;; )
{
/* Rest of task code goes here. */
}
}
/* As an example use of the hook (callback) we can get the RTOS kernel to
call the hook function of each task that is being switched out during a
reschedule. */
#define traceTASK_SWITCHED_OUT() xTaskCallApplicationTaskHook( pxCurrentTCB, 0 )
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|