60#ifndef _LOS_FUTEX_PRI_H
61#define _LOS_FUTEX_PRI_H
67#define FUTEX_REQUEUE 3
68#define FUTEX_WAKE_OP 5
69#define FUTEX_LOCK_PI 6
70#define FUTEX_UNLOCK_PI 7
71#define FUTEX_TRYLOCK_PI 8
72#define FUTEX_WAIT_BITSET 9
74#define FUTEX_PRIVATE 128
75#define FUTEX_MASK 0x3U
VOID OsFutexNodeDeleteFromFutexHash(FutexNode *node, BOOL isDeleteHead, FutexNode **headNode, BOOL *queueFlags)
从哈希桶上删除快锁
INT32 OsFutexWait(const UINT32 *userVaddr, UINT32 flags, UINT32 val, UINT32 absTime)
设置线程等待 | 向Futex表中插入代表被阻塞的线程的node
INT32 OsFutexRequeue(const UINT32 *userVaddr, UINT32 flags, INT32 wakeNumber, INT32 count, const UINT32 *newUserVaddr)
调整指定锁在Futex表中的位置
INT32 OsFutexWake(const UINT32 *userVaddr, UINT32 flags, INT32 wakeNumber)
唤醒一个被指定锁阻塞的线程
双向链表由内联函数实现 http://weharmonyos.com/openharmony/zh-cn/device-dev/kernel/kernel-small-apx-dll....
每个futex node对应一个被挂起的task ,key值唯一标识一把用户态锁,具有相同key值的node被queue_list串联起来表示被同一把锁阻塞的task队列。