当前位置: 首页 > 工具软件 > AliOS Things > 使用案例 >

alios thing 信号量_AliOS Things内核API

赖浩荡
2023-12-01

AliOS Things内核API

更新时间:2018-10-19 11:29:34

1 系统相关

1.1 aos_reboot

定义描述:

函数原型

void aos_reboot(void)

描述

重启单板

1.2 aos_get_hz

定义描述:

函数原型

int aos_get_hz(void)

描述

返回系统每秒tick频率

返回值

类型:int

函数原型

描述

返回值

1.3 aos_version_get

定义描述:

函数原型

char *aos_version_get(void)

描述

返回内核版本号

返回值

类型:char *;例如:AOS-R-1.3.0

1.4 aos_now

定义描述:

函数原型

long long aos_now(void)

描述

返回内核启动至今的ns数

返回值

类型:long long;

1.5 aos_now_ms

定义描述:

函数原型

long long aos_now_ms(void)

描述

返回内核启动至今的ms数

返回值

类型:long long;

1.6 aos_msleep

定义描述:

函数原型

void aos_msleep(int ms)

描述

将当前任务睡眠ms数

返回值

Ms:睡眠ms数

1.7 aos_init

定义描述:

函数原型

void aos_init(void)

描述

内核相关模块初始化

返回值

1.8 aos_start

定义描述:

函数原型

void aos_start(void)

描述

内核启动进入任务调度

返回值

2 任务相关

2.1 aos_task_new

定义描述:

函数原型

int aos_task_new(const char name, void (fn)(void ), voidarg, int stack_size)

描述

动态创建一个任务,任务句柄不返回,创建完后自动运行;

采用默认优先级AOS_DEFAULT_APP_PRI(32);

受宏RHINO_CONFIG_KOBJ_DYN_ALLOC开关控制

返回值

类型:int 返回成功或失败;

入参

name:任务名

fn:任务处理函数

Arg: 任务处理函数参数

stack_size:任务栈大小(单位:字节)

2.2 aos_task_new_ext

定义描述:

函数原型

int aos_task_new_ext(aos_task_t task, const charname, void (fn)(void), void *arg, int stack_size, int prio)

描述

动态创建一个任务,传入任务句柄,并指定优先级,创建完后自动运行受宏RHINO_CONFIG_KOBJ_DYN_ALLOC开关控制

返回值

类型:int 返回成功或失败;

入参

Task:任务句柄

name:任务名

fn:任务处理函数

Arg: 任务处理函数参数

stack_size:任务栈大小(单位:字节)

Prio:任务运行优先级 (范围:0~ RHINO_CONFIG_PRI_MAX-2; RHINO_CONFIG_PRI_MAX-1为idle任务)

2.3 aos_task_exit

定义描述:

函数原型

void aos_task_exit(int code)

描述

任务自动退出;受宏RHINO_CONFIG_KOBJ_DYN_ALLOC开关控制

返回值

入参

code:参数无作用

2.4 aos_task_name

定义描述:

函数原型

char *aos_task_name(void)

描述

返回任务名

返回值

类型:char *;任务名

入参

2.5 aos_task_key_create

定义描述:

函数原型

int aos_task_key_create(aos_task_key_t *key)

描述

返回任务私有数据区域的空闲块索引

返回值

类型:int;成功或失败

出参

Key: 任务私有数据区域的空闲块索引;范围0~RHINO_CONFIG_TASK_INFO_NUM-1;每索引块可存放一个void*地址

2.6 aos_task_key_delete

定义描述:

函数原型

void aos_task_key_delete(aos_task_key_t key)

描述

删除任务私有数据区域的空闲块索引

返回值

入参

Key: 任务私有数据区域的空闲块索引;范围0~RHINO_CONFIG_TASK_INFO_NUM-1;

2.7 aos_task_setspecific

定义描述:

函数原型

int aos_task_setspecific(aos_task_key_t key, void *vp)

描述

设置当前任务私有数据区域的某索引空闲块内容;受宏RHINO_CONFIG_TASK_INFO开关控制

返回值

Int:成功或失败

入参

Key: 当前任务私有数据区域的空闲块索引;范围0~RHINO_CONFIG_TASK_INFO_NUM-1;

Vp: 需要存放进入任务私有空闲区域的地址指针

2.8 aos_task_getspecific

定义描述:

函数原型

void *aos_task_getspecific(aos_task_key_t key)

描述

获取当前任务私有数据区域的某索引数据块内容;受宏RHINO_CONFIG_TASK_INFO开关控制

返回值

Void*:私有区域某索引内容

入参

Key: 任务私有数据区域的空闲块索引;范围0~RHINO_CONFIG_TASK_INFO_NUM-1;

3 mutex互斥锁

