Conversation
|
test.zip |
|
这个代码因为修改幅度比较大,所以整个文件做了格式化操作。还有已经过了测试,稳定性没问题。 |
|
因为调度代码被执行的比较频繁,所以做了性能优化,cortex-m4在100mhz 下性能最低提升15% |
|
你们可以先跑这个文件的稳定性,完全没问题在拉入。我已经测试了10多天了。 |
|
不同的PR,可以用不同的分支名称,不需要放到一起。 |
|
CI有编译报错,请先解决下: 代码可以用:formatting 脚本格式化下 |
| rt_ubase_t highest_ready_priority; | ||
|
|
||
| to_thread = _scheduler_get_highest_priority_thread(&highest_ready_priority); | ||
| _scheduler_update_highest_priority(); |
There was a problem hiding this comment.
这里为什么需要先更新最高优先级的任务?什么情况下,需要手动更新这个?
ok |
我测试了famatting 和clang-format效果一样 |
This reverts commit 2774d65.
📌 Code Review Assignment🏷️ Tag: kernelPath: Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2025-06-11 05:07 UTC)
📝 Review Instructions
|
|
建议先描述一下本次PR要解决什么问题,以及解决方案是什么?以便reviewer能更容易理解修改代码的意图。@htl5241 |
不停的新建任务,退出任务,就会丢失任务。还有就是优化性能,这次pr性能提升很多。 |
还有就是你看这个pr都描述了,还有其他维护人员留了两行字就不见了。 |
src/scheduler_up.c
Outdated
| #include <rtdbg.h> | ||
|
|
||
| rt_list_t rt_thread_priority_table[RT_THREAD_PRIORITY_MAX]; | ||
| rt_list_t rt_thread_priority_table[RT_THREAD_PRIORITY_MAX]; |
src/scheduler_up.c
Outdated
| extern volatile rt_atomic_t rt_interrupt_nest; | ||
| static rt_int16_t rt_scheduler_lock_nest; | ||
| rt_uint8_t rt_current_priority; | ||
| static rt_int16_t rt_scheduler_lock_nest; |
src/scheduler_up.c
Outdated
| { | ||
| #if RT_THREAD_PRIORITY_MAX > 32 | ||
| RT_SCHED_PRIV(thread).number = RT_SCHED_PRIV(thread).current_priority >> 3; /* 5bit */ | ||
| RT_SCHED_PRIV(thread).number = RT_SCHED_PRIV(thread).current_priority >> 3; /* 5bit */ |
src/scheduler_up.c
Outdated
| RT_SCHED_PRIV(thread).high_mask = 1L << (RT_SCHED_PRIV(thread).current_priority & 0x07); /* 3bit */ | ||
| RT_SCHED_PRIV(thread).high_mask = | ||
| 1L | ||
| << (RT_SCHED_PRIV(thread).current_priority & 0x07); /* 3bit */ |
src/scheduler_up.c
Outdated
| RT_SCHED_PRIV(thread).number_mask = 0; | ||
| #if RT_THREAD_PRIORITY_MAX > 32 | ||
| RT_SCHED_PRIV(thread).number = 0; | ||
| RT_SCHED_PRIV(thread).number = 0; |
src/scheduler_up.c
Outdated
|
|
||
| /* tick init */ | ||
| RT_SCHED_PRIV(thread).init_tick = tick; | ||
| RT_SCHED_PRIV(thread).init_tick = tick; |
src/scheduler_up.c
Outdated
| if (critical_level != rt_scheduler_lock_nest) | ||
| { | ||
| int dummy = 1; | ||
| int dummy = 1; |
|
clang-format.zip |
|
src/scheduler_up.c
Outdated
| { | ||
| if (rt_thread_self()) | ||
| { | ||
| if (rt_thread_self()) { |
There was a problem hiding this comment.
根据rt_thread的编码规范,花括号应独占一行。这里需要回退。
src/scheduler_up.c
Outdated
|
|
||
| for (offset = 0; offset < RT_THREAD_PRIORITY_MAX; offset ++) | ||
| { | ||
| for (offset = 0; offset < RT_THREAD_PRIORITY_MAX; ++offset) { |
src/scheduler_up.c
Outdated
| { | ||
| need_insert_from_thread = 1; | ||
| } | ||
| if (rt_scheduler_lock_nest == 0 && rt_thread_ready_priority_group) { |
src/scheduler_up.c
Outdated
| need_insert_from_thread = RT_FALSE; | ||
| curr_thread = rt_thread_self(); | ||
|
|
||
| if ((RT_SCHED_CTX(curr_thread).stat & RT_THREAD_STAT_MASK) == RT_THREAD_RUNNING) { |
There was a problem hiding this comment.
花括号独占一行,代码中其它同样的情况请一并修改。
你们如果不接收我也没必要和你们来回扯皮,给你们复现的程序自己去测试。 |
|
给复现程序了,自己不去复现,性能也不去做测试,只卡你能不能融入主线。还有就是项目这样那样限制你格式,那就提供能用的clang-format。所以说国内的开源项目特抽象。 |
|
scheduler_up.zip |




拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
你的解决方案是什么 (what is your solution)
请提供验证的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