17#include "../port/xf_task_port_internal.h"
34 void *func_arg, uint16_t priority,
void *config)
36 XF_ASSERT(manager, NULL,
TAG,
"manager must not be NULL");
72 return task_base->
arg;
93#if XF_TASK_HUNGER_IS_ENABLE
145 task_base->
wake_up += resume_time;
208 handle->
delay = ticks;
219 if (handle->
func != func) {
223 if (handle->
arg != arg) {
230#if XF_TASK_USER_DATA_IS_ENABLE
#define XF_ASSERT(condition, retval, tag, format,...)
xfusion 断言宏(条件 不成立 时则输出日志后返回)。
#define BITS_SET0(var, bits_mask)
设置 32 位变量 var 的对应位掩码 bits_mask 为 1 的地方为 0。
#define BITS_SET1(var, bits_mask)
设置 32 位变量 var 的对应位掩码 bits_mask 为 1 的地方为 1。
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
task 的父对象,保存了 task 的公共属性。
xf_task_manager_t manager
xf_task_time_t suspend_time
const xf_task_vfunc_t * vfunc
虚函数表,不在 base 对象实现,由子对象完成实现。
const xf_task_create_t constructor
const xf_task_reset_t reset
static void task(xf_task_t task)
const xf_task_vfunc_t * xf_task_get_vfunc(xf_task_type_t type)
task 获取虚函数。
本头文件外界无法调用,manager 基于 base 进行调度。 开放部分在 xf_task_kernel.h .
#define XF_TASK_SIGNAL_EVENT
#define XF_TASK_SIGNAL_RESUME
#define XF_TASK_FALG_FEEL_HUNGERY
外部设置的标志位,内部只会读取不会设置.
XF_TASK_TIME_TYPE xf_task_time_t
xf_task 时间戳类型。
xf_err_t xf_task_set_user_data(xf_task_t task, void *user_data)
设置当前任务的 user_data。
xf_err_t xf_task_set_delay(xf_task_t task, uint32_t delay_ms)
设置任务的延时。
xf_err_t xf_task_set_priority(xf_task_t task, uint16_t priority)
设置当前任务的优先级。
xf_err_t xf_task_suspend(xf_task_t task)
任务进入挂起。挂起态的任务不会参与调度。
xf_task_t xf_task_create_with_manager(xf_task_manager_t manager, xf_task_type_t type, xf_task_func_t func, void *func_arg, uint16_t priority, void *config)
在指定任务管理器下创建任务。
xf_task_state_t xf_task_get_state(xf_task_t task)
获取当前任务的状态。
void xf_task_reset(xf_task_t task)
任务重置。将任务的一些参数进行重置。
uint16_t xf_task_get_priority(xf_task_t task)
获取当前任务的优先级。
xf_err_t xf_task_set_func(xf_task_t task, xf_task_func_t func, void *arg)
设置当前任务的执行函数(某些种类任务可能不适用)。
xf_task_manager_t xf_task_get_manager(xf_task_t task)
从任务获取管理器对象。
void xf_task_feel_hungery_enable(xf_task_t task, uint32_t hunger_time)
启用任务感受饥饿的功能。
xf_err_t xf_task_trigger(xf_task_t task)
任务触发。无论是否到达唤醒时间,都会触发。
void * xf_task_get_arg(xf_task_t task)
从任务对象获取任务自定义参数。
void xf_task_feel_hungery_disable(xf_task_t task)
禁用任务感受饥饿功能。
void * xf_task_get_user_data(xf_task_t task)
获取当前任务的 user_data。
xf_task_type_t xf_task_get_type(xf_task_t task)
获取当前任务类型。
void xf_task_delete(xf_task_t task)
任务删除函数。将任务加入销毁队列,并设置任务为删除态。
xf_err_t xf_task_resume(xf_task_t task)
任务从挂起中恢复,进入调度。
int32_t xf_task_get_timeout(xf_task_t task)
获取任务的超时时间。
void(* xf_task_func_t)(xf_task_t task)
任务调用函数原型。
enum _xf_task_type_t xf_task_type_t
任务类型,通过注册表 xf_task_reg.inc 生成相关的内容。
enum _xf_task_state_t xf_task_state_t
任务状态枚举。
#define XF_TASK_PRIORITY_LEVELS
配置任务最高优先级,1 ~ 1024 之间。
xf_err_t xf_task_manager_task_blocked(xf_task_manager_t manager, xf_task_t task)
设置当前任务为阻塞。
xf_err_t xf_task_manager_task_suspend(xf_task_manager_t manager, xf_task_t task)
设置当前任务为挂起。
xf_err_t xf_task_manager_task_ready(xf_task_manager_t manager, xf_task_t task)
设置当前任务为就绪。
xf_err_t xf_task_manager_task_destory(xf_task_manager_t manager, xf_task_t task)
设置当前任务为销毁。
void * xf_task_manager_t
任务管理器句柄。
xf_task_time_t xf_task_get_ticks(void)
int32_t xf_task_msec_to_ticks(int32_t msec)