update System/sv_task.c.

Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
This commit is contained in:
零中断延迟的RTOS
2025-04-15 10:22:11 +00:00
committed by Gitee
parent 60fa446c1b
commit b42f00cb8e
+13 -5
View File
@@ -4,8 +4,8 @@
* @brief 任务服务
* @details 仅在任务中调用并执行。
* @author 迟凯峰
* @version V1.2.2
* @date 2025.04.13
* @version V1.2.3
* @date 2025.04.15
******************************************************************************/
#include "os_var.h"
@@ -414,14 +414,19 @@ bool su_take_mutex(s_mutex_tsp hmut, s_delay_t tick)
sv_insert_block_list(&hmut->htask);
sv_task_remove_ready(s_task_current);
s_task_current->status = OS_STATUS_BLOCKED;
s_task_current->blocktype = OS_BLOCKED_MUTEX;
if(s_task_current->pri > hmut->otask->pri){
#if SYSCFG_SAMEPRISCHEDULE
sv_set_taskpri(hmut->otask, s_task_current->pri);
s_tasknode_tsp link = hmut->otask;
s_task_current->link = link;
do{
sv_set_taskpri(link, s_task_current->pri);
link = link->link;
}while(link != OS_NULL);
#else
sv_set_taskpri(hmut->otask, SYSCFG_TASKPRIORITY - 1);
sv_set_taskpri(hmut->otask, s_taskpri_ceiling++);
#endif
}
s_task_current->blocktype = OS_BLOCKED_MUTEX;
s_task_current->timer = tick;
s_task_current->handle = hmut;
su_kernel_unlock0_psv();
@@ -457,6 +462,9 @@ void su_back_mutex(s_mutex_tsp hmut)
if(!hmut->mutex){
if(s_task_current->pri > hmut->opri){
sv_set_taskpri(s_task_current, hmut->opri);
#if !SYSCFG_SAMEPRISCHEDULE
s_taskpri_ceiling--;
#endif
}
if(hmut->htask != OS_NULL){
sv_delete_block_list(&hmut->htask);