[kernel]rt_thread_suspend_to_list函数补充#10963
[kernel]rt_thread_suspend_to_list函数补充#10963Kurngsy wants to merge 13 commits intoRT-Thread:masterfrom
Conversation
|
|
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: kernelReviewers: GorrayLi ReviewSun hamburger-os lianux-mm wdfk-prog xu18838022837 Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2025-11-21 17:26 CST)
📝 Review Instructions
|
|
LGTM |
|
作者可以看下这个PR,以及相关描述: |
|
@Rbb666 已修改,我之前理解得不对 |
There was a problem hiding this comment.
Pull Request Overview
This PR aims to enhance the rt_thread_suspend_to_list function in the RT-Thread kernel by improving its behavior when handling already-suspended threads. The changes introduce logic to stop timers when re-suspending threads, allow suspend state upgrades (from INTERRUPTIBLE to KILLABLE/UNINTERRUPTIBLE), and restore an assertion to check that only the current thread can suspend itself when in RUNNING state. Most of the changes are code formatting improvements to align with RT-Thread coding standards.
Key Changes
- Enhanced already-suspended thread handling with timer stopping and suspend flag upgrading
- Restored self-suspension assertion for RUNNING state threads
- Code formatting improvements throughout the file (spacing, alignment)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Map suspend_flag to corresponding thread suspend state values and update suspend state if stricter flag is requested.
| rt_sched_unlock_n_resched(slvl); | ||
| } | ||
|
|
||
| static rt_err_t _thread_init(struct rt_thread *thread, |
There was a problem hiding this comment.
这个PR不建议格式化除了修改部分的内容,要不然review很麻烦
| else | ||
| { | ||
| rt_err_t rt_err = -RT_EINVAL; | ||
|
|
|
commit太多了 麻烦重新提交一下? |
拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
作为一个rtthread的初学者,对该函数的实现产生了疑惑,尤其是if (stat == RT_THREAD_SUSPEND)部分, 当一线程用该函数试图挂起其他线程时(注释中已说明禁止)该函数将返回OK, 因为很多情况下一线程运行时 其他线程都是被延时挂起让出的。 在阅读了函数注释后我猜测项目组原本的意图可能为以下之一:
。该函数本身具有较高权限 能挂起其他线程,所以注释警告不应如此做
。该函数在本身只能挂起自身 不能挂起其他线程,所以注释说明并报错
。该函数只考虑了挂起自身的情况 挂起其他线程可能会未知错误,所以注释警告
但是现在的函数实现不属于以上情况, 不应仅返回OK , 且不应存在挂起后挂起(在旧版本为断言),说明函数设置了余量来应对用户行为,以下是对余量的进一步补充
你的解决方案是什么 (what is your solution)
。区分挂起与延迟挂起,挂起应重置计时器,并在覆盖时报告。
。将挂起状态按照rtdef细分NTERRUPTIBLE, KILLABLE, UNINTERRUPTIBLE,并可使挂起状态升级。
请提供验证的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