整体受RHINO_CONFIG_KOBJ_DYN_ALLOC开关控制

3.1 aos_mutex_new

定义描述:

函数原型

int aos_mutex_new(aos_mutex_t *mutex)

描述

动态创建一个mutex互斥锁

返回值

类型:int 返回成功或失败;

入参

mutex:互斥锁结构体指针;需要用户定义一个mutex结构体

3.2 aos_mutex_free

定义描述:

函数原型

void aos_mutex_free(aos_mutex_t *mutex)

描述

释放一个mutex互斥锁

返回值

入参

mutex:互斥锁结构体指针;

3.3 aos_mutex_lock

定义描述:

函数原型

int aos_mutex_lock(aos_mutex_t *mutex, unsigned int timeout)

描述

加锁一个mutex互斥锁,并设置超时时间;获取不到锁,当前任务阻塞

返回值

类型:int 返回成功或失败;超时返回RHINO_BLK_TIMEOUT

入参

mutex:互斥锁结构体指针;

Timeout:传入0表示不超时,立即返回;AOS_WAIT_FOREVER表示永久等待;其他数值表示超时时间,单位ms

3.4 aos_mutex_unlock

定义描述:

函数原型

int aos_mutex_unlock(aos_mutex_t *mutex)

描述

解锁一个mutex互斥锁,并唤醒一个高优先级阻塞任务

返回值

类型:int 返回成功或失败;

入参

mutex:互斥锁结构体指针;

3.5 aos_mutex_is_valid

定义描述:

函数原型

int aos_mutex_is_valid(aos_mutex_t *mutex)

描述

判断一个mutex互斥锁是否有效

返回值

类型:int 返回1表示有效,0表示无效

入参

mutex:互斥锁结构体指针;

4 sem信号量

整体受宏RHINO_CONFIG_KOBJ_DYN_ALLOC和RHINO_CONFIG_SEM开关控制

4.1 aos_sem_new

定义描述:

函数原型

int aos_sem_new(aos_sem_t *sem, int count)

描述

动态创建一个sem信号量

返回值

类型:int 返回成功或失败;

入参

sem:信号量结构体指针;需要用户定义一个sem结构体

Count:此sem的初始计数值,此值大于0,才能获取到信号量,获取一次,count计数减1;

4.2 aos_sem_free

定义描述:

函数原型

void aos_sem_free(aos_sem_t *sem)

描述

释放一个sem信号量

返回值

入参

sem:信号量结构体指针;

4.3 aos_sem_wait

定义描述:

函数原型

int aos_sem_wait(aos_sem_t *sem, unsigned int timeout)

描述

获取一个sem信号量;获取不到信号量,当前任务阻塞

返回值

类型:int 返回成功或失败; 超时返回RHINO_BLK_TIMEOUT

入参

sem:信号量结构体指针;

Timeout:传入0表示不超时,立即返回;AOS_WAIT_FOREVER表示永久等待;其他数值表示超时时间,单位ms

4.4 aos_sem_signal

定义描述:

函数原型

void aos_sem_signal(aos_sem_t *sem)

描述

释放一个sem信号量,并唤醒一个高优先级阻塞任务

返回值

入参

sem:信号量结构体指针;

4.5 aos_sem_is_valid

定义描述:

函数原型

int aos_sem_is_valid(aos_sem_t *sem)

描述

判断一个信号量sem是否有效

返回值

类型:int 返回1表示有效,0表示无效

入参

sem:信号量结构体指针;

4.6 aos_sem_signal_all

定义描述:

函数原型

void aos_sem_signal_all(aos_sem_t *sem)

描述

释放一个sem信号量,并唤醒所有阻塞任务

返回值

入参

sem:信号量结构体指针;

5 event事件

整体受宏RHINO_CONFIG_EVENT_FLAG开关控制

5.1 aos_event_new

定义描述:

函数原型

int aos_event_new(aos_event_t *event, unsigned int flags)

描述

创建一个事件

返回值

类型:int 返回成功或失败;

入参

event:event事件描述结构体指针;需要用户定义一个event结构体

flags: 此event事件的初始状态;通过int的32个bit的组合来表示事件

5.2 aos_event_free

定义描述:

函数原型

void aos_event_free(aos_event_t *event)

描述

释放一个事件

返回值

入参

event:事件描述结构体指针;

5.3 aos_event_get

定义描述:

函数原型

int aos_event_get(aos_event_t event,unsigned int flags,unsigned char opt,unsigned intactl_flags,unsigned int timeout)

描述

获取一个事件,根据其是否满足flags标志;获取不到事件,当前任务阻塞

返回值

类型:int 返回成功或失败; 超时返回RHINO_BLK_TIMEOUT

入参

event:event事件描述结构体指针;

