|
aos_status_t | aos_task_create (aos_task_t *task, const char *name, void(*fn)(void *), void *arg, void *stack_buf, size_t stack_size, int32_t prio, uint32_t options) |
|
aos_status_t | aos_task_suspend (aos_task_t *task) |
|
aos_status_t | aos_task_resume (aos_task_t *task) |
|
void | aos_task_exit (int32_t code) |
|
aos_status_t | aos_task_delete (aos_task_t *task) |
|
aos_status_t | aos_task_yield (void) |
|
aos_status_t | aos_task_name_get (aos_task_t *task, char *buf, size_t buf_size) |
|
aos_task_t | aos_task_self (void) |
|
aos_status_t | aos_task_key_create (aos_task_key_t *key) |
|
void | aos_task_key_delete (aos_task_key_t key) |
|
aos_status_t | aos_task_setspecific (aos_task_key_t key, void *vp) |
|
void * | aos_task_getspecific (aos_task_key_t key) |
|
aos_status_t | aos_task_new (const char *name, void(*fn)(void *), void *arg, size_t stack_size) |
|
aos_status_t | aos_task_new_ext (aos_task_t *task, const char *name, void(*fn)(void *), void *arg, size_t stack_size, int32_t prio) |
|
提供AliOS Things系统内核任务管理功能的基础API.
◆ AOS_TASK_AUTORUN
#define AOS_TASK_AUTORUN 0x01u |
表示任务创建后即可被调度执行,当调用aos_task_create()创建任务时,用来指定option参数
在文件 kernel.h 第 66 行定义.
◆ AOS_TASK_NONE
#define AOS_TASK_NONE 0x0u |
表示不指定任意选项,当调用aos_task_create()创建任务时,用来指定option参数
在文件 kernel.h 第 65 行定义.
◆ aos_task_key_t
◆ aos_task_t
◆ aos_task_create()
aos_status_t aos_task_create |
( |
aos_task_t * |
task, |
|
|
const char * |
name, |
|
|
void(*)(void *) |
fn, |
|
|
void * |
arg, |
|
|
void * |
stack_buf, |
|
|
size_t |
stack_size, |
|
|
int32_t |
prio, |
|
|
uint32_t |
options |
|
) |
| |
创建任务,该接口为创建任务分配TCB(任务控制块)并且根据指定的执行体、任务名称、栈大小来初始化对应成员. 该接口任务栈是由内核分配的。
- 使用约束
- 该接口不能在中断上下文中调用
- 错误处理
- 如果任务执行体入口函数为NULL,或任务名为NULL,或任务句柄为NULL,则返回错误码-EINVAL
如果栈大小为零,则返回错误
如果任务优先级超过配置上限或等于IDLE任务优先级,则返回错误码-EINVAL
- 参数
-
[in] | task | 任务对象句柄. |
[in] | name | 任务名称.若任务名称为空,则使用默认任务名“default_name”。 |
[in] | fn | 任务执行体入口函数。 |
[in] | arg | 任务执行体入口函数的参数。 |
[in] | stack_buf | 栈空间地址,如果地址为空则内核根据stack_size为任务分配栈空间. |
[in] | stack_size | 栈大小(字节为单位)。 |
[in] | prio | 任务优先级,最大指由配置参数RHINO_CONFIG_USER_PRI_MAX(默认为60)决定. |
[in] | options | 任务创建选项,当前支持选项:
AOS_TASK_AUTORUN 任务创建后自动加入就绪队列,可被调度器调度执行.
|
- 返回
- 状态码
- 返回值
-
0 | 创建任务成功 |
-EINVAL | 输入非法参数导致失败 |
-ENOMEM | 内存不足导致失败 |
-1 | 其他原因导致的失败 |
◆ aos_task_delete()
删除任务,该接口删除一个任务并回收任务资源,不允许删除IDLE任务。
- 使用约束
- 该接口不能在中断上下文中调用
- 错误处理
- 如果任务句柄为NULL,则返回错误码-EINVAL
如果删除的任务为IDLE,则返回错误码-EPERM
- 参数
-
- 返回
- 状态码
- 返回值
-
0 | 恢复任务成功 |
-EINVAL | 输入非法参数导致失败 |
-EPERM | 尝试删除IDLE任务导致失败 |
-1 | 其他原因导致的失败 |
◆ aos_task_exit()
void aos_task_exit |
( |
int32_t |
code | ) |
|
任务退出,该接口功能是任务删除自身,且IDLE任务不允许删除。
- 使用约束
- 该接口不能在中断上下文中调用
- 错误处理
- 如果挂起任务为IDLE,则直接返回
- 参数
-
- 返回
- 无
◆ aos_task_getspecific()
Get the value currently bound to the specified key.
- 参数
-
- 返回
- NULL: get fail, otherwise: get succeed.
◆ aos_task_key_create()
Create a task key.
- 参数
-
[out] | key | pointer of key object. |
- 返回
- 0: success, -EINVAL: error.
◆ aos_task_key_delete()
Delete a task key.
- 参数
-
- 返回
- none.
◆ aos_task_name_get()
获取任务名称,该接口将指定任务的任务名称拷贝到用户缓冲区。
- 使用约束
- 该接口不能在中断上下文中调用
- 错误处理
- 如果任务句柄为NULL,则返回错误码-EINVAL
如果用户缓冲区地址参数为NULL,则返回错误码-EINVAL
如果用户缓冲区大小为0,则返回错误码-EINVAL
- 参数
-
[in] | task | 任务对象句柄 |
[out] | buf | 输出任务名的用户缓冲区地址 |
[in] | buf_size | 输出任务名的用户缓冲区大小 |
- 返回
- 状态码
- 返回值
-
0 | 恢复任务成功 |
-EINVAL | 输入非法参数导致失败 |
-1 | 其他原因导致的失败 |
◆ aos_task_new()
aos_status_t aos_task_new |
( |
const char * |
name, |
|
|
void(*)(void *) |
fn, |
|
|
void * |
arg, |
|
|
size_t |
stack_size |
|
) |
| |
Create a task. Deprecated, not Recommended.
- 参数
-
[in] | name | task name. |
[in] | fn | function to run. |
[in] | arg | argument of the function. |
[in] | stacksize | stack-size in bytes. |
- 返回
- 0: success, otherwise: fail.
◆ aos_task_new_ext()
aos_status_t aos_task_new_ext |
( |
aos_task_t * |
task, |
|
|
const char * |
name, |
|
|
void(*)(void *) |
fn, |
|
|
void * |
arg, |
|
|
size_t |
stack_size, |
|
|
int32_t |
prio |
|
) |
| |
Create a task. Deprecated, not Recommended.
- 参数
-
[in] | task | handle. |
[in] | name | task name. |
[in] | fn | task function. |
[in] | arg | argument of the function.. |
[in] | stack_size | stack-size in bytes. |
[in] | prio | priority value, the max is RHINO_CONFIG_USER_PRI_MAX(default 60). |
- 返回
- 0: success.
◆ aos_task_resume()
恢复任务,该接口将挂起任务恢复,取消暂时不执行状态。
- 使用约束
- 该接口不能在中断上下文中调用
- 错误处理
- 如果任务句柄为NULL,则返回错误码-EINVAL
- 参数
-
- 返回
- 状态码
- 返回值
-
0 | 恢复任务成功 |
-EINVAL | 输入非法参数导致失败 |
-1 | 其他原因导致的失败 |
◆ aos_task_self()
获取当前任务的任务对象句柄。
- 使用约束
- 无。
- 错误处理
- 无。
- 参数
-
- 返回
- 任务对象句柄
◆ aos_task_setspecific()
Associate a task-specific value with a key.
- 参数
-
[in] | key | key object. |
[in] | vp | pointer of a task-specific value. |
- 返回
- the check status, 0: OK, -1: indicates key invalid.
◆ aos_task_suspend()
挂起任务,该接口将已创建的任务挂起,暂时不执行,挂起的对象既可以是任务自身也可以是其他任务,
但不允许挂起IDLE任务。
- 使用约束
- 该接口不能在中断上下文中调用
- 错误处理
- 如果任务句柄为NULL,则返回错误码-EINVAL
如果挂起任务为IDLE,则返回错误码-EPERM
- 参数
-
- 返回
- 状态码
- 返回值
-
0 | 挂起任务成功 |
-EINVAL | 输入非法参数导致失败 |
-EPERM | 尝试挂起IDLE任务导致失败 |
-1 | 其他原因导致的失败 |
◆ aos_task_yield()
当前任务让出CPU资源,该接口将当前任务唤出,放入就绪队列对尾,暂时放弃CPU的使用权。
- 使用约束
- 该接口不能在中断上下文中调用
- 错误处理
- 如果任务句柄为NULL,则返回错误码-EINVAL
- 参数
-
- 返回
- 状态码
- 返回值
-
0 | 恢复任务成功 |
-EINVAL | 输入非法参数导致失败 |
-1 | 其他原因导致的失败 |