Matrix653 内核互斥锁

更新时间:
2024-02-29
下载文档

Matrix653 内核互斥锁

本节将介绍 Matrix653 内核互斥锁的使用。本节详细定义在 mx_kernel_mutex.h 头文件中。

内核互斥锁相关数据类型

类型描述
MX_NORMAL_MUTEX_TYPE常规互斥锁类型
MX_SAFE_MUTEX_TYPE安全互斥锁类型

MX_NORMAL_MUTEX_TYPE

常规互斥锁类型为MX_NORMAL_MUTEX_TYPE,它们是由内核互斥锁声明的,内核互斥锁的数据类型为 MX_KERN_MUTEX_TYPE

MX_SAFE_MUTEX_TYPE

安全互斥锁类型为MX_SAFE_MUTEX_TYPE,它们是由内核互斥锁声明的,内核互斥锁的数据类型为 MX_KERN_MUTEX_TYPE

typedef struct {
    MX_PROCESS_TYPE              *owner_process;
    LOCK_COUNT_TYPE              lock_cnt;
    MX_BOOL                      safety;
    MX_IPC_OBJECT_TYPE           ipc_object;
} MX_KERN_MUTEX_TYPE;

typedef MX_KERN_MUTEX_TYPE  MX_SAFE_MUTEX_TYPE;
typedef MX_KERN_MUTEX_TYPE  MX_NORMAL_MUTEX_TYPE;
参数说明
owner_process所有者流程
lock_cnt锁定计数
safety安全性
*ipc_objectIPC类指针

内核常规互斥锁相关 API

常规互斥锁仅用于分区内进程间的互斥。 下表展示了常规互斥锁相关的 API:

API描述
mx_normal_mutex_init初始化常规互斥锁
mx_normal_mutex_lock常规互斥锁加锁
mx_normal_mutex_unlock常规互斥锁解锁

mx_normal_mutex_init()

  • 描述 常规互斥锁初始化

  • 函数原型

void mx_normal_mutex_init (
     MX_NORMAL_MUTEX_TYPE    *mutex,
     QUEUING_DISCIPLINE_TYPE queuing_discipline);
  • 参数
输入/输出参数描述
[in]mutex指向常规互斥锁的指针
[in]queuing_discipline队列规则
  • 返回值

  • 注意事项

  • 示例

mx_normal_mutex_lock()

  • 描述 常规互斥锁加锁

  • 函数原型

RETURN_CODE_TYPE mx_normal_mutex_lock (
        MX_NORMAL_MUTEX_TYPE     *mutex,
        SYSTEM_TIME_TYPE         time_out);
  • 参数
输入/输出参数描述
[in]mutex指向常规互斥锁的指针
[in]time_out超时
  • 返回值 ERROR CODE

  • 注意事项

  • 示例

mx_normal_mutex_unlock()

  • 描述 常规互斥锁解锁

  • 函数原型

RETURN_CODE_TYPE mx_normal_mutex_unlock (
        MX_NORMAL_MUTEX_TYPE     *mutex);
  • 参数
输入/输出参数描述
[in]mutex指向常规互斥锁的指针
  • 返回值 ERROR CODE

  • 注意事项

  • 示例

内核安全互斥锁相关 API

常规互斥锁即可用于分区内进程间的互斥,又可用于分区间进程的互斥。当某个驱动被多分区调用时,那么必须使用内核安全互斥锁进行互斥。 所谓的安全即,当某个进程获取安全互斥锁后,释放前这段时间内,该进程不能够被杀死或挂起。 下表展示了常规互斥锁相关的 API:

API描述
mx_safe_mutex_init初始化安全互斥锁
mx_safe_mutex_lock安全互斥锁加锁
mx_safe_mutex_unlock安全互斥锁解锁

mx_safe_mutex_init()

  • 描述 安全互斥锁初始化

  • 函数原型

void mx_safe_mutex_init (
       /*in */ MX_SAFE_MUTEX_TYPE       *mutex,
       /*in */ QUEUING_DISCIPLINE_TYPE  queuing_discipline,
       /*in */ MX_IPC_DOMAIN_TYPE       inter_partition);
  • 参数
输入/输出参数描述
[in]mutex指向安全互斥锁的指针
[in]queuing_discipline队列规则
[in]inter_partition在分区间或进程间使用
  • 返回值

  • 注意事项

  • 示例

mx_safe_mutex_lock()

  • 描述 安全互斥锁加锁

  • 函数原型

RETURN_CODE_TYPE mx_safe_mutex_lock (
       /*in */ MX_SAFE_MUTEX_TYPE       *mutex,
       /*in */ SYSTEM_TIME_TYPE         time_out);
  • 参数
输入/输出参数描述
[in]mutex指向安全互斥锁的指针
[in]time_out超时
  • 返回值 ERROR CODE

  • 注意事项

  • 示例

mx_safe_mutex_unlock()

  • 描述 安全互斥锁解锁

  • 函数原型

RETURN_CODE_TYPE mx_safe_mutex_unlock (
       /*in */ MX_SAFE_MUTEX_TYPE       *mutex);
  • 参数
输入/输出参数描述
[in]mutex指向安全互斥锁的指针
  • 返回值 ERROR CODE

  • 注意事项

  • 示例

MX_SAFE_MUTEX_TYPE   mutex;

mx_safe_mutex_init(&mutex, FIFO, MX_IPC_DOMAIN_INTER_PARTITION);

mx_safe_mutex_lock(&mutex, INFINITE_TIME_VALUE);
...
mx_safe_mutex_unlock(&mutex);

文档内容是否对您有所帮助?
有帮助
没帮助