os_scheduler_mode_switch
所属模块:调度系统 | 类型:调度模式切换函数
函数简介
:contentReference[oaicite:0]{index=0} 用于在系统调度模式之间切换,
支持“通用模式”和“实时模式”两种运行策略。
该接口主要用于动态调整系统调度行为,在实时性要求与通用吞吐之间进行平衡控制。
函数原型
char os_scheduler_mode_switch(unsigned char id);
参数说明
| 参数 |
说明 |
| id |
调度模式选择:0=通用模式,1=实时模式 |
返回值
1 表示切换成功,-1 表示参数非法或状态不允许切换。
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : scheduler_mode_switch.c
| - Author : 谭舒
| - Update date : 2026-09-19
| - Copyright(C) : 2026 HRTOS. All rights reserved.
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| INCLUDES |
------------------------------------------------------------------------*/
#include"hrtos_internal.h"
/*------------------------------------------------------------------------
| API FUNCTIONS |
------------------------------------------------------------------------*/
/**
* @brief 设置系统调度模式。
*
* @param[in] id 调度模式。
* 0:时间片模式。
* 1:优先级模式。
*
* @return 操作结果。
* @retval 1 调度模式切换成功。
* @retval -1 调度模式无效或当前已经处于指定模式。
*
* @note 切换到时间片模式时保存当前时间参数。
* 切换到优先级模式时恢复保存的时间参数,并调整相关时间计数。
*/
char os_scheduler_mode_switch(unsigned char id) //1优先级模式 0时间片模式
{
if((id==0)&&(OS_RTOS_YES==1))
{
OS_RTOS_YES=0;
OS_TIME_ONCE_BACKUP=OS_TIME_ONCE;
return 1;
}
else if((id==1)&&(OS_RTOS_YES==0))
{
OS_RTOS_YES=1;
OS_TIME_XY=OS_TIME_XY+OS_TIME_ONCE_BACKUP-OS_TIME_ONCE;
OS_TIME_ONCE=OS_TIME_ONCE_BACKUP;
return 1;
}
return -1;
}
/*------------------------------------------------------------------------
| END OF FILE: scheduler_mode_switch.c |
------------------------------------------------------------------------*/
使用示例
void system_mode_demo(void)
{
// 切换到通用模式
os_scheduler_mode_switch(0);
// 切换到实时模式
os_scheduler_mode_switch(1);
}
注意事项
调度模式切换会影响系统时间基准与实时调度行为,应避免在高负载或关键临界区频繁切换,以免造成时间漂移或调度不一致。