From 39efd6fb30ee7dc9159811f5d37dffcdfe81bae0 Mon Sep 17 00:00:00 2001 From: zhushengle Date: Thu, 15 Jul 2021 09:41:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9ELOSCFG=5FBASE=5FCORE?= =?UTF-8?q?=5FTSK=5FSWITCH=5FHOOK=20=E5=AE=8F=E5=AE=9A=E4=B9=89=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化原任务切换对外函数钩子调用为通过宏定义实现 Close #I40Q9O Change-Id: Ie5ab75d04e2a63cb992be968d25e876fd91ee591 Signed-off-by: zhushengle --- kernel/include/los_config.h | 8 ++++++++ kernel/include/los_task.h | 14 -------------- kernel/src/los_task.c | 9 +-------- 3 files changed, 9 insertions(+), 22 deletions(-) diff --git a/kernel/include/los_config.h b/kernel/include/los_config.h index b58fc066..6b80b581 100644 --- a/kernel/include/los_config.h +++ b/kernel/include/los_config.h @@ -233,6 +233,14 @@ extern "C" { #define LOSCFG_BASE_CORE_EXC_TSK_SWITCH 0 #endif +/* + * @ingroup los_config + * Configuration item for task context switch hook + */ +#ifndef LOSCFG_BASE_CORE_TSK_SWITCH_HOOK +#define LOSCFG_BASE_CORE_TSK_SWITCH_HOOK() +#endif + /** * @ingroup los_config * Define a usable task priority.Highest task priority. diff --git a/kernel/include/los_task.h b/kernel/include/los_task.h index 15cb28c6..7cc5a811 100644 --- a/kernel/include/los_task.h +++ b/kernel/include/los_task.h @@ -371,20 +371,6 @@ extern "C" { #define LOS_ERRNO_TSK_TIMEOUT LOS_ERRNO_OS_ERROR(LOS_MOD_TSK, 0x23) -/** - * @ingroup los_task - * Define the type of the task switching hook function. - * - */ -typedef VOID (*TSKSWITCHHOOK)(VOID); - -/** - * @ingroup los_task - * User task switching hook function. - * - */ -extern TSKSWITCHHOOK g_pfnUsrTskSwitchHook; - /** * @ingroup los_task * Define the type of the task entry function. diff --git a/kernel/src/los_task.c b/kernel/src/los_task.c index 81cbc7f0..2afa4dff 100644 --- a/kernel/src/los_task.c +++ b/kernel/src/los_task.c @@ -103,10 +103,6 @@ LITE_OS_SEC_BSS BOOL g_taskScheduled = FALSE; STATIC VOID (*PmEnter)(BOOL isIdle) = NULL; -#if (LOSCFG_BASE_CORE_TSK_MONITOR == 1) -TSKSWITCHHOOK g_pfnUsrTskSwitchHook = NULL; -#endif /* LOSCFG_BASE_CORE_TSK_MONITOR == 1 */ - #if (LOSCFG_BASE_CORE_EXC_TSK_SWITCH == 1) TaskSwitchInfo g_taskSwitchInfo; #endif @@ -577,9 +573,7 @@ LITE_OS_SEC_TEXT VOID OsTaskSwitchCheck(VOID) } #endif - if (g_pfnUsrTskSwitchHook != NULL) { - g_pfnUsrTskSwitchHook(); - } + LOSCFG_BASE_CORE_TSK_SWITCH_HOOK(); #if (LOSCFG_KERNEL_TRACE == 1) LOS_Trace(LOS_TRACE_SWITCH, 0); @@ -598,7 +592,6 @@ LITE_OS_SEC_TEXT_MINOR VOID OsTaskMonInit(VOID) (VOID)memset_s(&g_taskSwitchInfo, sizeof(TaskSwitchInfo), 0, sizeof(TaskSwitchInfo)); g_taskSwitchInfo.cntInfo.maxCnt = OS_TASK_SWITCH_INFO_COUNT; #endif - g_pfnUsrTskSwitchHook = NULL; return; } #endif