diff --git a/kernel/include/los_swtmr.h b/kernel/include/los_swtmr.h index c517c7a5..2fdc5dd4 100644 --- a/kernel/include/los_swtmr.h +++ b/kernel/include/los_swtmr.h @@ -448,6 +448,7 @@ typedef struct { SWTMR_PROC_FUNC handler; /**< Callback function that handles software timer timeout */ UINT32 arg; /**< Parameter passed in when the callback function that handles software timer timeout is called */ + UINT32 swtmrID; /**< The id used to obtain the software timer handle */ } SwtmrHandlerItem; extern SWTMR_CTRL_S *g_swtmrCBArray; diff --git a/kernel/src/los_swtmr.c b/kernel/src/los_swtmr.c index 23fd9f47..7a125f76 100644 --- a/kernel/src/los_swtmr.c +++ b/kernel/src/los_swtmr.c @@ -61,6 +61,8 @@ LITE_OS_SEC_BSS SwtmrAlignData g_swtmrAlignID[LOSCFG_BASE_CORE_SWTMR_LIMIT] #define SWTMR_MAX_RUNNING_TICKS 2 #define OS_SWTMR_MAX_TIMERID ((0xFFFFFFFF / LOSCFG_BASE_CORE_SWTMR_LIMIT) * LOSCFG_BASE_CORE_SWTMR_LIMIT) +STATIC VOID OsSwtmrDelete(SWTMR_CTRL_S *swtmr); + /***************************************************************************** Function : OsSwtmrTask Description : Swtmr task main loop, handle time-out timer. @@ -71,6 +73,8 @@ Return : None LITE_OS_SEC_TEXT VOID OsSwtmrTask(VOID) { SwtmrHandlerItem swtmrHandle; + SWTMR_CTRL_S *swtmr = NULL; + UINT32 intSave; UINT32 readSize; UINT32 ret; UINT64 tick; @@ -79,10 +83,21 @@ LITE_OS_SEC_TEXT VOID OsSwtmrTask(VOID) readSize = sizeof(SwtmrHandlerItem); ret = LOS_QueueReadCopy(g_swtmrHandlerQueue, &swtmrHandle, &readSize, LOS_WAIT_FOREVER); if ((ret == LOS_OK) && (readSize == sizeof(SwtmrHandlerItem))) { - if (swtmrHandle.handler == NULL) { + if ((swtmrHandle.handler == NULL) || (swtmrHandle.swtmrID >= OS_SWTMR_MAX_TIMERID)) { continue; } + intSave = LOS_IntLock(); + swtmr = g_swtmrCBArray + swtmrHandle.swtmrID % LOSCFG_BASE_CORE_SWTMR_LIMIT; + if (swtmr->usTimerID != swtmrHandle.swtmrID) { + LOS_IntRestore(intSave); + continue; + } + if (swtmr->ucMode == LOS_SWTMR_MODE_ONCE) { + OsSwtmrDelete(swtmr); + } + LOS_IntRestore(intSave); + tick = LOS_TickCountGet(); swtmrHandle.handler(swtmrHandle.arg); tick = LOS_TickCountGet() - tick; @@ -233,8 +248,14 @@ Input : swtmr --- Need to delete Software Timer, When using, Ensure that i Output : None Return : None *****************************************************************************/ -STATIC_INLINE VOID OsSwtmrDelete(SWTMR_CTRL_S *swtmr) +STATIC VOID OsSwtmrDelete(SWTMR_CTRL_S *swtmr) { + if (swtmr->usTimerID < (OS_SWTMR_MAX_TIMERID - LOSCFG_BASE_CORE_SWTMR_LIMIT)) { + swtmr->usTimerID += LOSCFG_BASE_CORE_SWTMR_LIMIT; + } else { + swtmr->usTimerID %= LOSCFG_BASE_CORE_SWTMR_LIMIT; + } + /* insert to free list */ swtmr->pstNext = g_swtmrFreeList; g_swtmrFreeList = swtmr; @@ -264,16 +285,10 @@ STATIC VOID OsSwtmrTimeoutHandle(UINT64 currTime, SWTMR_CTRL_S *swtmr) swtmrHandler.handler = swtmr->pfnHandler; swtmrHandler.arg = swtmr->uwArg; + swtmrHandler.swtmrID = swtmr->usTimerID; (VOID)LOS_QueueWriteCopy(g_swtmrHandlerQueue, &swtmrHandler, sizeof(SwtmrHandlerItem), LOS_NO_WAIT); - if (swtmr->ucMode == LOS_SWTMR_MODE_ONCE) { - OsSwtmrDelete(swtmr); - if (swtmr->usTimerID < (OS_SWTMR_MAX_TIMERID - LOSCFG_BASE_CORE_SWTMR_LIMIT)) { - swtmr->usTimerID += LOSCFG_BASE_CORE_SWTMR_LIMIT; - } else { - swtmr->usTimerID %= LOSCFG_BASE_CORE_SWTMR_LIMIT; - } - } else if (swtmr->ucMode == LOS_SWTMR_MODE_PERIOD) { + if (swtmr->ucMode == LOS_SWTMR_MODE_PERIOD) { OsSwtmrStart(currTime, swtmr); } else if (swtmr->ucMode == LOS_SWTMR_MODE_NO_SELFDELETE) { swtmr->ucState = OS_SWTMR_STATUS_CREATED; @@ -503,7 +518,7 @@ LITE_OS_SEC_TEXT UINT32 LOS_SwtmrStart(UINT32 swtmrId) SWTMR_CTRL_S *swtmr = g_swtmrCBArray + swtmrId % LOSCFG_BASE_CORE_SWTMR_LIMIT; if (swtmr->usTimerID != swtmrId) { LOS_IntRestore(intSave); - return LOS_ERRNO_SWTMR_ID_INVALID; + return LOS_ERRNO_SWTMR_NOT_CREATED; } #if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1) @@ -560,7 +575,7 @@ LITE_OS_SEC_TEXT UINT32 LOS_SwtmrStop(UINT32 swtmrId) swtmr = g_swtmrCBArray + swtmrCbId; if (swtmr->usTimerID != swtmrId) { LOS_IntRestore(intSave); - return LOS_ERRNO_SWTMR_ID_INVALID; + return LOS_ERRNO_SWTMR_NOT_CREATED; } switch (swtmr->ucState) { @@ -601,10 +616,9 @@ LITE_OS_SEC_TEXT UINT32 LOS_SwtmrTimeGet(UINT32 swtmrId, UINT32 *tick) intSave = LOS_IntLock(); swtmrCbId = swtmrId % LOSCFG_BASE_CORE_SWTMR_LIMIT; swtmr = g_swtmrCBArray + swtmrCbId; - if (swtmr->usTimerID != swtmrId) { LOS_IntRestore(intSave); - return LOS_ERRNO_SWTMR_ID_INVALID; + return LOS_ERRNO_SWTMR_NOT_CREATED; } switch (swtmr->ucState) { case OS_SWTMR_STATUS_UNUSED: @@ -646,7 +660,7 @@ LITE_OS_SEC_TEXT UINT32 LOS_SwtmrDelete(UINT32 swtmrId) swtmr = g_swtmrCBArray + swtmrCbId; if (swtmr->usTimerID != swtmrId) { LOS_IntRestore(intSave); - return LOS_ERRNO_SWTMR_ID_INVALID; + return LOS_ERRNO_SWTMR_NOT_CREATED; } switch (swtmr->ucState) { diff --git a/kernel/src/los_task.c b/kernel/src/los_task.c index c2dbd3ee..a72220f5 100644 --- a/kernel/src/los_task.c +++ b/kernel/src/los_task.c @@ -808,6 +808,7 @@ LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskResume(UINT32 taskID) LosTaskCB *taskCB = NULL; UINT16 tempStatus; UINT32 retErr = OS_ERROR; + BOOL needSched = FALSE; if (taskID > LOSCFG_BASE_CORE_TSK_LIMIT) { return LOS_ERRNO_TSK_ID_INVALID; @@ -825,7 +826,7 @@ LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskResume(UINT32 taskID) OS_GOTO_ERREND(); } - BOOL needSched = OsSchedResume(taskCB); + needSched = OsSchedResume(taskCB); if (needSched && g_taskScheduled) { LOS_IntRestore(intSave); LOS_Schedule(); diff --git a/testsuites/sample/kernel/event/It_los_event_034.c b/testsuites/sample/kernel/event/It_los_event_034.c index 07ae2071..99fe04fd 100644 --- a/testsuites/sample/kernel/event/It_los_event_034.c +++ b/testsuites/sample/kernel/event/It_los_event_034.c @@ -40,7 +40,7 @@ static VOID SwtmrF01(VOID) ret = LOS_EventWrite(&g_pevent, 0xF); ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret); - ret = LOS_EventRead(&g_pevent, 0xF, LOS_WAITMODE_AND, LOS_WAIT_FOREVER); + ret = LOS_EventPoll(&g_pevent.uwEventID, 0xF, LOS_WAITMODE_AND); ICUNIT_ASSERT_EQUAL_VOID(ret, g_pevent.uwEventID, ret); ICUNIT_ASSERT_EQUAL_VOID(ret, 0xF, ret); diff --git a/testsuites/sample/kernel/swtmr/It_los_swtmr.c b/testsuites/sample/kernel/swtmr/It_los_swtmr.c index 1e0369d8..8a6407e8 100644 --- a/testsuites/sample/kernel/swtmr/It_los_swtmr.c +++ b/testsuites/sample/kernel/swtmr/It_los_swtmr.c @@ -113,6 +113,7 @@ VOID ItSuiteLosSwtmr(void) ItLosSwtmr076(); ItLosSwtmr077(); ItLosSwtmr078(); + ItLosSwtmr079(); #if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1) ItLosSwtmrAlign005(); ItLosSwtmrAlign006(); diff --git a/testsuites/sample/kernel/swtmr/It_los_swtmr.h b/testsuites/sample/kernel/swtmr/It_los_swtmr.h index 9079de17..58ce2b34 100644 --- a/testsuites/sample/kernel/swtmr/It_los_swtmr.h +++ b/testsuites/sample/kernel/swtmr/It_los_swtmr.h @@ -147,6 +147,7 @@ extern VOID ItLosSwtmr075(VOID); extern VOID ItLosSwtmr076(VOID); extern VOID ItLosSwtmr077(VOID); extern VOID ItLosSwtmr078(VOID); +extern VOID ItLosSwtmr079(VOID); extern VOID ItLosSwtmrAlign001(VOID); extern VOID ItLosSwtmrAlign002(VOID); diff --git a/testsuites/sample/kernel/swtmr/It_los_swtmr_009.c b/testsuites/sample/kernel/swtmr/It_los_swtmr_009.c index 1b6642d6..1cc8f7ea 100644 --- a/testsuites/sample/kernel/swtmr/It_los_swtmr_009.c +++ b/testsuites/sample/kernel/swtmr/It_los_swtmr_009.c @@ -39,7 +39,7 @@ static UINT32 Testcase(VOID) UINT32 swTmrID = 0xfffffff; // LOSCFG_BASE_CORE_SWTMR_LIMIT. ret = LOS_SwtmrDelete(swTmrID); - ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_ID_INVALID, ret, EXIT); + ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_NOT_CREATED, ret, EXIT); return LOS_OK; EXIT: diff --git a/testsuites/sample/kernel/swtmr/It_los_swtmr_066.c b/testsuites/sample/kernel/swtmr/It_los_swtmr_066.c index cc8de752..ba081e57 100644 --- a/testsuites/sample/kernel/swtmr/It_los_swtmr_066.c +++ b/testsuites/sample/kernel/swtmr/It_los_swtmr_066.c @@ -74,7 +74,7 @@ static UINT32 Testcase(VOID) ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT); ret = LOS_SwtmrTimeGet(swTmrID, &tick); - ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_ID_INVALID, ret, EXIT); + ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_NOT_CREATED, ret, EXIT); ICUNIT_GOTO_EQUAL(g_testCount, 1, g_testCount, EXIT); diff --git a/testsuites/sample/kernel/swtmr/It_los_swtmr_067.c b/testsuites/sample/kernel/swtmr/It_los_swtmr_067.c index 263cece3..f92c2da5 100644 --- a/testsuites/sample/kernel/swtmr/It_los_swtmr_067.c +++ b/testsuites/sample/kernel/swtmr/It_los_swtmr_067.c @@ -43,7 +43,7 @@ static VOID SwtmrF01(UINT32 arg) } ret = LOS_SwtmrTimeGet(g_swtmrId1, &tick); - ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_ID_INVALID, ret, EXIT); + ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_NOT_CREATED, ret, EXIT); g_testCount++; return; @@ -80,7 +80,7 @@ static UINT32 Testcase(VOID) ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT); ret = LOS_SwtmrTimeGet(g_swtmrId1, &tick); - ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_ID_INVALID, ret, EXIT); + ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_NOT_CREATED, ret, EXIT); ICUNIT_GOTO_EQUAL(g_testCount, 1, g_testCount, EXIT); #if (TIMER_LOS_SELF_DELETED == 0) diff --git a/testsuites/sample/kernel/swtmr/It_los_swtmr_071.c b/testsuites/sample/kernel/swtmr/It_los_swtmr_071.c index d69bd810..39ef19e3 100644 --- a/testsuites/sample/kernel/swtmr/It_los_swtmr_071.c +++ b/testsuites/sample/kernel/swtmr/It_los_swtmr_071.c @@ -93,10 +93,10 @@ static UINT32 Testcase(VOID) ICUNIT_GOTO_EQUAL(g_testCount, 1, g_testCount, EXIT); ret = LOS_SwtmrDelete(g_swtmrId1); - ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_ID_INVALID, ret, EXIT); + ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_NOT_CREATED, ret, EXIT); ret = LOS_SwtmrTimeGet(g_swtmrId1, &tick); - ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_ID_INVALID, ret, EXIT); + ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_NOT_CREATED, ret, EXIT); #if (TIMER_LOS_SELF_DELETED == 0) ret = LOS_SwtmrDelete(g_swtmrId1); diff --git a/testsuites/sample/kernel/swtmr/It_los_swtmr_074.c b/testsuites/sample/kernel/swtmr/It_los_swtmr_074.c index c856bf0d..17f4a825 100644 --- a/testsuites/sample/kernel/swtmr/It_los_swtmr_074.c +++ b/testsuites/sample/kernel/swtmr/It_los_swtmr_074.c @@ -101,7 +101,7 @@ static UINT32 Testcase(VOID) ICUNIT_GOTO_EQUAL(g_testCount, 1, g_testCount, EXIT); ret = LOS_SwtmrTimeGet(swTmrID, &tick); - ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_ID_INVALID, ret, EXIT); + ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_NOT_CREATED, ret, EXIT); #if (TIMER_LOS_SELF_DELETED == 0) ret = LOS_SwtmrDelete(swTmrID); diff --git a/testsuites/sample/kernel/swtmr/It_los_swtmr_077.c b/testsuites/sample/kernel/swtmr/It_los_swtmr_077.c index 28a2aec3..773172b1 100644 --- a/testsuites/sample/kernel/swtmr/It_los_swtmr_077.c +++ b/testsuites/sample/kernel/swtmr/It_los_swtmr_077.c @@ -60,13 +60,13 @@ static UINT32 Testcase(VOID) ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_MODE_INVALID, ret, EXIT); ret = LOS_SwtmrStart(swTmrID); - ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_ID_INVALID, ret, EXIT); + ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_NOT_CREATED, ret, EXIT); ret = LOS_TaskDelay(10); // 10, set delay time. ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT); ret = LOS_SwtmrDelete(swTmrID); - ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_ID_INVALID, ret, EXIT); + ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_NOT_CREATED, ret, EXIT); ICUNIT_GOTO_EQUAL(g_testCount, 0, g_testCount, EXIT); diff --git a/testsuites/sample/kernel/swtmr/It_los_swtmr_078.c b/testsuites/sample/kernel/swtmr/It_los_swtmr_078.c index 5a0179e2..efbb451e 100644 --- a/testsuites/sample/kernel/swtmr/It_los_swtmr_078.c +++ b/testsuites/sample/kernel/swtmr/It_los_swtmr_078.c @@ -59,13 +59,13 @@ static UINT32 Testcase(VOID) ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_MODE_INVALID, ret, EXIT); ret = LOS_SwtmrStart(swTmrID); - ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_ID_INVALID, ret, EXIT); + ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_NOT_CREATED, ret, EXIT); ret = LOS_TaskDelay(10); // 10, set delay time. ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT); ret = LOS_SwtmrDelete(swTmrID); - ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_ID_INVALID, ret, EXIT); + ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_SWTMR_NOT_CREATED, ret, EXIT); ICUNIT_GOTO_EQUAL(g_testCount, 0, g_testCount, EXIT); diff --git a/testsuites/sample/kernel/swtmr/It_los_swtmr_079.c b/testsuites/sample/kernel/swtmr/It_los_swtmr_079.c new file mode 100644 index 00000000..1168aa04 --- /dev/null +++ b/testsuites/sample/kernel/swtmr/It_los_swtmr_079.c @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. + * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "osTest.h" +#include "It_los_swtmr.h" + +static UINT32 g_swTmrID1; +static UINT32 g_swTmrID2; + +static VOID SwtmrF01(UINT32 arg) +{ + if (arg != TIMER_LOS_HANDLER_PARAMETER) { + return; + } + + LOS_SwtmrDelete(g_swTmrID2); + + g_testCount++; + return; +} + +static VOID SwtmrF02(UINT32 arg) +{ + if (arg != TIMER_LOS_HANDLER_PARAMETER) { + return; + } + + g_testCount++; + return; +} + +static UINT32 Testcase(VOID) +{ + UINT32 ret; + g_testCount = 0; + +#if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1) + ret = LOS_SwtmrCreate(TIMER_LOS_EXPIRATION1, LOS_SWTMR_MODE_ONCE, + (SWTMR_PROC_FUNC)SwtmrF01, &g_swTmrID1, TIMER_LOS_HANDLER_PARAMETER, + OS_SWTMR_ROUSES_ALLOW, OS_SWTMR_ALIGN_INSENSITIVE); +#else + ret = LOS_SwtmrCreate(TIMER_LOS_EXPIRATION1, LOS_SWTMR_MODE_ONCE, + (SWTMR_PROC_FUNC)SwtmrF01, &g_swTmrID1, TIMER_LOS_HANDLER_PARAMETER); +#endif + ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT); + +#if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1) + ret = LOS_SwtmrCreate(TIMER_LOS_EXPIRATION1, LOS_SWTMR_MODE_ONCE, + (SWTMR_PROC_FUNC)SwtmrF02, &g_swTmrID2, TIMER_LOS_HANDLER_PARAMETER, + OS_SWTMR_ROUSES_ALLOW, OS_SWTMR_ALIGN_INSENSITIVE); +#else + ret = LOS_SwtmrCreate(TIMER_LOS_EXPIRATION1, LOS_SWTMR_MODE_ONCE, + (SWTMR_PROC_FUNC)SwtmrF02, &g_swTmrID2, TIMER_LOS_HANDLER_PARAMETER); +#endif + ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT); + + ret = LOS_SwtmrStart(g_swTmrID1); + ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT); + + ret = LOS_SwtmrStart(g_swTmrID2); + ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT); + + ret = LOS_TaskDelay(10); // 10, set delay time. + ICUNIT_GOTO_EQUAL(g_testCount, 1, g_testCount, EXIT); + + return LOS_OK; + +EXIT: + LOS_SwtmrDelete(g_swTmrID1); + LOS_SwtmrDelete(g_swTmrID2); + return LOS_NOK; +} + +VOID ItLosSwtmr079(VOID) +{ + TEST_ADD_CASE("ItLosSwtmr079", Testcase, TEST_LOS, TEST_SWTMR, TEST_LEVEL0, TEST_FUNCTION); +} \ No newline at end of file diff --git a/testsuites/sample/kernel/task/It_los_task_119.c b/testsuites/sample/kernel/task/It_los_task_119.c index b3c4dd32..5df7f05c 100644 --- a/testsuites/sample/kernel/task/It_los_task_119.c +++ b/testsuites/sample/kernel/task/It_los_task_119.c @@ -31,13 +31,13 @@ #include "osTest.h" #include "It_los_task.h" -static VOID *TaskDeatchf01(void *argument) +static int TaskDeatchf01(UINT32 argument) { int ret = LOS_TaskDetach(LOS_CurTaskIDGet()); ICUNIT_ASSERT_EQUAL(ret, LOS_ERRNO_TSK_NOT_JOIN, ret); g_testCount++; - return NULL; + return 0; } static UINT32 TestCase(VOID) diff --git a/testsuites/sample/kernel/task/It_los_task_120.c b/testsuites/sample/kernel/task/It_los_task_120.c index c6f4c155..817c1146 100644 --- a/testsuites/sample/kernel/task/It_los_task_120.c +++ b/testsuites/sample/kernel/task/It_los_task_120.c @@ -31,7 +31,7 @@ #include "osTest.h" #include "It_los_task.h" -static VOID *TaskDeatchf01(void *argument) +static int TaskDeatchf01(UINT32 argument) { UINT32 ret = LOS_TaskDetach(LOS_CurTaskIDGet()); ICUNIT_ASSERT_EQUAL(ret, 0, ret); @@ -39,7 +39,7 @@ static VOID *TaskDeatchf01(void *argument) g_testCount++; LOS_TaskDelay(1000); /* 1000 ticks */ - return NULL; + return 0; } static UINT32 TestCase(VOID) @@ -64,6 +64,8 @@ static UINT32 TestCase(VOID) ret = LOS_TaskJoin(taskID, NULL); ICUNIT_ASSERT_EQUAL(ret, LOS_NOK, ret); + LOS_TaskDelay(1500); /* 1500 ticks wait for the end of child task. */ + return LOS_OK; } diff --git a/testsuites/sample/kernel/task/It_los_task_121.c b/testsuites/sample/kernel/task/It_los_task_121.c index d9e45706..aa55999d 100644 --- a/testsuites/sample/kernel/task/It_los_task_121.c +++ b/testsuites/sample/kernel/task/It_los_task_121.c @@ -31,7 +31,7 @@ #include "osTest.h" #include "It_los_task.h" -static VOID *TaskDeatchf01(void *argument) +static int TaskDeatchf01(UINT32 argument) { UINT32 ret = LOS_TaskDetach(LOS_CurTaskIDGet()); ICUNIT_ASSERT_EQUAL(ret, LOS_NOK, ret); @@ -39,7 +39,7 @@ static VOID *TaskDeatchf01(void *argument) g_testCount++; LOS_TaskDelay(1000); /* 1000 ticks */ - return NULL; + return 0; } static UINT32 TestCase(VOID) @@ -63,6 +63,8 @@ static UINT32 TestCase(VOID) ret = LOS_TaskJoin(taskID, NULL); ICUNIT_ASSERT_EQUAL(ret, LOS_NOK, ret); + LOS_TaskDelay(1500); /* 1500 ticks wait for the end of child task. */ + return LOS_OK; } diff --git a/testsuites/sample/kernel/task/It_los_task_122.c b/testsuites/sample/kernel/task/It_los_task_122.c index 31b223ce..11e4ff51 100644 --- a/testsuites/sample/kernel/task/It_los_task_122.c +++ b/testsuites/sample/kernel/task/It_los_task_122.c @@ -39,12 +39,12 @@ static VOID *TaskJoinf01(void *argument) return NULL; } -static VOID *TaskJoinf02(VOID *argument) +static int TaskJoinf02(VOID *argument) { UINT32 ret = LOS_TaskDelete(g_joinTaskID); ICUNIT_ASSERT_EQUAL(ret, 0, ret); - return NULL; + return 0; } static UINT32 TestCase(VOID)