Files
cosyos/System/sv_int_loc.h
T
零中断延迟的RTOS b0d893c355 update System/sv_int_loc.h.
Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
2024-11-15 09:02:52 +00:00

51 lines
1.8 KiB
C

/**************************************************************************//**
* @item CosyOS-II Kernel
* @file sv_int_loc.h
* @brief 中断本地服务
* @details 仅在用户中断中调用,并在本地执行。
* @author 迟凯峰
* @version V3.1.0
* @date 2024.11.11
******************************************************************************/
#ifndef __SV_INT_LOC_H
#define __SV_INT_LOC_H
void si_task_schedule(void);
s_bool_t si_take_binary (s_binary_tsp hbin);
m_fetion_t si_recv_fetion (s_tionbox_tsp htbox);
void *si_recv_mail (s_mailbox_tsp hmbox);
s_bool_t si_take_quemut (s_queue_tsp hque);
void *si_recv_msg_c51 (s_queue_tsp hque);
void *si_recv_msg_n51 (s_queue_tsp hque);
/**
@addtogroup 中断本地服务
@{
*/
#define sISV_TaskSchedule si_task_schedule() /*!< 任务调度 */
#define sISV_TakeBin(bin) si_take_binary(&bin) /*!< 获取二值信号量 */
#define sISV_RecvFetion(tbox) si_recv_fetion(&tbox) /*!< 接收飞信 */
#define sISV_RecvMail(mbox) si_recv_mail(&mbox) /*!< 接收邮件 */
#define sISV_GetTime(t) s_memcpy(t, iWhichGVar_Read ? s_rtc[0] : s_rtc[1], sizeof(s_rtc[0])) /*!< 获取时间 */
#if SYSCFG_MCUCORE == 8051
#define sISV_RecvMsg(que) (si_take_quemut((s_queue_tsp)&que) ? si_recv_msg_c51((s_queue_tsp)&que) : OS_NULL) /*!< C51 接收消息 */
#else
#define sISV_RecvMsg(que) si_recv_msg_n51((s_queue_tsp)&que) /*!< 非51 接收消息 */
#endif
/** 查询标志组 */
#define sISV_QueryFlagGroup(group) \
( \
sizeof(group) == 1 ? *(s_u8_t *)&group ? true : false \
: sizeof(group) == 2 ? *(s_u16_t *)&group ? true : false \
: sizeof(group) == 4 ? *(s_u32_t *)&group ? true : false \
: false \
)
/** @} */
#endif