互斥量

类型定义

typedef aos_hdl_t aos_mutex_t
 

函数

aos_status_t aos_mutex_create (aos_mutex_t *mutex, uint32_t options)
 
void aos_mutex_free (aos_mutex_t *mutex)
 
aos_status_t aos_mutex_lock (aos_mutex_t *mutex, uint32_t timeout)
 
aos_status_t aos_mutex_unlock (aos_mutex_t *mutex)
 
aos_status_t aos_mutex_new (aos_mutex_t *mutex)
 
bool aos_mutex_is_valid (aos_mutex_t *mutex)
 

详细描述

提供AliOS Things系统内核互斥量功能的基础API.

类型定义说明

◆ aos_mutex_t

AOS互斥量对象句柄类型

在文件 kernel.h108 行定义.

函数说明

◆ aos_mutex_create()

aos_status_t aos_mutex_create ( aos_mutex_t mutex,
uint32_t  options 
)

创建互斥量,该接口在内核中创建一个互斥量对象,并返回该对象的句柄。

错误处理
如果互斥量对象句柄为NULL,则返回-EINVAL。 如果在创建的过程中内存不足,则返回-ENOMEM。
参数
[out]mutex互斥量对象句柄,该接口会创建一个互斥量对象,成功后把对象的地址通过此参数返回。
[in]options创建互斥量的选项,目前还没有支持的选项,待后续扩展。
返回
状态码
返回值
0创建互斥量成功
-EINVAL传入的参数非法
-ENOMEM内存不足

◆ aos_mutex_free()

void aos_mutex_free ( aos_mutex_t mutex)

销毁互斥量,该接口释放互斥量对象的资源,唤醒所有阻塞在该互斥量的任务。

错误处理
如果互斥量对象句柄参数为NULL, 或者互斥量对象非法(没有成功创建或者对象类型不是互斥量),则返回-EINVAL。
参数
[in]mutex互斥量对象句柄
返回

◆ aos_mutex_is_valid()

bool aos_mutex_is_valid ( aos_mutex_t mutex)

This function will check if mutex is valid. Deprecated, not Recommended.

参数
[in]mutexpointer to the mutex.
返回
false: invalid, true: valid.

◆ aos_mutex_lock()

aos_status_t aos_mutex_lock ( aos_mutex_t mutex,
uint32_t  timeout 
)

锁定互斥量,该接口申请获得一把互斥量锁,常被用于任务之间保护共享资源。 如果该互斥量锁当前没有其他任务持有,则当前任务能够立即获取这把锁并成功返回。 如果该互斥量锁当前被其他任务持有,同时指定AOS_NO_WAIT,则不等待立即返回错误-1。 如果该互斥量锁当前被其他任务持有,同时指定AOS_WAIT_FOREVER,则永远等待直到获得该互斥量锁。 等待时当前任务处于阻塞状态,等待该互斥量锁。

注解
注意内核中允许互斥量嵌套,如果任务再次获得自身持有的互斥量锁,则返回成功。
错误处理
如果互斥量对象句柄参数为NULL, 或者互斥量对象非法(没有成功创建或者对象类型不是互斥量),则返回-EINVAL。
参数
[in]mutex互斥量对象句柄。
[in]timeout超时时间(单位:ms)AOS_WAIT_FOREVER: 永远等待。 AOS_NO_WAIT: 不等待。
返回
状态码
返回值
0返回成功,此时当前任务获得这把互斥量锁。
-EINVAL参数非法
-ETIMEDOUT等待超时
-1其他操作

◆ aos_mutex_new()

aos_status_t aos_mutex_new ( aos_mutex_t mutex)

Alloc a mutex. Deprecated, not Recommended.

参数
[in]mutexpointer of mutex object, mutex object must be alloced, hdl pointer in aos_mutex_t will refer a kernel obj internally.
返回
0: success.

◆ aos_mutex_unlock()

aos_status_t aos_mutex_unlock ( aos_mutex_t mutex)

解锁互斥量,该接口释放自身持有的互斥量锁。 如果此时有其他任务阻塞在该互斥量锁上, 则从阻塞任务队列中挑选一个优先级最高的任务唤醒,使其继续。

注解
任务只能释放自身持有的互斥量锁,否则返回错误-EPERM。 内核中允许互斥量锁嵌套,如果进行过多次的互斥量锁定操作,注意需要进行相同次数的解锁操作,否则其他竞争的任务会一直阻塞。
错误处理
如果互斥量对象句柄参数为NULL, 或者互斥量对象非法(没有成功创建或者对象类型不是互斥量),则返回-EINVAL。
参数
[in]mutex互斥量对象句柄。
返回
状态码
返回值
0返回成功,
-EINVAL参数非法
-EPERM权限不够(释放其他任务持有的互斥量锁)