CMSIS-RTOS2 文档翻译 之 参考(RTX5 特定的 API 之 事件功能(互斥函数))

本文档详述RTOS中互斥锁操作的各种事件,包括创建、获取、释放、删除等关键过程及其对应的函数,如EvrRtxMutexNew、EvrRtxMutexAcquire、EvrRtxMutexRelease等,并解释了事件记录器中显示的参数含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

互斥函数

事件功能

互斥函数生成的事件。更多...

函数

void EvrRtxMutexError (osMutexId_t mutex_id, int32_t status)
 互斥错误事件(错误)更多...
 
void EvrRtxMutexNew (const osMutexAttr_t *attr)
 互斥体上的事件创建和初始化(API)更多...
 
void EvrRtxMutexCreated (osMutexId_t mutex_id, const char *name)
 成功互斥的活动创造(Op)更多...
 
void EvrRtxMutexGetName (osMutexId_t mutex_id, const char *name)
 互斥锁名称检索(API)上的事件 更多...
 
void EvrRtxMutexAcquire (osMutexId_t mutex_id, uint32_t timeout)
 关于互斥锁获取的事件(API)更多...
 
void EvrRtxMutexAcquirePending (osMutexId_t mutex_id, uint32_t timeout)
 挂起互斥的事件获得(Op)更多...
 
void EvrRtxMutexAcquireTimeout (osMutexId_t mutex_id)
 互斥锁上的事件获取超时(Op)更多...
 
void EvrRtxMutexAcquired (osMutexId_t mutex_id, uint32_t lock)
 成功互斥的事件获得(Op)更多...
 
void EvrRtxMutexNotAcquired (osMutexId_t mutex_id)
 不成功互斥的事件获得(Op)更多...
 
void EvrRtxMutexRelease (osMutexId_t mutex_id)
 关于互斥发布(API)的事件 更多...
 
void EvrRtxMutexReleased (osMutexId_t mutex_id, uint32_t lock)
 成功互斥发布活动(Op)更多...
 
void EvrRtxMutexGetOwner (osMutexId_t mutex_id, osThreadId_t thread_id)
 互斥锁所有者检索(API)上的事件 更多...
 
void EvrRtxMutexDelete (osMutexId_t mutex_id)
 互斥删除(API)上的事件 更多...
 
void EvrRtxMutexDestroyed (osMutexId_t mutex_id)
 成功互斥删除事件(Op)更多...
 

 

描述

函数文档

void EvrRtxMutexError(osMutexId_t mutex_id,
  int32_t status 
 )  

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID 或 ID 未知时为 NULL。
[in]status扩展执行状态。

当互斥管理例程由于错误而完成执行时,会生成事件 MutexError

status 参数指示执行状态,可以是 osStatus_t 代码之一,也可以是下表中汇总的扩展执行状态代码之一。

扩展状态代码描述
osRtxErrorKernelNotReady内核调度程序未处于就绪状态。
osRtxErrorKernelNotRunning内核调度程序没有执行 - 没有正在运行的线程。
osRtxErrorInvalidControlBlock指定了具有无效对齐或大小的对象控制块。
osRtxErrorInvalidDataMemory指定了无效对齐或大小的对象数据存储器。
osRtxErrorInvalidThreadStack指定了无效对齐或大小的线程堆栈内存。
osRtxErrorInvalidPriority指定了无效的线程优先级。
osRtxErrorThreadNotJoinable指定的线程不可连接。
osRtxErrorMutexNotOwned指定的互斥锁不归当前运行的线程所有。
osRtxErrorMutexNotLocked指定的互斥锁未锁定。
osRtxErrorMutexLockLimit达到的最大递归互斥锁数。
osRtxErrorSemaphoreCountLimit达到了信号量计数限制。
osRtxErrorTZ_InitContext_S安全上下文内存系统初始化失败。
osRtxErrorTZ_AllocContext_S安全上下文内存分配失败。
osRtxErrorTZ_FreeContext_S安全上下文内存释放失败。
osRtxErrorTZ_LoadContext_S安全上下文加载失败。
osRtxErrorTZ_SaveContext_S安全上下文保存失败。

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。
  • status : 执行状态代码。

 

