diff --git a/kernel/arch/arm/cortex-m3/keil/los_interrupt.c b/kernel/arch/arm/cortex-m3/keil/los_interrupt.c index 54756f26..79975442 100755 --- a/kernel/arch/arm/cortex-m3/keil/los_interrupt.c +++ b/kernel/arch/arm/cortex-m3/keil/los_interrupt.c @@ -35,6 +35,7 @@ #include "los_context.h" #include "los_arch_interrupt.h" #include "los_debug.h" +#include "los_hook.h" #include "los_task.h" #include "los_memory.h" #include "los_membox.h" @@ -177,6 +178,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) hwiIndex = HalIntNumGet(); + OsHookCall(LOS_HOOK_TYPE_ISR_ENTER, hwiIndex); + HalPreInterruptHandler(hwiIndex); #if (OS_HWI_WITH_ARG == 1) @@ -191,6 +194,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); diff --git a/kernel/arch/arm/cortex-m33/gcc/los_interrupt.c b/kernel/arch/arm/cortex-m33/gcc/los_interrupt.c index 42d1d414..dcb5fa0d 100755 --- a/kernel/arch/arm/cortex-m33/gcc/los_interrupt.c +++ b/kernel/arch/arm/cortex-m33/gcc/los_interrupt.c @@ -34,6 +34,7 @@ #include "los_context.h" #include "los_arch_interrupt.h" #include "los_debug.h" +#include "los_hook.h" #include "los_task.h" #include "los_memory.h" #include "los_membox.h" @@ -166,6 +167,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) hwiIndex = HalIntNumGet(); + OsHookCall(LOS_HOOK_TYPE_ISR_ENTER, hwiIndex); + HalPreInterruptHandler(hwiIndex); #if (OS_HWI_WITH_ARG == 1) @@ -180,6 +183,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); diff --git a/kernel/arch/arm/cortex-m4/gcc/los_interrupt.c b/kernel/arch/arm/cortex-m4/gcc/los_interrupt.c index d4d48132..797da7ea 100644 --- a/kernel/arch/arm/cortex-m4/gcc/los_interrupt.c +++ b/kernel/arch/arm/cortex-m4/gcc/los_interrupt.c @@ -34,6 +34,7 @@ #include "los_context.h" #include "los_arch_interrupt.h" #include "los_debug.h" +#include "los_hook.h" #include "los_task.h" #include "los_memory.h" #include "los_membox.h" @@ -176,6 +177,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) hwiIndex = HalIntNumGet(); + OsHookCall(LOS_HOOK_TYPE_ISR_ENTER, hwiIndex); + HalPreInterruptHandler(hwiIndex); #if (OS_HWI_WITH_ARG == 1) @@ -190,6 +193,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); diff --git a/kernel/arch/arm/cortex-m4/iar/los_interrupt.c b/kernel/arch/arm/cortex-m4/iar/los_interrupt.c index 35b41b71..96d491b8 100755 --- a/kernel/arch/arm/cortex-m4/iar/los_interrupt.c +++ b/kernel/arch/arm/cortex-m4/iar/los_interrupt.c @@ -194,11 +194,11 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); - - OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); } /* **************************************************************************** diff --git a/kernel/arch/arm/cortex-m7/gcc/los_interrupt.c b/kernel/arch/arm/cortex-m7/gcc/los_interrupt.c index 582e7eec..03900d83 100755 --- a/kernel/arch/arm/cortex-m7/gcc/los_interrupt.c +++ b/kernel/arch/arm/cortex-m7/gcc/los_interrupt.c @@ -34,6 +34,7 @@ #include "los_context.h" #include "los_arch_interrupt.h" #include "los_debug.h" +#include "los_hook.h" #include "los_task.h" #include "los_memory.h" #include "los_membox.h" @@ -166,6 +167,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) hwiIndex = HalIntNumGet(); + OsHookCall(LOS_HOOK_TYPE_ISR_ENTER, hwiIndex); + HalPreInterruptHandler(hwiIndex); #if (OS_HWI_WITH_ARG == 1) @@ -180,6 +183,8 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); diff --git a/kernel/arch/arm/cortex-m7/iar/los_interrupt.c b/kernel/arch/arm/cortex-m7/iar/los_interrupt.c index 2a40bea1..b5212801 100755 --- a/kernel/arch/arm/cortex-m7/iar/los_interrupt.c +++ b/kernel/arch/arm/cortex-m7/iar/los_interrupt.c @@ -190,11 +190,11 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID) HalAftInterruptHandler(hwiIndex); + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); + intSave = LOS_IntLock(); g_intCount--; LOS_IntRestore(intSave); - - OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiIndex); } /* **************************************************************************** diff --git a/kernel/arch/risc-v/riscv32/gcc/los_interrupt.c b/kernel/arch/risc-v/riscv32/gcc/los_interrupt.c index 8ad07867..2b6f5762 100755 --- a/kernel/arch/risc-v/riscv32/gcc/los_interrupt.c +++ b/kernel/arch/risc-v/riscv32/gcc/los_interrupt.c @@ -36,6 +36,7 @@ #include "los_arch_context.h" #include "los_task.h" #include "los_debug.h" +#include "los_hook.h" #include "riscv_hal.h" #ifdef __cplusplus @@ -120,12 +121,16 @@ __attribute__((section(".interrupt.text"))) VOID HalHwiInterruptDone(HWI_HANDLE_ { g_intCount++; + OsHookCall(LOS_HOOK_TYPE_ISR_ENTER, hwiNum); + HWI_HANDLE_FORM_S *hwiForm = &g_hwiForm[hwiNum]; HwiProcFunc func = (HwiProcFunc)(hwiForm->pfnHook); func(hwiForm->uwParam); ++g_hwiFormCnt[hwiNum]; + OsHookCall(LOS_HOOK_TYPE_ISR_EXIT, hwiNum); + g_intCount--; } diff --git a/targets/cortex-m3_stm32f103_simulator_keil/project/los_demo.uvproj b/targets/cortex-m3_stm32f103_simulator_keil/project/los_demo.uvproj index f8129709..beee6ef9 100644 --- a/targets/cortex-m3_stm32f103_simulator_keil/project/los_demo.uvproj +++ b/targets/cortex-m3_stm32f103_simulator_keil/project/los_demo.uvproj @@ -512,6 +512,11 @@ 1 ..\..\..\utils\los_error.c + + los_hook.c + 1 + ..\..\..\utils\los_hook.c + los_context.c 1