XFusion API v1.3.0
载入中...
搜索中...
未找到
ctask

有栈协程。 更多...

ctask 的协作图:

结构体

struct  _xf_ctask_config_t
 ctask 的传入参数。 更多...
 

宏定义

#define XF_TASK_TYPE_CTASK   XF_TASK_TYPE_ctask
 ctask 类型值。 XF_TASK_TYPE_ctask 通过 xf_task_reg.inc 拼接而来。
 

类型定义

typedef void * xf_ctask_queue_t
 ctask 任务队列句柄。
 
typedef struct _xf_ctask_config_t xf_ctask_config_t
 ctask 的传入参数。
 

函数

static xf_task_t xf_ctask_create_with_manager (xf_task_manager_t manager, xf_task_func_t func, void *func_arg, uint16_t priority, size_t stack_size)
 在指定的任务管理器中创建 ctask。
 
void xf_ctask_delay_with_manager (xf_task_manager_t manager, uint32_t delay_ms)
 ctask 专用 delay 函数,在 ctask 中才能使用。不会影响调度器。
 
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 使用。
 
xf_err_t xf_ctask_queue_send (xf_ctask_queue_t queue, void *buffer, uint32_t timeout)
 消息队列发送。
 
xf_err_t xf_ctask_queue_receive (xf_ctask_queue_t queue, void *buffer, uint32_t timeout)
 消息队列接收。
 
static xf_task_t xf_ctask_create (xf_task_func_t func, void *func_arg, uint16_t priority, size_t stack_size)
 在默认的任务管理下,创建 ctask 任务。
 
static void xf_ctask_delay (uint32_t delay_ms)
 延时函数。
 
static xf_ctask_queue_t xf_ctask_queue_create (const size_t size, const size_t count)
 创建 ctask 消息队列。
 
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 任务池。
 
static xf_task_pool_t xf_ctask_pool_create (uint32_t max_works, size_t stack_size)
 在默认的任务管理下,创建 ctask 任务池。
 

详细描述

有栈协程。

宏定义说明

◆ XF_TASK_TYPE_CTASK

#define XF_TASK_TYPE_CTASK   XF_TASK_TYPE_ctask

ctask 类型值。 XF_TASK_TYPE_ctask 通过 xf_task_reg.inc 拼接而来。

在文件 xf_ctask.h40 行定义.

类型定义说明

◆ xf_ctask_queue_t

typedef void* xf_ctask_queue_t

ctask 任务队列句柄。

在文件 xf_ctask.h47 行定义.

◆ xf_ctask_config_t

ctask 的传入参数。

函数说明

◆ xf_ctask_create_with_manager()

static xf_task_t xf_ctask_create_with_manager ( xf_task_manager_t  manager,
xf_task_func_t  func,
void *  func_arg,
uint16_t  priority,
size_t  stack_size 
)
inlinestatic

在指定的任务管理器中创建 ctask。

参数
manager指定的任务管理器。
func任务执行的函数。
func_arg用户自定义执行函数参数。
priority任务优先级。
stack_size任务上下文堆栈大小。
返回
xf_task_t 任务对象,返回为 NULL 则表示创建失败

在文件 xf_ctask.h69 行定义.

◆ xf_ctask_delay_with_manager()

void xf_ctask_delay_with_manager ( xf_task_manager_t  manager,
uint32_t  delay_ms 
)

ctask 专用 delay 函数,在 ctask 中才能使用。不会影响调度器。

参数
manager任务管理器对象。
delay_msms 级别的延时,但是只能在 ctask 中使用。

在文件 xf_ctask.c70 行定义.

◆ xf_ctask_queue_create_with_manager()

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 使用。

参数
manager任务管理器对象。
size消息队列的大小。
count消息队列的数量。
返回
xf_ctask_queue_t 消息队列的对象

在文件 xf_ctask.c89 行定义.

◆ xf_ctask_queue_send()

xf_err_t xf_ctask_queue_send ( xf_ctask_queue_t  queue,
void *  buffer,
uint32_t  timeout 
)

消息队列发送。

参数
queue消息队列对象。
buffer消息队列发送的数据。
timeout超时时间,规定时间内没发送成功则发送失败。
返回
xf_err_t
  • XF_ERR_INVALID_ARG 参数错误
  • XF_ERR_BUSY 任务状态不符合执行条件
  • XF_ERR_NOT_SUPPORTED 任务类型不是ctask
  • XF_ERR_TIMEOUT 消息队列超时
  • XF_OK 消息队列正确发送

在文件 xf_ctask.c123 行定义.

◆ xf_ctask_queue_receive()

xf_err_t xf_ctask_queue_receive ( xf_ctask_queue_t  queue,
void *  buffer,
uint32_t  timeout 
)

消息队列接收。

参数
queue消息队列对象。
buffer消息队列接收的数据。
timeout超时时间,规定时间内没发送成功则接收失败。
返回
xf_err_t
  • XF_ERR_INVALID_ARG 参数错误
  • XF_ERR_BUSY 任务状态不符合执行条件
  • XF_ERR_NOT_SUPPORTED 任务类型不是ctask
  • XF_ERR_TIMEOUT 消息队列超时
  • XF_OK 消息队列正确接收

在文件 xf_ctask.c173 行定义.

◆ xf_ctask_create()

static xf_task_t xf_ctask_create ( xf_task_func_t  func,
void *  func_arg,
uint16_t  priority,
size_t  stack_size 
)
inlinestatic

在默认的任务管理下,创建 ctask 任务。

参数
funcctask 任务执行的函数。
func_arg用户自定义执行函数参数。
priority任务优先级。
stack_size任务上下文堆栈大小。
返回
xf_task_t 任务对象,返回为 NULL 则表示创建失败

在文件 xf_task.h85 行定义.

◆ xf_ctask_delay()

static void xf_ctask_delay ( uint32_t  delay_ms)
inlinestatic

延时函数。

注意
该函数只能在 ctask 任务中使用。
参数
delay_ms延时的时间,单位为毫秒。

在文件 xf_task.h100 行定义.

◆ xf_ctask_queue_create()

static xf_ctask_queue_t xf_ctask_queue_create ( const size_t  size,
const size_t  count 
)
inlinestatic

创建 ctask 消息队列。

注意
该函数只能在 ctask 任务中使用。
参数
size消息队列的大小。
count消息队列的数量。
返回
xf_ctask_queue_t 消息队列对象,返回为 NULL 则表示创建失败

在文件 xf_task.h115 行定义.

◆ xf_ctask_pool_create_with_manager()

static xf_task_pool_t xf_ctask_pool_create_with_manager ( uint32_t  max_works,
xf_task_manager_t  manager,
size_t  stack_size 
)
inlinestatic

在指定的任务管理下,创建 ctask 任务池。

参数
max_works任务池最大工作任务数。
manager任务管理器。
stack_size任务上下文堆栈大小。
返回
xf_task_pool_t 任务池对象,返回为 NULL 则表示创建失败

在文件 xf_task.h200 行定义.

◆ xf_ctask_pool_create()

static xf_task_pool_t xf_ctask_pool_create ( uint32_t  max_works,
size_t  stack_size 
)
inlinestatic

在默认的任务管理下,创建 ctask 任务池。

参数
max_works任务池最大工作任务数。
stack_size任务上下文堆栈大小。
返回
xf_task_pool_t 任务池对象,返回为 NULL 则表示创建失败

在文件 xf_task.h214 行定义.