XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_task.h
浏览该文件的文档.
1
40#ifndef __XF_TASK_H__
41#define __XF_TASK_H__
42
43/* ==================== [Includes] ========================================== */
44
46#include "port/xf_task_port.h"
48#include "task/xf_ctask.h"
49#include "task/xf_ttask.h"
50#include "task/xf_ntask.h"
52#include "utils/xf_task_mbus.h"
53#include "utils/xf_task_queue.h"
54#include "utils/xf_task_pool.h"
55
56#ifdef __cplusplus
57extern "C" {
58#endif
59
60/* ==================== [Defines] =========================================== */
61
62/* ==================== [Typedefs] ========================================== */
63
64/* ==================== [Global Prototypes] ================================= */
65
66#if XF_TASK_CONTEXT_IS_ENABLE || defined(__DOXYGEN__)
67
84static inline
85xf_task_t xf_ctask_create(xf_task_func_t func, void *func_arg, uint16_t priority, size_t stack_size)
86{
87 xf_ctask_config_t config = {.stack_size = stack_size};
89 &config);
90}
91
99static inline
100void xf_ctask_delay(uint32_t delay_ms)
101{
103}
104
114static inline
115xf_ctask_queue_t xf_ctask_queue_create(const size_t size, const size_t count)
116{
118}
119
125#endif // XF_TASK_CONTEXT_IS_ENABLE
126
144static inline
145xf_task_t xf_ttask_create(xf_task_func_t func, void *func_arg, uint16_t priority, uint32_t delay_ms, uint32_t count)
146{
147 xf_ttask_config_t config = {.count = count, .delay_ms = delay_ms};
149 &config);
150}
151
161static inline
162xf_task_t xf_ttask_create_loop(xf_task_func_t func, void *func_arg, uint16_t priority, uint32_t delay_ms)
163{
164 xf_ttask_config_t config = {.count = XF_TTASK_INFINITE_LOOP, .delay_ms = delay_ms};
166 &config);
167}
168
174static inline
175xf_task_t xf_ntask_create(xf_task_func_t func, void *func_arg, uint16_t priority)
176{
178 NULL);
179}
180
181#if XF_TASK_POOL_IS_ENABLE || defined(__DOXYGEN__)
182
183#if XF_TASK_CONTEXT_IS_ENABLE || defined(__DOXYGEN__)
184
201 size_t stack_size)
202{
203 xf_ctask_config_t config = {.stack_size = stack_size};
204 return xf_task_pool_create_with_manager(max_works, manager, XF_TASK_TYPE_ctask, &config);
205}
206
214static inline xf_task_pool_t xf_ctask_pool_create(uint32_t max_works, size_t stack_size)
215{
216 xf_ctask_config_t config = {.stack_size = stack_size};
218}
219
225#endif // XF_TASK_CONTEXT_IS_ENABLE
226
244 uint32_t delay_ms, uint32_t count)
245{
246 xf_ttask_config_t config = {.count = count, .delay_ms = delay_ms};
247 return xf_task_pool_create_with_manager(max_works, manager, XF_TASK_TYPE_TTASK, &config);
248}
249
258static inline xf_task_pool_t xf_ttask_pool_create(uint32_t max_works, uint32_t delay_ms, uint32_t count)
259{
260 xf_ttask_config_t config = {.count = count, .delay_ms = delay_ms};
262}
263
269#endif // XF_TASK_POOL_IS_ENABLE
270
271/* ==================== [Macros] ============================================ */
272
273#ifdef __cplusplus
274} /* extern "C" */
275#endif
276
277#endif // __XF_TASK_H__
void xf_ctask_delay_with_manager(xf_task_manager_t manager, uint32_t delay_ms)
ctask 专用 delay 函数,在 ctask 中才能使用。不会影响调度器。
Definition xf_ctask.c:70
static xf_task_pool_t xf_ctask_pool_create(uint32_t max_works, size_t stack_size)
在默认的任务管理下,创建 ctask 任务池。
Definition xf_task.h:214
static xf_ctask_queue_t xf_ctask_queue_create(const size_t size, const size_t count)
创建 ctask 消息队列。
Definition xf_task.h:115
static void xf_ctask_delay(uint32_t delay_ms)
延时函数。
Definition xf_task.h:100
#define XF_TASK_TYPE_CTASK
ctask 类型值。 XF_TASK_TYPE_ctask 通过 xf_task_reg.inc 拼接而来。
Definition xf_ctask.h:40
xf_ctask_queue_t xf_ctask_queue_create_with_manager(xf_task_manager_t manager, const size_t size, const size_t count)
创建 ctask 的消息队列。此消息队列仅供 ctask 使用。
Definition xf_ctask.c:89
static xf_task_t xf_ctask_create(xf_task_func_t func, void *func_arg, uint16_t priority, size_t stack_size)
在默认的任务管理下,创建 ctask 任务。
Definition xf_task.h:85
void * xf_ctask_queue_t
ctask 任务队列句柄。
Definition xf_ctask.h:47
static xf_task_pool_t xf_ctask_pool_create_with_manager(uint32_t max_works, xf_task_manager_t manager, size_t stack_size)
在指定的任务管理下,创建 ctask 任务池。
Definition xf_task.h:200
#define XF_TASK_TYPE_NTASK
ntask 类型值。 XF_TASK_TYPE_ntask 通过 xf_task_reg.inc 拼接而来。
Definition xf_ntask.h:38
xf_task_manager_t xf_task_get_default_manager(void)
获取默认的任务管理器。
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)
创建一个任务池。
void * xf_task_pool_t
任务池句柄。
#define XF_TASK_TYPE_TTASK
ttask 类型值。 XF_TASK_TYPE_ttask 通过 xf_task_reg.inc 拼接而来。
Definition xf_ttask.h:39
static xf_task_pool_t xf_ttask_pool_create(uint32_t max_works, uint32_t delay_ms, uint32_t count)
在默认的任务管理下,创建 ttask 任务池。
Definition xf_task.h:258
static xf_task_pool_t xf_ttask_pool_create_with_manager(uint32_t max_works, xf_task_manager_t manager, uint32_t delay_ms, uint32_t count)
在指定的任务管理下,创建 ttask 任务池。
Definition xf_task.h:243
static xf_task_t xf_ttask_create_loop(xf_task_func_t func, void *func_arg, uint16_t priority, uint32_t delay_ms)
在默认的任务管理下,创建 ttask 循环任务。
Definition xf_task.h:162
#define XF_TTASK_INFINITE_LOOP
Definition xf_ttask.h:40
static xf_task_t xf_ttask_create(xf_task_func_t func, void *func_arg, uint16_t priority, uint32_t delay_ms, uint32_t count)
在默认的任务管理下,创建 ttask 任务。
Definition xf_task.h:145
ctask 的传入参数。
Definition xf_ctask.h:52
ttask 创建传输参数。
Definition xf_ttask.h:47
有栈协程。
无栈协程。
static xf_task_t xf_ntask_create(xf_task_func_t func, void *func_arg, uint16_t priority)
Definition xf_task.h:175
xf_task 模块内部配置总头文件。 确保 xf_hal_config.h 的所有定义都有默认值。
默认任务管理器。用于简化调用。
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 内核。
void(* xf_task_func_t)(xf_task_t task)
任务调用函数原型。
void * xf_task_manager_t
任务管理器句柄。
void * xf_task_t
任务句柄。
消息总线(发布订阅)。
任务池。
xf_task 对接总头文件。
消息队列。
定时器任务。