16#if XF_TASK_POOL_IS_ENABLE
19#include "../kernel/xf_task_base.h"
20#include "../task/xf_task_default.h"
21#include "../task/xf_ttask.h"
25#define TAG "task_pool"
55 XF_ASSERT(max_works, NULL,
TAG,
"max_works must not be 0");
56 XF_ASSERT(manager, NULL,
TAG,
"manager must not be NULL");
73 for (
size_t i = 0; i < max_works; i++) {
78 pool_task[i].
pool = pool;
124 handle->
arg = func_arg;
127 return pool_task->
task;
xf_err_t xf_task_pool_delete(xf_task_pool_t pool)
删除任务池。
xf_task_pool_t xf_task_pool_create_with_manager(uint32_t max_works, xf_task_manager_t manager, xf_task_type_t type, void *config)
创建一个任务池。
xf_task_t xf_task_init_from_pool(xf_task_pool_t pool, xf_task_func_t func, void *func_arg, uint16_t priority)
初始化任务。
void * xf_task_pool_t
任务池句柄。
#define XF_ASSERT(condition, retval, tag, format,...)
xfusion 断言宏(条件 不成立 时则输出日志后返回)。
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
static void xf_list_init(xf_list_t *list)
动态初始化链表.
static void xf_list_add_tail(xf_list_t *new_node, xf_list_t *head)
xf_list_add_tail - 在指定节点之前添加一个 new_node.
static void xf_list_del_init(xf_list_t *entry)
xf_list_del_init - 从链表中删除节点, 并重新初始化.
#define xf_list_first_entry(ptr, type, member)
xf_list_first_entry - 获取链表中的第一个元素.
#define xf_list_for_each_entry(pos, head, type, member)
list_for_each_entry - 迭代给定类型的链表。
xf_task_pool_handle_t * pool
task 的父对象,保存了 task 的公共属性。
static void task(xf_task_t task)
#define XF_LOGE(tag, format,...)
void xf_task_destructor(xf_task_t task)
任务销毁。回收任务资源
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)
在指定任务管理器下创建任务。
void xf_task_reset(xf_task_t task)
任务重置。将任务的一些参数进行重置。
void xf_task_delete(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 生成相关的内容。
#define XF_TASK_PRIORITY_LEVELS
配置任务最高优先级,1 ~ 1024 之间。
void * xf_task_manager_t
任务管理器句柄。
static void xf_task_delete_(xf_task_t task)
struct _xf_task_pool_handle_t xf_task_pool_handle_t
struct _xf_pool_task_t xf_pool_task_t
static void xf_task_pool_default_task(xf_task_t task)