Files
RTOS/Kernel/SingleCore/os_port.h
T

102 lines
2.6 KiB
C
Raw Normal View History

2026-05-19 11:49:22 +08:00
#ifndef INCLUDED_OS_PORT_H
#define INCLUDED_OS_PORT_H
2026-05-27 23:30:31 +08:00
#ifndef INCLUDED_CPU_H
#include <cpu.h>
#endif /*INCLUDED_CPU_H*/
2026-05-19 11:49:22 +08:00
#ifndef INCLUDED_OS_TYPES_H
#include <os_types.h>
#endif /*INCLUDED_OS_TYPES_H*/
#ifndef INCLUDED_OS_TASK_H
#include <os_task.h>
#endif /*INCLUDED_OS_TASK_H*/
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
extern volatile void* g_os_port_switch_from_sp;
extern volatile void* g_os_port_switch_to_sp;
extern volatile os_bool_t g_os_port_context_switch_flag;
/* ------------------------------------------------------------------------------------------------------------------ */
/* */
/*
* 根据 CPU 平台和型号的规定初始化任务栈
* @param entry - 任务入口
* @param param - 任务参数
* @param stack_base - 栈空间起始地址
* @param stack_size - 栈空间大小
* @param exit_entry - 任务退出时的返回地址
*/
os_stack_t os_port_cpu_stack_init(os_task_entry_t entry, void* param
, void* stack_base, os_size_t stack_size, void(*exit_entry)(void));
/*
* 请求上下文切换
* @param from_sp - 切换的源头任务栈指针
* @param to_sp - 切换的目标任务栈指针
2026-05-19 11:49:22 +08:00
*/
void os_port_context_switch(void* from_sp, void* to_sp);
/*
* 发出上下文切换的请求
*/
void os_port_send_context_switch_request(void);
/*
* 清除上下文切换的请求
*/
void os_port_clear_context_switch_request(void);
/*
* 任务切换完成后的回调函数,进行清理工作
*/
void os_port_on_switch_success(void);
/* ------------------------------------------------------------------------------------------------------------------ */
/* 中断管理 */
2026-05-27 23:30:31 +08:00
//void os_port_disable_irq(void);
//void os_port_enable_irq(void);
//os_uint_t os_port_save_disable_irq(void);
//void os_port_restore_irq(os_uint_t level);
//os_uint_t os_port_save_disable_irq_in_isr(void);
//void os_port_restore_irq_in_isr(os_uint_t level);
2026-05-19 11:49:22 +08:00
2026-05-27 23:30:31 +08:00
#ifndef os_port_disable_irq
#define os_port_disable_irq
#endif
2026-05-19 11:49:22 +08:00
2026-05-27 23:30:31 +08:00
#ifndef os_port_enable_irq
#define os_port_enable_irq
#endif
2026-05-19 11:49:22 +08:00
2026-05-27 23:30:31 +08:00
#ifndef os_port_save_disable_irq
#define os_port_save_disable_irq
#endif
2026-05-19 11:49:22 +08:00
2026-05-27 23:30:31 +08:00
#ifndef os_port_restore_irq
#define os_port_restore_irq
#endif
#ifndef os_port_save_disable_irq_in_isr
#define os_port_save_disable_irq_in_isr
#endif
#ifndef os_port_restore_irq_in_isr
#define os_port_restore_irq_in_isr
#endif
2026-05-19 11:49:22 +08:00
/* ------------------------------------------------------------------------------------------------------------------ */
/* 初始化和启动 */
void os_port_init(void);
void os_port_startup(void);
#endif /*INCLUDED_OS_PORT_H*/