用途:互斥锁控制块结构
来源:kernel/include/os_dummy.h:101
struct dummy_mutex
{
os_list_node_t task_list_head_dummy; /* Block task list head */
os_list_node_t resource_node_dummy; /* Node in resource list */
os_list_node_t hold_node_dummy;
dummy_task_t *owner_dummy; /* Mutex owner */
uint32_t lock_count_dummy; /* Current lock count */
os_bool_t is_recursive_dummy; /* Support recursive call. */
uint8_t object_inited_dummy; /* If mutex object is inited, value is OS_KOBJ_INITED */
uint8_t object_alloc_type_dummy; /* Indicates whether memory is allocated dynamically or statically,
value is OS_ALLOC_TYPE_STATIC or OS_KOBJ_ALLOC_TYPE_DYNAMIC */
uint8_t wake_type_dummy; /* The type to wake up blocking tasks, value is OS_MUTEX_WAKE_TYPE_PRIO
or OS_MUTEX_WAKE_TYPE_FIFO */
uint8_t original_priority_dummy;
char name_dummy[OS_NAME_MAX + 1]; /* Mutex name */
os_spinlock_t lock_dummy; /* Spin lock used under SMP */
};
typedef struct dummy_mutex dummy_mutex_t;
typedef dummy_mutex_t *os_mutex_id;
| 字段 | 类型 | 说明 |
|---|
task_list_head_dummy | os_list_node_t | 阻塞任务链表头 |
resource_node_dummy | os_list_node_t | 资源列表节点 |
hold_node_dummy | os_list_node_t | 持有节点 |
| 字段 | 类型 | 说明 |
|---|
owner_dummy | dummy_task_t * | 互斥锁所有者 |
| 字段 | 类型 | 说明 |
|---|
lock_count_dummy | uint32_t | 当前锁定计数 |
is_recursive_dummy | os_bool_t | 是否支持递归调用 |
| 字段 | 类型 | 说明 |
|---|
object_inited_dummy | uint8_t | 对象是否已初始化(OS_KOBJ_INITED) |
object_alloc_type_dummy | uint8_t | 内存分配类型(静态或动态) |
| 字段 | 类型 | 说明 |
|---|
wake_type_dummy | uint8_t | 唤醒阻塞任务的类型(优先级或 FIFO) |
original_priority_dummy | uint8_t | 原始优先级 |
| 字段 | 类型 | 说明 |
|---|
name_dummy | char[] | 互斥锁名称 |
lock_dummy | os_spinlock_t | SMP 架构下使用的自旋锁 |
typedef dummy_mutex_t *os_mutex_id;
说明:互斥锁 ID 类型,实际上是互斥锁控制块指针
| 函数 | 说明 |
|---|
os_mutex_create() | 创建互斥锁 |
os_mutex_destroy() | 销毁互斥锁 |
os_mutex_lock() | 加锁 |
os_mutex_unlock() | 解锁 |
os_mutex_recursive_lock() | 递归加锁 |
os_mutex_recursive_unlock() | 递归解锁 |
os_mutex_set_wake_type() | 设置唤醒类型 |
os_mutex_get_owner() | 获取所有者 |