79 lines
2.1 KiB
C
79 lines
2.1 KiB
C
#ifndef INCLUDED_OS_PORT_H
|
|||
|
|
#define INCLUDED_OS_PORT_H
|
||
|
|
|
||
|
|
#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 - 切换的目标任务栈
|
||
|
|
*/
|
||
|
|
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);
|
||
|
|
|
||
|
|
/* ------------------------------------------------------------------------------------------------------------------ */
|
||
|
|
/* 中断管理 */
|
||
|
|
|
||
|
|
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);
|
||
|
|
|
||
|
|
/* ------------------------------------------------------------------------------------------------------------------ */
|
||
|
|
/* 初始化和启动 */
|
||
|
|
|
||
|
|
void os_port_init(void);
|
||
|
|
|
||
|
|
void os_port_startup(void);
|
||
|
|
|
||
|
|
#endif /*INCLUDED_OS_PORT_H*/
|