Flags:期望获取的事件标志,和opt参数关联

Opt:事件获取策略;RHINO_AND 0x02u:AND策略,Flags的每个非0bit位都在event中存在;

RHINO_AND_CLEAR 0x03u: AND并清除策略,Flags的每个非0bit位都在event中存在;并清除event对应原始Flags数据;

RHINO_OR:0x00u: OR策略,Flags中任意非0bit在event中存在;

RHINO_OR_CLEAR:0x01u:OR并清除策略,Flags中任意非0bit在event中存在;并清除event对应原始Flags数据;

Timeout:传入0表示不超时,立即返回;AOS_WAIT_FOREVER表示永久等待;其他数值表示超时时间,单位ms

出参

actl_flags:如果返回成功,此参数表示该event的原始flag信息

5.4 aos_event_set

定义描述:

函数原型

int aos_event_set(aos_event_t *event, unsigned int flags, unsigned char opt)

描述

设置一个事件的flags标志;成功会释放阻塞任务

返回值

类型:int 返回成功或失败; 如果设置事件的新flags标志后,会唤醒等待该标志事件的阻塞任务

入参

event:event事件描述结构体指针;

Flags:设置的事件值

Opt:事件获取策略;

RHINO_AND 0x02u:AND策略,event中的flags与入参flags取与操作;

RHINO_OR:0x00u: OR策略,event中的flags与入参flags取或操作;

6 queue队列

整体受宏RHINO_CONFIG_BUF_QUEUE开关控制

6.1 aos_queue_new

定义描述:

函数原型

int aos_queue_new(aos_queue_t queue, voidbuf, unsigned int size, int max_msg)

描述

创建一个队列,指定缓冲区大小,以及最大数据单元大小

返回值

类型:int 返回成功或失败;

入参

queue:queue队列描述结构体指针;需要用户定义一个queue结构体

buf:此queue队列的缓冲区起点

Size:此queue队列的缓冲区大小

max_msg:一次存入缓冲区的最大数据单元

6.2 aos_queue_free

定义描述:

函数原型

void aos_queue_free(aos_queue_t *queue)

描述

删除一个队列,并释放阻塞在其中的任务

返回值

入参

queue:queue队列描述结构体指针

6.3 aos_queue_send

定义描述:

函数原型

int aos_queue_send(aos_queue_t queue, voidmsg, unsigned int size)

描述

向queue内发送数据,并唤醒存在的第一个高优先级阻塞任务

返回值

类型:int 返回成功或失败

入参

queue:queue队列描述结构体指针;

Msg:发送数据起始内存

Size:发送数据大小

6.4 aos_queue_recv

定义描述:

函数原型

int aos_queue_recv(aos_queue_t queue, unsigned int ms, voidmsg, unsigned int *size)

描述

从queue内收取数据,如没有数据则阻塞当前任务等待

返回值

类型:int 返回成功或失败; 超时返回RHINO_BLK_TIMEOUT

入参

queue:queue队列描述结构体指针;

ms:传入0表示不超时,立即返回;AOS_WAIT_FOREVER表示永久等待;其他数值表示超时时间,单位ms

出参

Msg:返回获取到的数据的内存指针

Size:返回获取到的数据大小

6.5 aos_queue_is_valid

定义描述:

函数原型

int aos_queue_is_valid(aos_queue_t *queue)

描述

判断一个队列queue是否有效

返回值

类型:int 返回1表示有效,0表示无效

入参

queue:队列结构体指针;

6.6 aos_queue_buf_ptr

定义描述:

函数原型

void aos_queue_buf_ptr(aos_queue_tqueue)

描述

获取一个队列queue的缓冲区起点

返回值

类型:void* 返回队列queue的缓冲区起点

入参

queue:队列结构体指针;

7 timer定时器

整体受宏RHINO_CONFIG_TIMER开关控制

7.1 aos_timer_new

定义描述:

函数原型

int aos_timer_new(aos_timer_t timer, void (fn)(void , void),void *arg, int ms, int repeat)

描述

创建一个定时器,并自动运行

返回值

类型:int 返回成功或失败

入参

timer:timer描述结构体指针;需要用户定义一个timer结构体

fn: 定时器处理函数

arg:定时器处理参数

ms:定时器超时时间(单位ms)

Repeat:周期或单次(1:周期,0:单次)

7.2 aos_timer_new_ext

定义描述:

函数原型

int aos_timer_new_ext(aos_timer_t timer, void (fn)(void , void),void *arg, int ms, int repeat, unsigned char auto_run)

描述

创建一个定时器,并设置是否自动运行

返回值

类型:int 返回成功或失败

入参

timer:timer描述结构体指针;需要用户定义一个timer结构体

fn: 定时器处理函数

arg:定时器处理参数

