fix(kernel): properly release mutexes in _thread_detach_from_mutex() #10541
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
拉取/合并请求描述:(PR description)
fix(kernel): properly release mutexes in _thread_detach_from_mutex()
[
为什么提交这份PR (why to submit this PR)
在RT-Thread中,rt_thread_detach通过调用链_thread_detach_from_mutex->rt_mutex_release无法释放被分离线程持有的互斥锁,原因在于:rt_thread_detach要求调用线程与被分离线程不同,而rt_mutex_release则要求调用线程必须为锁的持有者,这两个相互矛盾的条件导致锁无法被正常释放。
你的解决方案是什么 (what is your solution)
可以通过重构互斥锁释放逻辑来解决这个问题:首先提取原始rt_mutex_release的核心实现为_rt_mutex_release函数,然后基于此实现新的rt_mutex_release,确保其行为与旧版本完全一致。这样既保持了原有接口的兼容性,又为后续扩展奠定了基础。
基于_rt_mutex_release,可以实现新的rt_mutex_force_release函数,该函数将绕过持有者检查逻辑。在_thread_detach_from_mutex流程中,用这个新函数替换原来的rt_mutex_release调用,这样即使当前线程不是互斥锁的持有者,也能正确释放被分离线程持有的锁资源。
请提供验证的bsp和config (provide the config and bsp)
]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up