Files
cosyos/System/sv_int_loc.h
T
零中断延迟的RTOSandGitee 56f17ae01a update CosyOS-内核文件.
Signed-off-by: 零中断延迟的RTOS <cosyos@139.com>
2026-07-21 12:08:36 +00:00

61 lines
1.8 KiB
C

/**************************************************************************//**
* @item CosyOS-III Kernel
* @file sv_int_loc.h
* @brief 中断本地服务
* @details 在用户中断中调用并直接在本地执行。
* @author 迟凯峰
* @version v3.0.0
* @date 2026.07.21
******************************************************************************/
#ifndef __SV_INT_LOC_H
#define __SV_INT_LOC_H
#include "os_redef.h"
bool si_take_binary (s_binary_tsp hbin);
bool si_take_quemut (s_msgque_tsp hque);
void *si_recv_msg_c51(s_msgque_tsp hque);
void *si_recv_msg_n51(s_msgque_tsp hque);
void *si_recv_mail (s_mailbox_tsp hmbox);
m_fetion_t si_recv_fetion (s_tionbox_tsp htbox);
/**
@addtogroup CosyOS_内核服务
@{
*//**
\defgroup 中断本地服务
\brief 在用户中断中调用并直接在本地执行的服务。
@{
*/
#define sISV_TakeBin(bin) si_take_binary(&bin) /*!< 获取二值信号量 */
#define sISV_RecvFetion(tbox) si_recv_fetion(&tbox) /*!< 接收飞信 */
#define sISV_RecvMail(mbox) si_recv_mail(&mbox) /*!< 接收邮件 */
#if defined ( __C51__ )
#define sISV_RecvMsg(que) (si_take_quemut((s_msgque_tsp)&que) ? si_recv_msg_c51((s_msgque_tsp)&que) : OS_NULL) /*!< C51接收消息 */
#else
#define sISV_RecvMsg(que) si_recv_msg_n51((s_msgque_tsp)&que) /*!< 非51接收消息 */
#endif
/** 归还二值信号量 */
#define sISV_BackBin(bin) \
do{ \
__mx_MMB(); \
bin.binary = true; \
}while(false)
/** 查询标志组 */
#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