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