Huawei LiteOS提供一套POSIX适配接口,支持的接口参见下表。
头文件
|
接口名
|
类型
|
说明
|
mqueue.h
|
mq_close
|
消息队列
|
关闭消息队列
|
mqueue.h
|
mq_getattr
|
消息队列
|
获取消息队列属性
|
mqueue.h
|
mq_open
|
消息队列
|
打开消息队列
|
mqueue.h
|
mq_receive
|
消息队列
|
接受一个消息队列中的消息
|
mqueue.h
|
mq_send
|
消息队列
|
发送一个消息到消息队列
|
mqueue.h
|
mq_setattr
|
消息队列
|
设置消息队列属性
|
mqueue.h
|
mq_timedreceive
|
消息队列
|
定时接收消息
|
mqueue.h
|
mq_timedsend
|
消息队列
|
定时发送消息
|
mqueue.h
|
mq_unlink
|
消息队列
|
移除消息队列
|
pthread.h
|
pthread_attr_destroy
|
pthread
|
删除线程的属性
|
pthread.h
|
pthread_attr_getdetachstate
|
pthread
|
获取脱离状态的属性
|
pthread.h
|
pthread_attr_getinheritsched
|
pthread
|
获取任务调度方式
|
pthread.h
|
pthread_attr_getschedparam
|
pthread
|
获取任务调度参数
|
pthread.h
|
pthread_attr_getschedpolicy
|
pthread
|
获取任务调度策略属性,Huawei LiteOS目前仅支持SCHED_RR调度策略,不支持SCHED_OTHERSCHED_FIFOSCHED_RR
|
pthread.h
|
pthread_attr_getscope
|
pthread
|
获取任务范围属性,Huawei LiteOS任务使用范围目前只支持PTHREAD_SCOPE_SYSTEM,不支持PTHREAD_SCOPE_PROCESS
|
pthread.h
|
pthread_attr_getstackaddr
|
pthread
|
获取任务堆栈的起始地址
|
pthread.h
|
pthread_attr_getstacksize
|
pthread
|
获取任务属性堆栈大小
|
pthread.h
|
pthread_attr_init
|
pthread
|
初始化任务属性
|
pthread.h
|
pthread_attr_setdetachstate
|
pthread
|
设置任务属性分离状态
|
pthread.h
|
pthread_attr_setinheritsched
|
pthread
|
设置任务调度方式
|
pthread.h
|
pthread_attr_setschedparam
|
pthread
|
设置任务调度参数,Huawei LiteOS设置任务优先级的参数值越小,任务在系统中的优先级就越高,与标准库函数相反。注意:需要将pthread_attr_t任务属性的inheritsched字段设置为PTHREAD_EXPLICIT_SCHED,否则设置的任务调度优先级将不会生效,系统默认设置为PTHREAD_INHERIT_SCHED
|
pthread.h
|
pthread_attr_setschedpolicy
|
pthread
|
设置任务调度策略属性,Huawei LiteOS目前仅支持SCHED_RR调度策略,不支持SCHED_OTHERSCHED_FIFOSCHED_RR
|
pthread.h
|
pthread_attr_setscope
|
pthread
|
设置任务范围属性,Huawei LiteOS任务使用范围目前只支持PTHREAD_SCOPE_SYSTEM,不支持PTHREAD_SCOPE_PROCESS
|
pthread.h
|
pthread_attr_setstackaddr
|
pthread
|
设置任务堆栈的起始地址
|
pthread.h
|
pthread_attr_setstacksize
|
pthread
|
设置任务属性堆栈大小
|
pthread.h
|
pthread_cancel
|
pthread
|
取消任务,Huawei LiteOS仅支持先设置PTHREAD_CANCEL_ASYNCHRONOUS状态,再调用pthread_cancel取消任务
|
pthread.h
|
pthread_cond_broadcast
|
pthread
|
唤醒所有被阻塞在条件变量上的线程
|
pthread.h
|
pthread_cond_destroy
|
pthread
|
释放条件变量
|
pthread.h
|
pthread_cond_init
|
pthread
|
初始化条件变量
|
pthread.h
|
pthread_cond_signal
|
pthread
|
释放被阻塞在条件变量上的一个线程
|
pthread.h
|
pthread_cond_timedwait
|
pthread
|
超时时限内等待一个条件变量,当超时等待时间为相对时间,Huawei LiteOS不能处理早已超时的情况
|
pthread.h
|
pthread_cond_wait
|
pthread
|
等待一个条件变量
|
pthread.h
|
pthread_condattr_destroy
|
pthread
|
删除存储并使属性对象无效
|
pthread.h
|
pthread_condattr_getclock
|
pthread
|
获取任务时钟
|
pthread.h
|
pthread_condattr_getpshared
|
pthread
|
获取条件变量属性,Huawei LiteOS只支持获取PTHREAD_PROCESS_PRIVATE条件变量属性
|
pthread.h
|
pthread_condattr_init
|
pthread
|
初始化条件变量属性
|
pthread.h
|
pthread_condattr_setclock
|
pthread
|
设置任务时钟
|
pthread.h
|
pthread_condattr_setpshared
|
pthread
|
设置条件变量属性
|
pthread.h
|
pthread_create
|
pthread
|
创建任务
|
pthread.h
|
pthread_detach
|
pthread
|
分离任务
|
pthread.h
|
pthread_equal
|
pthread
|
判断是否为同一任务
|
pthread.h
|
pthread_exit
|
pthread
|
任务退出
|
pthread.h
|
pthread_getschedparam
|
pthread
|
获取任务优先级及调度参数,Huawei LiteOS目前仅支持SCHED_RR调度策略,不支持SCHED_OTHERSCHED_FIFOSCHED_RR
|
pthread.h
|
pthread_getspecific
|
pthread
|
获取调用线程的键绑定
|
pthread.h
|
pthread_join
|
pthread
|
阻塞任务
|
pthread.h
|
pthread_key_create
|
pthread
|
分配用于标识进程中线程特定数据的键
|
pthread.h
|
pthread_key_delete
|
pthread
|
销毁现有线程特定数据键
|
pthread.h
|
pthread_mutex_destroy
|
pthread
|
删除互斥锁
|
pthread.h
|
pthread_mutex_getprioceiling
|
pthread
|
获取互斥锁的优先级上限
|
pthread.h
|
pthread_mutex_init
|
pthread
|
初始化互斥锁
|
pthread.h
|
pthread_mutex_lock
|
pthread
|
申请互斥锁(阻塞操作)
|
pthread.h
|
pthread_mutex_setprioceiling
|
pthread
|
设置互斥锁的优先级上限
|
pthread.h
|
pthread_mutex_timedlock
|
pthread
|
申请互斥锁(只在设定时间内阻塞)
|
pthread.h
|
pthread_mutex_trylock
|
pthread
|
尝试申请互斥锁(非阻塞)
|
pthread.h
|
pthread_mutex_unlock
|
pthread
|
释放互斥锁
|
pthread.h
|
pthread_mutexattr_destroy
|
pthread
|
销毁互斥锁属性对象
|
pthread.h
|
pthread_mutexattr_getprioceiling
|
pthread
|
获取互斥锁属性的优先级上限
|
pthread.h
|
pthread_mutexattr_getprotocol
|
pthread
|
获取互斥锁属性的协议属性
|
pthread.h
|
pthread_mutexattr_gettype
|
pthread
|
获取互斥锁的类型属性
|
pthread.h
|
pthread_mutexattr_init
|
pthread
|
初始化互斥锁属性对象
|
pthread.h
|
pthread_mutexattr_setprioceiling
|
pthread
|
设置互斥锁属性的优先级上限
|
pthread.h
|
pthread_mutexattr_setprotocol
|
pthread
|
设置互斥锁属性的协议属性
|
pthread.h
|
pthread_mutexattr_settype
|
pthread
|
设置互斥锁的类型属性
|
pthread.h
|
pthread_once
|
pthread
|
一次性操作任务
|
pthread.h
|
pthread_self
|
pthread
|
获取任务ID
|
pthread.h
|
pthread_setcancelstate
|
pthread
|
任务cancel功能开关
|
pthread.h
|
pthread_setcanceltype
|
pthread
|
设置任务cancel类型
|
pthread.h
|
pthread_setschedparam
|
pthread
|
设置任务优先级及调度策略,Huawei LiteOS目前仅支持SCHED_RR调度策略,不支持SCHED_OTHERSCHED_FIFOSCHED_RR
|
pthread.h
|
pthread_setschedprio
|
pthread
|
设置任务优先级
|
pthread.h
|
pthread_setspecific
|
pthread
|
设置线程数据
|
pthread.h
|
pthread_testcancel
|
pthread
|
cancel任务
|
sched.h
|
sched_get_priority_max
|
调度函数
|
获取系统支持的最大的优先级值
|
sched.h
|
sched_get_priority_min
|
调度函数
|
获取系统支持的最小的优先级值
|
sched.h
|
sched_yield
|
调度函数
|
使当前线程放弃占用CPU
|
semaphore.h
|
sem_destroy
|
信号量
|
销毁无名信号量
|
semaphore.h
|
sem_getvalue
|
信号量
|
获取指定信号量的值
|
semaphore.h
|
sem_init
|
信号量
|
初始化无名信号量
|
semaphore.h
|
sem_post
|
信号量
|
释放一个指定的无名信号量
|
semaphore.h
|
sem_timedwait
|
信号量
|
申请一个超时等待的无名信号量,当超时等待时间为相对时间时,Huawei LiteOS不能处理早已超时的情况
|
semaphore.h
|
sem_trywait
|
信号量
|
尝试申请一个无名信号量
|
semaphore.h
|
sem_wait
|
信号量
|
申请等待一个无名信号量
|
time.h
|
nanosleep
|
时间函数
|
进程以纳秒为单位休眠,但Huawei LiteOS目前只支持tick(默认10ms)休眠,第二个参数不支持,且传参所设置的秒数不能大于4292秒
|
time.h
|
timer_create
|
时间函数
|
创建定时器,只支持SIGEV_THREAD在线程内处理(Huawei LiteOS有两种实现方式,在线程或者在中断中处理timer的回调函数,具体采用哪种方式由宏开关LOSCFG_BASE_CORE_SWTMR_IN_ISR控制);clock_id只支持CLOCK_REALTIME
|
time.h
|
timer_delete
|
时间函数
|
删除定时器
|
time.h
|
timer_getoverrun
|
时间函数
|
获取定时器超时次数
|
time.h
|
timer_gettime
|
时间函数
|
获得一个定时器剩余时间
|
time.h
|
timer_settime
|
时间函数
|
初始化或者撤销定时器
|
Huawei LiteOS还提供了一套POSIX NP适配接口,来提供POSIX对SMP的支持。以下接口只有在开启多核模式下可以操作亲和性,在单核模式下直接返回ENOERR。
文件名
|
接口名
|
说明
|
pthread.h
|
pthread_attr_setaffinity_np
|
设置attr亲和性属性
|
pthread.h
|
pthread_attr_getaffinity_np
|
获取attr亲和性属性
|
pthread.h
|
pthread_setaffinity_np
|
设置pthread任务的亲和性
|
pthread.h
|
pthread_getaffinity_np
|
获取pthread任务的亲和性
|
Huawei LiteOS的POSIX接口中,有一些未支持,具体参见下表。
头文件
|
接口名
|
mqueue.h
|
mq_notify
|
pthread.h
|
pthread_atfork
|
pthread.h
|
pthread_attr_getguardsize
|
pthread.h
|
pthread_attr_getstack
|
pthread.h
|
pthread_attr_setguardsize
|
pthread.h
|
pthread_attr_setstack
|
pthread.h
|
pthread_barrier_destroy
|
pthread.h
|
pthread_barrier_init
|
pthread.h
|
pthread_barrier_wait
|
pthread.h
|
pthread_barrierattr_destroy
|
pthread.h
|
pthread_barrierattr_getpshared
|
pthread.h
|
pthread_barrierattr_init
|
pthread.h
|
pthread_barrierattr_setpshared
|
pthread.h
|
pthread_getconcurrency
|
pthread.h
|
pthread_getcpuclockid
|
pthread.h
|
pthread_mutex_consistent
|
pthread.h
|
pthread_mutexattr_getpshared
|
pthread.h
|
pthread_mutexattr_getrobust
|
pthread.h
|
pthread_mutexattr_setpshared
|
pthread.h
|
pthread_mutexattr_setrobust
|
pthread.h
|
pthread_rwlock_destroy
|
pthread.h
|
pthread_rwlock_init
|
pthread.h
|
pthread_rwlock_rdlock
|
pthread.h
|
pthread_rwlock_timedrdlock
|
pthread.h
|
pthread_rwlock_timedwrlock
|
pthread.h
|
pthread_rwlock_tryrdlock
|
pthread.h
|
pthread_rwlock_trywrlock
|
pthread.h
|
pthread_rwlock_unlock
|
pthread.h
|
pthread_rwlock_wrlock
|
pthread.h
|
pthread_rwlockattr_destroy
|
pthread.h
|
pthread_rwlockattr_getpshared
|
pthread.h
|
pthread_rwlockattr_init
|
pthread.h
|
pthread_rwlockattr_setpshared
|
pthread.h
|
pthread_setconcurrency
|
pthread.h
|
pthread_spin_destroy
|
pthread.h
|
pthread_spin_init
|
pthread.h
|
pthread_spin_lock
|
pthread.h
|
pthread_spin_trylock
|
pthread.h
|
pthread_spin_unlock
|
sched.h
|
sched_getparam
|
sched.h
|
sched_getscheduler
|
sched.h
|
sched_rr_get_interval
|
sched.h
|
sched_setparam
|
sched.h
|
sched_setscheduler
|
sem.h
|
semctl
|
sem.h
|
semget
|
sem.h
|
semop
|
semaphore.h
|
sem_close
|
semaphore.h
|
sem_open
|
semaphore.h
|
sem_unlink
|
signal.h
|
kill
|
signal.h
|
killpg
|
signal.h
|
psiginfo
|
signal.h
|
psignal
|
signal.h
|
pthread_kill
|
signal.h
|
pthread_sigmask
|
signal.h
|
raise
|
signal.h
|
sigaction
|
signal.h
|
sigaddset
|
signal.h
|
sigaltstack
|
signal.h
|
sigdelset
|
signal.h
|
sigemptyset
|
signal.h
|
sigfillset
|
signal.h
|
sighold
|
signal.h
|
sigignore
|
signal.h
|
siginterrupt
|
signal.h
|
sigismember
|
signal.h
|
sigpause
|
signal.h
|
sigpending
|
signal.h
|
sigprocmask
|
signal.h
|
sigqueue
|
signal.h
|
sigrelse
|
signal.h
|
sigsuspend
|
signal.h
|
sigtimedwait
|
signal.h
|
sigwait
|
signal.h
|
sigwaitinfo
|
signalfd.h
|
signalfd
|
下述表格为C++标准库/STL兼容规格。
说明:
支持异常和RTTI特性,其他特性由编译器支持;对于STL的特性,支持清单如下,其它特性暂不支持。
头文件
|
描述
|
<limits>
|
提供与基本数据类型相关的定义,例如,对于每个数值数据类型,它定义了可以表示出来的最大值和最小值以及二进制数字的位数
|
<new>
|
支持动态内存分配
|
头文件
|
描述
|
<utility>
|
定义重载的关系运算符,简化关系运算符的写入,它还定义了pair类型,该类型是一种模板类型,可以存储一对值。这些功能在库的其他地方使用
|
<functional>
|
定义了许多函数对象类型和支持函数对象的功能,函数对象是支持operator函数调用运算符的任意对象
|
<memory>
|
给容器、管理内存的函数和auto_ptr模板类定义标准内存分配器
|
头文件
|
描述
|
<string>
|
为字符串类型提供支持和定义,包括单字节字符串(由char组成)的string和多字节字符串(由wchar_t组成)
|
头文件
|
描述
|
<vector>
|
定义vector序列模板,这是一个大小可以重新设置的数组类型,比普通数组更安全、更灵活
|
<list>
|
定义list序列模板,这是一个序列的链表,常常在任意位置插入和删除元素
|
<deque>
|
定义deque序列模板,支持在开始和结尾的高效插入和删除操作
|
<queue>
|
为队列(先进先出)数据结构定义序列适配器queue和priority_queue
|
<stack>
|
为堆栈(后进先出)数据结构定义序列适配器stack
|
<map>
|
map是一个关联容器类型,允许根据唯一键值,按照升序存储
|
<set>
|
set是一个关联容器类型,用于以升序方式存储唯一值
|
<bitset>
|
为固定长度的位序列定义bitset模板,它可以看作固定长度的紧凑型bool数组
|
头文件
|
描述
|
<iterator>
|
给迭代器提供定义和支持
|
头文件
|
描述
|
<algorithm>
|
提供一组基于算法的函数,包括置换、排序、合并和搜索
|
头文件
|
描述
|
<complex>
|
支持复杂数值的定义和操作
|
<valarray>
|
支持数值矢量的操作
|
<numeric>
|
在数值序列上定义一组一般数学操作,例如accumulate和inner_product
|
头文件
|
描述
|
<mutex>
|
支持互斥锁的操作
|
<thread>
|
支持线程函数的操作
|
<condition_variable>
|
支持条件变量的操作
|
须知:
Huawei Liteos提供的memory,uninitialized_fill函数存在内存泄露,慎用。
CMSIS v1.0接口官方手册中包含了接口声明、入参介绍、返回值类型、接口使用条件等详细介绍,下面简要介绍Huawei LiteOS适配CMSIS v1.0接口的情况。
LiteOS目前已支持大部分CMSIS v1.0接口,接口声明在compat/cmsis/1.0/cmsis_os1.h,接口说明详见下表:
接口名
|
类型
|
说明
|
osThreadCreate
|
任务/线程类接口
|
创建一个任务
|
osThreadGetId
|
任务/线程类接口
|
获取当前的任务句柄
|
osThreadTerminate
|
任务/线程类接口
|
终止某个任务
|
osThreadYield
|
任务/线程类接口
|
切换至同优先级的就绪任务
|
osThreadSetPriority
|
任务/线程类接口
|
设置任务优先级
|
osThreadGetPriority
|
任务/线程类接口
|
获取任务优先级
|
osDelay
|
延时类接口
|
任务延时处理
|
osTimerCreate
|
定时器类接口
|
创建定时器
|
osTimerStart
|
定时器类接口
|
启动定时器(若定时器正在计时会先停止该定时器)
|
osTimerStop
|
定时器类接口
|
停止定时器
|
osTimerDelete
|
定时器类接口
|
删除定时器
|
osSignalSet
|
信号类接口
|
设置信号
|
osSignalClear
|
信号类接口
|
清除信号
|
osSignalWait
|
信号类接口
|
等待信号
|
osMutexCreate
|
互斥锁类接口
|
创建互斥锁
|
osMutexWait
|
互斥锁类接口
|
获取互斥锁(阻塞等待)
|
osMutexRelease
|
互斥锁类接口
|
释放互斥锁
|
osMutexDelete
|
互斥锁类接口
|
删除互斥锁
|
osSemaphoreCreate
|
信号量类接口
|
创建信号量
|
osSemaphoreWait
|
信号量类接口
|
获取信号量(阻塞等待)
|
osSemaphoreRelease
|
信号量类接口
|
释放信号量
|
osSemaphoreDelete
|
信号量类接口
|
删除信号量
|
osPoolCreate
|
块状内存类接口
|
创建块状内存池
|
osPoolAlloc
|
块状内存类接口
|
申请内存
|
osPoolCAlloc
|
块状内存类接口
|
申请内存并清零
|
osPoolFree
|
块状内存类接口
|
释放内存
|
osMessageCreate
|
指针消息类接口
|
创建消息队列(不带内容,一般为数据指针)
|
osMessagePut
|
指针消息类接口
|
往消息队列里放入消息
|
osMessageGet
|
指针消息类接口
|
从消息队列里获取消息
|
osMailCreate
|
内容消息类接口
|
创建消息队列(带内容,可理解为在osMessage的基础上增加osPool)
|
osMailAlloc
|
内容消息类接口
|
申请内存(用于存放消息内容)
|
osMailCAlloc
|
内容消息类接口
|
申请内存并清零(用于存放消息内容)
|
osMailPut
|
内容消息类接口
|
往消息队列里放入消息
|
osMailGet
|
内容消息类接口
|
从消息队列里获取消息
|
osMailFree
|
内容消息类接口
|
释放已申请的内存
|
接口名
|
类型
|
说明
|
osWait
|
延时类接口
|
等待任一信号或消息发生
|
考虑接口的易用性和Huawei LiteOS内部机制与CMSIS标准接口的差异,在适配CMSIS v1.0接口时,对部分接口进行了修改,详见下表:
接口名
|
类型
|
说明
|
osTimerStart
|
定时器类接口
|
增加一种定时器类型osTimerDelay,与osTimerOnce同为单次定时器,差别在于osTimerOnce超时后会删除定时器,但osTimerDelay不会,可以重复启动(osTimerStart)
|
osBinarySemaphoreCreate
|
信号量类接口
|
新增接口,用于创建二值信号量
|
CMSIS v2.0接口官方手册中包含了接口声明、入参介绍、返回值类型、接口使用条件等详细介绍,下面简要介绍Huawei LiteOS适配CMSIS v2.0接口的情况。
LiteOS目前已支持大部分CMSIS v2.0接口,接口声明在compat/cmsis/2.0/cmsis_os2.h,接口说明详见下表:
接口名
|
类型
|
说明
|
osKernelInitialize
|
内核类接口
|
初始化操作系统
|
osKernelGetInfo
|
内核类接口
|
获取系统版本信息
|
osKernelGetState
|
内核类接口
|
获取系统状态(osThreadState_t)
|
osKernelStart
|
内核类接口
|
启动操作系统
|
osKernelLock
|
内核类接口
|
锁内核(锁调度)
|
osKernelUnlock
|
内核类接口
|
解锁内核(解锁调度)
|
osKernelRestoreLock
|
内核类接口
|
恢复内核锁状态
|
osKernelGetTickCount
|
内核类接口
|
获取系统启动后时间(单位:tick)
|
osKernelGetTickFreq
|
内核类接口
|
获取每秒的tick数
|
osKernelGetSysTimerCount
|
内核类接口
|
获取系统启动后时间(单位:cycle)
|
osKernelGetSysTimerFreq
|
内核类接口
|
获取每秒的CPU cycle数
|
osThreadNew
|
任务/线程类接口
|
创建任务
|
osThreadGetName
|
任务/线程类接口
|
获取任务名
|
osThreadGetId
|
任务/线程类接口
|
获取任务句柄
|
osThreadGetState
|
任务/线程类接口
|
获取任务状态
|
osThreadGetStackSize
|
任务/线程类接口
|
获取任务栈大小
|
osThreadGetStackSpace
|
任务/线程类接口
|
获取未使用过的任务栈空间
|
osThreadSetPriority
|
任务/线程类接口
|
设置任务优先级
|
osThreadGetPriority
|
任务/线程类接口
|
获取任务优先级
|
osThreadYield
|
任务/线程类接口
|
切换至同优先级的就绪任务
|
osThreadSuspend
|
任务/线程类接口
|
挂起任务(恢复前无法得到调度)
|
osThreadResume
|
任务/线程类接口
|
恢复任务
|
osThreadTerminate
|
任务/线程类接口
|
终止任务(建议不要主动终止任务)
|
osThreadGetCount
|
任务/线程类接口
|
获取已创建的任务数量
|
osThreadFlagsSet
|
任务事件类接口
|
写入指定事件
|
osThreadFlagsClear
|
任务事件类接口
|
清除指定事件
|
osThreadFlagsGet
|
任务事件类接口
|
获取当前任务事件
|
osThreadFlagsWait
|
任务事件类接口
|
等待指定事件
|
osDelay
|
延时类接口
|
任务延时(单位:tick)
|
osDelayUntil
|
指针消息类接口
|
延时至某一时刻(单位:tick)
|
osTimerNew
|
定时器类接口
|
创建定时器
|
osTimerGetName
|
定时器类接口
|
获取定时器名称(目前固定返回NULL)
|
osTimerStart
|
定时器类接口
|
启动定时器(若定时器正在计时会先停止该定时器)
|
osTimerStop
|
定时器类接口
|
停止定时器
|
osTimerIsRunning
|
定时器类接口
|
定时器是否在计时中
|
osTimerDelete
|
定时器类接口
|
删除定时器
|
osEventFlagsNew
|
事件类接口
|
创建事件(与任务事件ThreadFlags的差别在于有独立的句柄和控制块)
|
osEventFlagsGetName
|
事件类接口
|
获取事件名称(目前固定返回NULL)
|
osEventFlagsSet
|
事件类接口
|
写入指定事件
|
osEventFlagsClear
|
事件类接口
|
清楚指定事件
|
osEventFlagsGet
|
事件类接口
|
获取当前事件值
|
osEventFlagsWait
|
事件类接口
|
等待指定事件
|
osEventFlagsDelete
|
事件类接口
|
删除事件
|
osMutexNew
|
互斥锁类接口
|
创建互斥锁
|
osMutexGetName
|
互斥锁类接口
|
获取互斥锁名称(目前固定返回NULL)
|
osMutexAcquire
|
互斥锁类接口
|
获取互斥锁(阻塞等待)
|
osMutexRelease
|
互斥锁类接口
|
释放互斥锁
|
osMutexGetOwner
|
互斥锁类接口
|
获取持有该互斥锁的任务句柄
|
osMutexDelete
|
互斥锁类接口
|
删除互斥锁
|
osSemaphoreNew
|
信号量类接口
|
创建信号量
|
osSemaphoreGetName
|
信号量类接口
|
获取信号量名称(目前固定返回NULL)
|
osSemaphoreAcquire
|
信号量类接口
|
获取信号量(阻塞等待)
|
osSemaphoreRelease
|
信号量类接口
|
释放信号量
|
osSemaphoreGetCount
|
信号量类接口
|
获取信号量的计数值
|
osSemaphoreDelete
|
信号量类接口
|
删除信号量
|
osMessageQueueNew
|
消息队列类接口
|
创建消息队列
|
osMessageQueueGetName
|
消息队列类接口
|
获取消息队列名称(目前固定返回NULL)
|
osMessageQueuePut
|
消息队列类接口
|
往消息队列里放入消息
|
osMessageQueueGet
|
消息队列类接口
|
从消息队列里获取消息
|
osMessageQueueGetCapacity
|
消息队列类接口
|
获取消息队列节点数量
|
osMessageQueueGetMsgSize
|
消息队列类接口
|
获取消息队列节点大小
|
osMessageQueueGetCount
|
消息队列类接口
|
获取当前消息队列里的消息数量
|
osMessageQueueGetSpace
|
消息队列类接口
|
获取当前消息队列里的剩余消息数量
|
osMessageQueueDelete
|
消息队列类接口
|
删除消息队列
|
接口名
|
类型
|
说明
|
osKernelSuspend
|
任务/线程类接口
|
挂起内核阻止调度,一般用于低功耗处理,目前Huawei LiteOS已提供Tickless、Runstop等低功耗机制,暂未适配该接口
|
osKernelResume
|
任务/线程类接口
|
同上
|
osThreadJoin
|
任务/线程类接口
|
目前通过oSThreadNew创建的任务是相互解耦的,暂未适配该接口
|
osThreadExit
|
任务/线程类接口
|
Huawei LiteOS任务支持自删除,任务退出前不需要调用osThreadExit
|
osThreadEnumerate
|
任务/线程类接口
|
获取已创建的任务列表,目前未适配该接口,用户可以调用Huawei LiteOS的LOS_TaskInfoGet等维测接口获取任务状态
|
osMemoryPoolAlloc
|
块状内存类接口
|
接口需要支持超时时间内申请内存块,目前Huawei LiteOS暂未提供这种机制
|
osMemoryPoolFree
|
块状内存类接口
|
由于osMemoryPoolAlloc未实现,剩余osMemPool类接口暂不实现
|
osMemoryPoolGetCapacity
|
块状内存类接口
|
同上
|
osMemoryPoolGetBlockSize
|
块状内存类接口
|
同上
|
osMemoryPoolGetCount
|
块状内存类接口
|
同上
|
osMemoryPoolGetSpace
|
块状内存类接口
|
同上
|
osMemoryPoolDelete
|
块状内存类接口
|
同上
|
osMessageQueueReset
|
消息队列类接口
|
操作系统暂不提供清空队列接口,由用户对队列内容进行操作,避免资源泄漏或其他异常
|
考虑接口的易用性和Huawei LiteOS内部机制与CMSIS标准接口的差异,在适配CMSIS v2.0接口时,对部分接口进行了修改,详见下表:
接口名
|
类型
|
说明
|
osKernelGetTickCount
|
内核类接口
|
标准接口返回类型uint32_t,Huawei LiteOS适配为uint64_t
|
osKernelGetTick2ms
|
内核类接口
|
新增接口,用于获取系统启动后时间(单位:ms)
|
osMs2Tick
|
内核类接口
|
新增接口,用于毫秒与系统Tick转换
|
osThreadNew
|
任务/线程类接口
|
优先级范围仅支持[osPriorityLow3, osPriorityHigh]
|
osThreadSetPriority
|
任务/线程类接口
|
同上
|
osDelayUntil
|
延时类接口
|
标准接口入参类型uint32_t,Huawei LiteOS适配为uint64_t
|