void EvrRtxMutexNew(const osMutexAttr_tattr) 

参数

[in]attr互斥属性。

调用函数 osMutexNew 时会生成事件 MutexNew

事件记录器中的值显示:

  • attr : 互斥锁属性的内存地址,如果未指定,则为 0。

如果在 API 调用中提供了互斥锁属性,则它们也会在事件记录器中详细说明。

 

void EvrRtxMutexCreated(osMutexId_t mutex_id,
  const char * name 
 )  

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。
[in]name指向互斥对象名称的指针。

当函数 osMutexNew 成功创建互斥对象时,将生成事件 MutexCreated

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。

 

void EvrRtxMutexGetName(osMutexId_t mutex_id,
  const char * name 
 )  

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。
[in]name指向互斥对象名称的指针。

调用函数 osMutexGetName 并且其执行结果已知时,将生成事件 MutexGetName

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。
  • name : 检索名称字符串的内存地址(如果发生故障,则为 0)。

 

void EvrRtxMutexAcquire(osMutexId_t mutex_id,
  uint32_t timeout 
 )  

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。
[in]timeout超时值,如果没有超时,则为 0。

调用函数 osMutexAcquire 时会生成事件 MutexAcquire

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。
  • timeout : 超时值。

 

void EvrRtxMutexAcquirePending(osMutexId_t mutex_id,
  uint32_t timeout 
 )  

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。
[in]timeout超时值,如果没有超时,则为 0。

当函数 osMutexAcquire 阻止当前正在运行的线程并等待互斥锁变为可用时,将生成事件 MutexAcquirePending

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。
  • timeout : 超时值。

 

void EvrRtxMutexAcquireTimeout(osMutexId_t mutex_id) 

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。

等待互斥锁变为可用时生成的事件 MutexAcquireTimeout 由于等待超时过期而中止。

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。

 

void EvrRtxMutexAcquired(osMutexId_t mutex_id,
  uint32_t lock 
 )  

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。
[in]lock当前锁定互斥锁对象的次数。

当函数 osMutexAcquire 成功获取互斥锁时,将生成事件 MutexAcquired

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。
  • lock : 当前锁定计数器状态。

 

void EvrRtxMutexNotAcquired(osMutexId_t mutex_id) 

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。

当函数 osMutexAcquire 在没有超时的情况下返回并且未获取互斥锁时,将生成事件 MutexNotAcquired

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。

 

void EvrRtxMutexRelease(osMutexId_t mutex_id) 

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。

调用函数 osMutexRelease 时会生成事件 MutexRelease

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。

 

void EvrRtxMutexReleased(osMutexId_t mutex_id,
  uint32_t lock 
 )  

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。
[in]lock当前锁定互斥锁对象的次数。

当函数 osMutexRelease 成功释放互斥锁时,会生成事件 MutexReleased

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。
  • lock : 当前锁定计数器状态。

 

void EvrRtxMutexGetOwner(osMutexId_t mutex_id,
  osThreadId_t thread_id 
 )  

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。
[in]thread_idosThreadNew osThreadGetId 获取的线程 ID。

当调用函数 osMutexGetOwner 并且其执行结果已知时,将生成事件 MutexGetOwner

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。
  • thread_id : 检索所有者线程 ID(如果发生故障或未锁定互斥锁,则为 0)

 

void EvrRtxMutexDelete(osMutexId_t mutex_id) 

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。

调用函数 osMutexDelete 时会生成事件 MutexDelete

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。

 

void EvrRtxMutexDestroyed(osMutexId_t mutex_id) 

参数

[in]mutex_idosMutexNew 获取的互斥锁 ID。

当函数 osMutexDelete 成功删除互斥锁对象时,将生成事件 MutexDestroyed

事件记录器中的值显示:

  • mutex_id : 互斥锁 ID。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值