os_schedule_request
所属模块:调度系统 | 类型:调度触发函数
函数简介
os_schedule_request 用于请求系统重新调度任务,
通过强制触发Timer0中断,使系统在中断上下文中执行调度逻辑。
该方式避免直接调用调度器,提高系统安全性与一致性。
函数原型
char os_schedule_request(char id);
参数说明
| 参数 |
说明 |
| id |
保留参数(当前未使用,用于后续扩展) |
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : schedule_request.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 调度请求参数,当前版本保留用于后续扩展。
*
* @return 操作结果。
* @retval 1 调度请求设置成功。
*
* @note 本函数不直接调用调度器,而是通过触发系统时钟中断,
* 使系统在中断处理过程中执行任务调度。
* 调用后设置调度请求标志,并触发 Timer0 中断。
*/
char os_schedule_request(char id) //通知系统重新调度--调度触发点
{
id = id; /* 保留参数,便于后续扩展 */
OS_SCHED_REASON=1;//调度触发位
TF0=1;//T0中断
return 1;
}
/*------------------------------------------------------------------------
| END OF FILE: schedule_request.c |
------------------------------------------------------------------------*/
使用示例
void task_yield()
{
os_schedule_request(0);
}
注意事项
该函数不会直接调用调度器,而是通过中断机制触发调度,
必须确保Timer0中断已正确配置。