
# POSIX支持接口
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                    | 时间函数    | 初始化或者撤销定时器                                                                                                                                                                 |
   
