/* * @file OsIf.h *================================================================================================== * Project : YTMicro AUTOSAR 4.4.0 MCAL * Platform : ARM * Peripheral : OsIf * Dependencies : none * * Autosar Version : V4.4.0 * Autosar Revision : ASR_REL_4_4_REV_0000 * SW Version : V2.3.0 * * (c) Copyright 2020-2025 Yuntu Microelectronics co.,ltd. * All Rights Reserved. ==================================================================================================*/ #ifndef OSIF_H #define OSIF_H /** * @file OsIf.h * * @addtogroup OSIF_MODULE * @{ */ #ifdef __cplusplus extern "C" { #endif /*================================================================================================== INCLUDE FILES ==================================================================================================*/ #include "Mcal.h" #include "Std_Types.h" #include "OsIf_Cfg.h" #include "Platform_Cfg.h" #if defined(USING_OS_AUTOSAROS) #include "Os.h" #endif /* defined(USING_OS_AUTOSAROS) */ /* * ISR macro definition */ #ifdef USING_OS_AUTOSAROS /* ISR() macro defined by Autosar OS*/ #else /* Baremetal or FreeRTOS case */ #if defined (SPEC_INTERRUPT_FUNC) #define ISR(IsrName) SPEC_INTERRUPT_FUNC void IsrName(void) #else #define ISR(IsrName) void IsrName(void) #endif /* defined (USE_SW_VECTOR_MODE) */ #endif /* USING_OS_AUTOSAROS */ #if !defined(USING_OS_AUTOSAROS) #ifdef MCAL_ENABLE_USER_MODE_SUPPORT /* prototypes implemented in OsIf.c */ uint32 Sys_GoToUser_Return(uint32 SwitchToSupervisor, uint32 ReturnValue); uint32 Sys_GoToSupervisor(void); uint32 Sys_GoToUser(void); void Sys_SuspendInterrupts(void); void Sys_ResumeInterrupts(void); #endif /* def MCAL_ENABLE_USER_MODE_SUPPORT */ uint8 Sys_GetCoreID(void); #endif /* !defined(USING_OS_AUTOSAROS) */ /*================================================================================================== HEADER FILE VERSION INFORMATION ==================================================================================================*/ #define OSIF_VENDOR_ID (180) #define OSIF_AR_RELEASE_MAJOR_VERSION (4) #define OSIF_AR_RELEASE_MINOR_VERSION (4) #define OSIF_AR_RELEASE_REVISION_VERSION (0) #define OSIF_SW_MAJOR_VERSION (2) #define OSIF_SW_MINOR_VERSION (3) #define OSIF_SW_PATCH_VERSION (0) /*================================================================================================== DEFINES AND MACROS ==================================================================================================*/ /* * OsIf_Trusted_Call* */ #ifdef MCAL_ENABLE_USER_MODE_SUPPORT #if (defined(USING_OS_AUTOSAROS)) #define OsIf_Trusted_Call(name) Call_##name##_TRUSTED() #define OsIf_Trusted_Call1param(name,param) Call_##name##_TRUSTED(param) #define OsIf_Trusted_Call2params(name,param1,param2) Call_##name##_TRUSTED(param1,param2) #define OsIf_Trusted_Call3params(name,param1,param2,param3) Call_##name##_TRUSTED(param1,param2,param3) #define OsIf_Trusted_Call4params(name,param1,param2,param3,param4) Call_##name##_TRUSTED(param1,param2,param3,param4) #define OsIf_Trusted_Call5params(name,param1,param2,param3,param4,param5) Call_##name##_TRUSTED(param1,param2,param3,param4,param5) #define OsIf_Trusted_Call6params(name,param1,param2,param3,param4,param5,param6) Call_##name##_TRUSTED(param1,param2,param3,param4,param5,param6) #define OsIf_Trusted_Call_Return(name) Call_##name##_TRUSTED() #define OsIf_Trusted_Call_Return1param(name,param1) Call_##name##_TRUSTED(param1) #define OsIf_Trusted_Call_Return2param(name,param1,param2) Call_##name##_TRUSTED(param1,param2) #define OsIf_Trusted_Call_Return3param(name,param1,param2,param3) Call_##name##_TRUSTED(param1,param2,param3) #define OsIf_Trusted_Call_Return4param(name,param1,param2,param3,param4) Call_##name##_TRUSTED(param1,param2,param3,param4) #define OsIf_Trusted_Call_Return5param(name,param1,param2,param3,param4,param5) Call_##name##_TRUSTED(param1,param2,param3,param4,param5) #define OsIf_Trusted_Call_Return6param(name,param1,param2,param3,param4,param5,param6) Call_##name##_TRUSTED(param1,param2,param3,param4,param5,param6) #else /* USING_OS_AUTOSAROS */ /* Baremetal and FreeRTOS */ #define OsIf_Trusted_Call(name) \ ((1UL == Sys_GoToSupervisor()) ? (name(), (void)Sys_GoToUser()) : (name(),(void)0U)) #define OsIf_Trusted_Call1param(name,param) \ ((1UL == Sys_GoToSupervisor()) ? (name(param), (void)Sys_GoToUser()) : (name(param),(void)0U)) #define OsIf_Trusted_Call2params(name,param1,param2) \ ((1UL == Sys_GoToSupervisor()) ? (name(param1,param2), (void)Sys_GoToUser()) : (name(param1,param2),(void)0U)) #define OsIf_Trusted_Call3params(name,param1,param2,param3) \ ((1UL == Sys_GoToSupervisor()) ? (name(param1,param2,param3), (void)Sys_GoToUser()) : (name(param1,param2,param3),(void)0U)) #define OsIf_Trusted_Call4params(name,param1,param2,param3,param4) \ ((1UL == Sys_GoToSupervisor()) ? (name(param1,param2,param3,param4), (void)Sys_GoToUser()) : (name(param1,param2,param3,param4),(void)0U)) #define OsIf_Trusted_Call5params(name,param1,param2,param3,param4,param5) \ ((1UL == Sys_GoToSupervisor()) ? (name(param1,param2,param3,param4,param5), (void)Sys_GoToUser()) : (name(param1,param2,param3,param4,param5),(void)0U)) #define OsIf_Trusted_Call6params(name,param1,param2,param3,param4,param5,param6) \ ((1UL == Sys_GoToSupervisor()) ? (name(param1,param2,param3,param4,param5,param6), (void)Sys_GoToUser()) : (name(param1,param2,param3,param4,param5,param6),(void)0U)) #define OsIf_Trusted_Call_Return(name) \ ((1UL == Sys_GoToSupervisor()) ? Sys_GoToUser_Return(1U, name()) : Sys_GoToUser_Return(0U, name())) #define OsIf_Trusted_Call_Return1param(name,param) \ ((1UL == Sys_GoToSupervisor()) ? Sys_GoToUser_Return(1U, name(param)) : Sys_GoToUser_Return(0U, name(param))) #define OsIf_Trusted_Call_Return2param(name,param1,param2) \ ((1UL == Sys_GoToSupervisor()) ? Sys_GoToUser_Return(1U, name(param1,param2)) : Sys_GoToUser_Return(0U, name(param1,param2))) #define OsIf_Trusted_Call_Return3param(name,param1,param2,param3) \ ((1UL == Sys_GoToSupervisor()) ? Sys_GoToUser_Return(1U, name(param1,param2,param3)) : Sys_GoToUser_Return(0U, name(param1,param2,param3))) #define OsIf_Trusted_Call_Return4param(name,param1,param2,param3,param4) \ ((1UL == Sys_GoToSupervisor()) ? Sys_GoToUser_Return(1U, name(param1,param2,param3,param4)) : Sys_GoToUser_Return(0U, name(param1,param2,param3,param4))) #define OsIf_Trusted_Call_Return5param(name,param1,param2,param3,param4,param5) \ ((1UL == Sys_GoToSupervisor()) ? Sys_GoToUser_Return(1U, name(param1,param2,param3,param4,param5)) : Sys_GoToUser_Return(0U, name(param1,param2,param3,param4,param5))) #define OsIf_Trusted_Call_Return6param(name,param1,param2,param3,param4,param5,param6) \ ((1UL == Sys_GoToSupervisor()) ? Sys_GoToUser_Return(1U, name(param1,param2,param3,param4,param5,param6)) : Sys_GoToUser_Return(0U, name(param1,param2,param3,param4,param5,param6))) #endif /* USING_OS_AUTOSAROS */ #endif /* MCAL_ENABLE_USER_MODE_SUPPORT */ /* * OsIf_GetCoreID */ #ifdef USING_OS_AUTOSAROS #define OsIf_GetCoreID() GetCoreID() #else /* USING_OS_AUTOSAROS */ /* Baremetal and FreeRTOS */ #ifdef MCAL_ENABLE_USER_MODE_SUPPORT #define OsIf_GetCoreID() OsIf_Trusted_Call_Return(Sys_GetCoreID) #else /* @implements OsIf_GetCoreID_define */ #define OsIf_GetCoreID() Sys_GetCoreID() #endif #endif /* * OsIf_SuspendAllInterrupts * OsIf_ResumeAllInterrupts */ #if (!defined(USING_OS_AUTOSAROS)) /* Baremetal or FreeRTOS case */ #ifdef MCAL_ENABLE_USER_MODE_SUPPORT #define ResumeAllInterrupts() Sys_ResumeInterrupts() /* BASEPRI will be set to 0x0 from SVC handler */ #define SuspendAllInterrupts() Sys_SuspendInterrupts() /* BASEPRI will be set to 0x10 from SVC handler */ #else #define ResumeAllInterrupts() __enable_irq() #define SuspendAllInterrupts() __disable_irq() #endif /* MCAL_ENABLE_USER_MODE_SUPPORT */ #endif /* !defined(USING_OS_AUTOSAROS) */ /* @implements OsIf_SuspendAllInterrupts_define */ #define OsIf_SuspendAllInterrupts() SuspendAllInterrupts() /* @implements OsIf_ResumeAllInterrupts_define */ #define OsIf_ResumeAllInterrupts() ResumeAllInterrupts() /*================================================================================================== EXTERNAL CONSTANTS ==================================================================================================*/ /*================================================================================================== ENUMS ==================================================================================================*/ /*================================================================================================== FUNCTION PROTOTYPES ==================================================================================================*/ #ifdef __cplusplus } #endif /** @} */ #endif /* End of file OsIf.h */