os_scheduler_mode_switch

所属模块:调度系统 | 类型:调度模式切换函数

API Metadata

函数ID:os_scheduler_mode_switch
模块:scheduler
类型:mode switch
嵌套深度:1

函数简介

: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); }

注意事项

调度模式切换会影响系统时间基准与实时调度行为,应避免在高负载或关键临界区频繁切换,以免造成时间漂移或调度不一致。

相关推荐