ms:定时器超时时间(单位ms)

Repeat:周期或单次(1:周期,0:单次)

auto_run:1表示自动运行,0表示需要调用start

7.3 aos_timer_free

定义描述:

函数原型

void aos_timer_free(aos_timer_t *timer)

描述

释放一个定时器

返回值

入参

timer:定时器描述结构体指针;

7.4 aos_timer_start

定义描述:

函数原型

int aos_timer_start(aos_timer_t *timer)

描述

启动一个定时器

返回值

类型:int 返回成功或失败;

入参

timer:定时器描述结构体指针;

7.5 aos_timer_stop

定义描述:

函数原型

int aos_timer_stop(aos_timer_t *timer)

描述

停止一个定时器

返回值

类型:int 返回成功或失败;

入参

timer:定时器描述结构体指针;

7.6 aos_timer_change

定义描述:

函数原型

int aos_timer_change(aos_timer_t *timer, int ms)

描述

修改一个定时器周期

返回值

类型:int 返回成功或失败;

入参

timer:定时器描述结构体指针;

Ms:新的定时器周期,单位ms

8 workqueue工作队列

整体受宏RHINO_CONFIG_WORKQUEUE开关控制

8.1 aos_workqueue_create

定义描述:

函数原型

int aos_workqueue_create(aos_workqueue_t *workqueue, int pri, int stack_size)

描述

创建一个工作队列,内部会创建一个任务关联workqueue

返回值

类型:int 返回成功或失败;

入参

workqueue:工作队列描述结构体指针;需要用户定义一个workqueue结构体

pri: 工作队列优先级,实际是关联任务优先级

stack_size:栈大小,单位:byte字节

8.2 aos_work_init

定义描述:

函数原型

int aos_work_init(aos_work_t work, void (fn)(void ), voidarg, int dly)

描述

初始化一个work,暂不执行

返回值

类型:int 返回成功或失败;

入参

work:work工作描述结构体指针;需要用户定义一个work结构体

fn: work回调处理函数

Arg:work回调处理参数

Dly:延迟处理时间,单位ms,0表示不延迟

8.3 aos_work_destroy

定义描述:

函数原型

void aos_work_destroy(aos_work_t *work)

描述

删除一个work

返回值

入参

work:work工作描述结构体指针;

8.4 aos_work_run

定义描述:

函数原型

int aos_work_run(aos_workqueue_t workqueue, aos_work_twork)

描述

运行一个work,使其在某worqueue内调度执行

返回值

类型:int 返回成功或失败;

入参

workqueue:工作队列描述结构体指针;

work:需要执行的工作描述结构体指针;

8.5 aos_work_sched

定义描述:

函数原型

int aos_work_sched(aos_work_t *work)

描述

运行一个work,使其在默认工作队列g_workqueue_default内调度执行

返回值

类型:int 返回成功或失败;

入参

work:需要执行的工作描述结构体指针;

8.6 aos_work_cancel

定义描述:

函数原型

int aos_work_cancel(aos_work_t *work)

描述

取消一个work,使其从所在的工作队列中删除

返回值

类型:int 返回成功或失败;

入参

work:需要取消的工作描述结构体指针;

9 内存

整体受宏RHINO_CONFIG_MM_TLF开关控制

9.1 aos_zalloc

定义描述:

函数原型

void *aos_zalloc(unsigned int size)

描述

申请内存并清0

返回值

类型:void * 返回申请到的内存起始指针;

入参

size:申请内存大小,单位:byte字节

9.2 aos_malloc

定义描述:

函数原型

void *aos_malloc(unsigned int size)

描述

申请内存,需要申请者清0

返回值

类型:void * 返回申请到的内存起始指针;

入参

size:申请内存大小,单位:byte字节

9.3 aos_realloc

定义描述:

函数原型

void aos_realloc(voidmem, unsigned int size)

描述

重置一块内存区域大小

返回值

类型:void * 返回申请到的内存起始指针;

入参

Mem:需要重置的内存指针,如果是NULL,则同aos_malloc

size:重置内存大小,单位:byte字节

如果mem不为空:

如果size>原内存大小,原内存区域尾部有空闲可用内存,则直接使用,此时返回值等于入参mem;如果当前内存块尾部区域不够,则重新申请size大小的内存,并将原始数据拷贝新区域,并释放原始内存块,此时返回值是块新地址。

9.4 aos_alloc_trace

定义描述:

函数原型

void aos_alloc_trace(void *addr, size_t allocator)

描述

设置某块内存的owner

返回值

入参

addr:需要设置的内存块

allocator:表示某owner值

9.5 aos_free

定义描述:

函数原型

void aos_free(void *mem)

描述

释放某块内存

返回值

入参

mem:需要释放的内存块

 类似资料: