mirror of
https://gitee.com/cosyos/cosyos.git
synced 2026-08-17 08:42:13 +08:00
61 lines
1.8 KiB
C
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
|