From dab3a81ac78f263dac8023bc96fd06bff200c8d8 Mon Sep 17 00:00:00 2001 From: linzewen Date: Sun, 25 Apr 2021 19:55:37 -0700 Subject: [PATCH] Kernel: Update task switch and delete some unused variables Signed-off-by: linzewen --- .../risc-v/nuclei/gcc/los_arch_interrupt.h | 18 +++++++++--------- kernel/arch/risc-v/nuclei/gcc/los_context.c | 10 +++------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/kernel/arch/risc-v/nuclei/gcc/los_arch_interrupt.h b/kernel/arch/risc-v/nuclei/gcc/los_arch_interrupt.h index 99d04e0b..ceb59353 100644 --- a/kernel/arch/risc-v/nuclei/gcc/los_arch_interrupt.h +++ b/kernel/arch/risc-v/nuclei/gcc/los_arch_interrupt.h @@ -87,7 +87,7 @@ extern VOID HalHwiDefaultHandler(VOID); * * Solution: Pass in a valid non-null hardware interrupt handling function. */ -// #define OS_ERRNO_HWI_PROC_FUNC_NULL LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x01) +#define OS_ERRNO_HWI_PROC_FUNC_NULL LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x01) /** * @ingroup los_hwi @@ -97,7 +97,7 @@ extern VOID HalHwiDefaultHandler(VOID); * * Solution: Increase the configured maximum number of supported hardware interrupts. */ -// #define OS_ERRNO_HWI_CB_UNAVAILABLE LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x02) +#define OS_ERRNO_HWI_CB_UNAVAILABLE LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x02) /** * @ingroup los_hwi @@ -107,7 +107,7 @@ extern VOID HalHwiDefaultHandler(VOID); * * Solution: Expand the configured memory. */ -// #define OS_ERRNO_HWI_NO_MEMORY LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x03) +#define OS_ERRNO_HWI_NO_MEMORY LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x03) /** * @ingroup los_hwi @@ -117,7 +117,7 @@ extern VOID HalHwiDefaultHandler(VOID); * * Solution: Check whether the interrupt specified by the passed-in interrupt number has already been created. */ -// #define OS_ERRNO_HWI_ALREADY_CREATED LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x04) +#define OS_ERRNO_HWI_ALREADY_CREATED LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x04) /** * @ingroup los_hwi @@ -127,7 +127,7 @@ extern VOID HalHwiDefaultHandler(VOID); * * Solution: Ensure that the interrupt priority is valid. */ -// #define OS_ERRNO_HWI_PRIO_INVALID LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x05) +#define OS_ERRNO_HWI_PRIO_INVALID LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x05) /** * @ingroup los_hwi @@ -148,7 +148,7 @@ extern VOID HalHwiDefaultHandler(VOID); * * Solution: Check whether the interrupt specified by the passed-in interrupt number has already been created. */ -// #define OS_ERRNO_HWI_FASTMODE_ALREADY_CREATED LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x07) +#define OS_ERRNO_HWI_FASTMODE_ALREADY_CREATED LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x07) /** * @ingroup los_hwi @@ -158,7 +158,7 @@ extern VOID HalHwiDefaultHandler(VOID); * * * Solution: Do not call the API during an interrupt. */ -// #define OS_ERRNO_HWI_INTERR LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x08) +#define OS_ERRNO_HWI_INTERR LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x08) /** * @ingroup los_hwi @@ -169,7 +169,7 @@ extern VOID HalHwiDefaultHandler(VOID); * * Solution:check the input params hwiMode and irqParam of HalHwiCreate or HalHwiDelete whether adapt the current * hwi. */ -// #define OS_ERRNO_HWI_SHARED_ERROR LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x09) +#define OS_ERRNO_HWI_SHARED_ERROR LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x09) /** * @ingroup los_hwi @@ -190,7 +190,7 @@ extern VOID HalHwiDefaultHandler(VOID); * * * Solution:check the hwi number or devid, make sure the hwi number or devid need to delete. */ -// #define OS_ERRNO_HWI_HWINUM_UNCREATE LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x0b) +#define OS_ERRNO_HWI_HWINUM_UNCREATE LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x0b) extern UINT32 HalUnalignedAccessFix(UINTPTR mcause, UINTPTR mepc, UINTPTR mtval, VOID *sp); diff --git a/kernel/arch/risc-v/nuclei/gcc/los_context.c b/kernel/arch/risc-v/nuclei/gcc/los_context.c index c4fca360..b8ae60d5 100644 --- a/kernel/arch/risc-v/nuclei/gcc/los_context.c +++ b/kernel/arch/risc-v/nuclei/gcc/los_context.c @@ -53,14 +53,14 @@ LITE_OS_SEC_TEXT_MINOR VOID HalSysExit(VOID) LITE_OS_SEC_TEXT_INIT VOID *HalTskStackInit(UINT32 taskID, UINT32 stackSize, VOID *topStack) { UINT32 index; - UINT8 *stk; + UINT8 *stk = 0; TaskContext *context = NULL; /* initialize the task stack, write magic num to stack top */ *((UINT32 *)(topStack)) = OS_TASK_MAGIC_WORD; stk = ((UINT8 *)topStack) + stackSize + sizeof(STACK_TYPE); - stk = (UINT8 *)ALIGN_DOWN((unsigned long)stk, REGBYTES); + stk = (UINT8 *)ALIGN_DOWN((uintptr_t)stk, REGBYTES); context = (TaskContext *)(stk - sizeof(TaskContext)); for (index = 1; index < sizeof(TaskContext)/ sizeof(STACK_TYPE); index ++) { @@ -76,7 +76,6 @@ LITE_OS_SEC_TEXT_INIT VOID *HalTskStackInit(UINT32 taskID, UINT32 stackSize, VOI return (VOID *)context; } -extern BOOL g_taskScheduled; extern LosTask g_losTask; LITE_OS_SEC_TEXT_INIT UINT32 HalStartSchedule(OS_TICK_HANDLER handler) { @@ -95,18 +94,15 @@ LITE_OS_SEC_TEXT_INIT UINT32 HalStartSchedule(OS_TICK_HANDLER handler) VOID HalTaskSchedule(VOID) { - if (OsSchedTaskSwitch()) { SysTimer_SetSWIRQ(); - } } VOID HalTaskSwitch(VOID) { SysTimer_ClearSWIRQ(); - g_losTask.runTask->taskStatus &= ~OS_TASK_STATUS_RUNNING; + OsSchedTaskSwitch(); /* Set newTask to runTask */ g_losTask.runTask = g_losTask.newTask; - g_losTask.runTask->taskStatus |= OS_TASK_STATUS_RUNNING; } LITE_OS_SEC_TEXT VOID HalTaskScheduleCheck(VOID)