-
Notifications
You must be signed in to change notification settings - Fork 5.2k
修复任务丢失,性能优化 #10355
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
修复任务丢失,性能优化 #10355
Conversation
test.zip |
这个代码因为修改幅度比较大,所以整个文件做了格式化操作。还有已经过了测试,稳定性没问题。 |
因为调度代码被执行的比较频繁,所以做了性能优化,cortex-m4在100mhz 下性能最低提升15% |
你们可以先跑这个文件的稳定性,完全没问题在拉入。我已经测试了10多天了。 |
不同的PR,可以用不同的分支名称,不需要放到一起。 |
CI有编译报错,请先解决下: 代码可以用:formatting 脚本格式化下 |
|
||
to_thread = _scheduler_get_highest_priority_thread(&highest_ready_priority); | ||
_scheduler_update_highest_priority(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这里为什么需要先更新最高优先级的任务?什么情况下,需要手动更新这个?
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-10 13:34 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]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
多余空格请去掉。
src/scheduler_up.c
Outdated
#if RT_THREAD_PRIORITY_MAX > 32 | ||
/* Maximum priority level, 256 */ | ||
rt_uint8_t rt_thread_ready_table[32]; | ||
#endif /* RT_THREAD_PRIORITY_MAX > 32 */ | ||
|
||
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; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
同上,去掉多余空格。
src/scheduler_up.c
Outdated
@@ -330,17 +418,33 @@ void rt_schedule(void) | |||
void rt_sched_thread_startup(struct rt_thread *thread) | |||
{ | |||
#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 */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
同上,去掉多余空格。
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 */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这行代码不必要分成三行。
src/scheduler_up.c
Outdated
@@ -353,12 +457,12 @@ void rt_sched_thread_init_priv(struct rt_thread *thread, rt_uint32_t tick, rt_ui | |||
/* don't add to scheduler queue as init thread */ | |||
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; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
同上,空格问题。
src/scheduler_up.c
Outdated
RT_SCHED_PRIV(thread).high_mask = 0; | ||
#endif /* RT_THREAD_PRIORITY_MAX > 32 */ | ||
|
||
/* tick init */ | ||
RT_SCHED_PRIV(thread).init_tick = tick; | ||
RT_SCHED_PRIV(thread).init_tick = tick; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
同上,空格问题。
src/scheduler_up.c
Outdated
@@ -468,31 +538,31 @@ void rt_exit_critical_safe(rt_base_t critical_level) | |||
{ | |||
if (critical_level != rt_scheduler_lock_nest) | |||
{ | |||
int dummy = 1; | |||
int dummy = 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
同上,不必要的空格。
clang-format.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