feat: 支持任务栈可配置
支持liteos_m 任务栈可配置 支持pthread 任务栈可配置 支持cmsis 任务栈可配置 BREAKING CHANGE: pthread_create 支持任务栈设置 osThreadNew 支持任务栈设置 TSK_INIT_PARAM_S 结构体添加stackAddr 字段 Signed-off-by: zhushengle <zhushengle@huawei.com> Change-Id: Ifa2a3581b705631cc83cbde6182a39c28d66de2a
This commit is contained in:
@@ -67,7 +67,7 @@ static UINT32 Testcase(VOID)
|
||||
HwiIrqParam irqParam;
|
||||
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
|
||||
irqParam.pDevId = 0;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
|
||||
task.pcName = "Tsk015A";
|
||||
|
||||
@@ -102,7 +102,7 @@ static UINT32 Testcase(VOID)
|
||||
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
|
||||
irqParam.pDevId = 0;
|
||||
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
|
||||
task.pcName = "HwiTsk016A";
|
||||
|
||||
@@ -66,7 +66,7 @@ EXIT:
|
||||
static VOID HwiF01(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
TestHwiClear(HWI_NUM_TEST);
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ static UINT32 Testcase(VOID)
|
||||
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
|
||||
irqParam.pDevId = 0;
|
||||
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
|
||||
task.pcName = "HwiTsk018A";
|
||||
|
||||
@@ -82,7 +82,7 @@ static UINT32 Testcase(VOID)
|
||||
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
|
||||
irqParam.pDevId = 0;
|
||||
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
|
||||
task.pcName = "HwiTsk019A";
|
||||
|
||||
@@ -52,7 +52,7 @@ EXIT:
|
||||
static VOID HwiF01(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
TestHwiClear(HWI_NUM_TEST);
|
||||
|
||||
@@ -100,7 +100,7 @@ static UINT32 Testcase(VOID)
|
||||
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
|
||||
irqParam.pDevId = 0;
|
||||
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
|
||||
task.pcName = "HwiTsk020A";
|
||||
|
||||
@@ -47,7 +47,7 @@ EXIT:
|
||||
static VOID HwiF01(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
TestHwiClear(HWI_NUM_TEST);
|
||||
|
||||
@@ -92,7 +92,7 @@ static UINT32 Testcase(VOID)
|
||||
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
|
||||
irqParam.pDevId = 0;
|
||||
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
|
||||
task.pcName = "HwiTsk021A";
|
||||
|
||||
@@ -86,7 +86,7 @@ static UINT32 Testcase(VOID)
|
||||
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
|
||||
irqParam.pDevId = 0;
|
||||
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
|
||||
task.pcName = "HwiTask024A";
|
||||
|
||||
@@ -74,8 +74,8 @@ static VOID TaskF02(void)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task2;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
TSK_INIT_PARAM_S task2 = {0};
|
||||
|
||||
g_testCount = 0;
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ static VOID TaskF01(void)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
ret = LOS_MuxCreate(&g_mutexTest);
|
||||
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
|
||||
|
||||
@@ -55,7 +55,7 @@ static VOID TaskF01(void)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
ret = LOS_MuxCreate(&g_mutexTest);
|
||||
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
|
||||
|
||||
@@ -59,7 +59,7 @@ static VOID TaskF01(void)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
ret = LOS_MuxCreate(&g_mutexTest);
|
||||
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
|
||||
|
||||
@@ -54,8 +54,8 @@ static VOID TaskF01(void)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task2;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
TSK_INIT_PARAM_S task2 = {0};
|
||||
|
||||
ret = LOS_MuxCreate(&g_mutexTest);
|
||||
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
|
||||
|
||||
@@ -61,7 +61,7 @@ static VOID TaskF01(void)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
ret = LOS_MuxCreate(&g_mutexTest);
|
||||
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
|
||||
|
||||
@@ -56,7 +56,7 @@ static VOID TaskF01(void)
|
||||
VOID TaskF02(void)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task1;
|
||||
TSK_INIT_PARAM_S task1 = {0};
|
||||
|
||||
g_testCount++;
|
||||
|
||||
@@ -83,7 +83,7 @@ VOID TaskF02(void)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
g_testCount = 0;
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ static VOID TaskF01(void)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
g_testCount = 0;
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ static VOID TaskF01(void)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
g_testCount = 0;
|
||||
|
||||
|
||||
@@ -85,7 +85,8 @@ static VOID TaskFuncB(VOID)
|
||||
static VOID TaskFuncA(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task1, task2;
|
||||
TSK_INIT_PARAM_S task1 = {0};
|
||||
TSK_INIT_PARAM_S task2 = {0};
|
||||
|
||||
g_testCount++;
|
||||
|
||||
@@ -144,7 +145,7 @@ static VOID TaskFuncA(VOID)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
|
||||
g_testCount = 0;
|
||||
|
||||
|
||||
@@ -78,7 +78,8 @@ static VOID TaskFuncB(VOID)
|
||||
static VOID TaskFuncA(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task1, task2;
|
||||
TSK_INIT_PARAM_S task1 = {0};
|
||||
TSK_INIT_PARAM_S task2 = {0};
|
||||
g_testCount++;
|
||||
|
||||
ICUNIT_ASSERT_EQUAL_VOID(g_testCount, 1, g_testCount); // 1, Here, assert that g_testCount is equal to 1.
|
||||
@@ -123,7 +124,7 @@ static VOID TaskFuncA(VOID)
|
||||
static UINT32 Testcase(void)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
g_testCount = 0;
|
||||
|
||||
ret = LOS_MuxCreate(&g_mutexTest1);
|
||||
|
||||
@@ -78,7 +78,8 @@ static VOID TaskFuncC(VOID)
|
||||
static VOID TaskFuncA(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task1, task2;
|
||||
TSK_INIT_PARAM_S task1 = {0};
|
||||
TSK_INIT_PARAM_S task2 = {0};
|
||||
g_testCount++;
|
||||
|
||||
ICUNIT_ASSERT_EQUAL_VOID(g_testCount, 1, g_testCount); // 1, Here, assert that g_testCount is equal to 1.
|
||||
@@ -128,7 +129,7 @@ static VOID TaskFuncA(VOID)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
g_testCount = 0;
|
||||
|
||||
ret = LOS_MuxCreate(&g_mutexTest1);
|
||||
|
||||
@@ -73,7 +73,8 @@ static VOID TaskFuncB(VOID)
|
||||
static VOID TaskFuncA(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task1, task2;
|
||||
TSK_INIT_PARAM_S task1 = {0};
|
||||
TSK_INIT_PARAM_S task2 = {0};
|
||||
g_testCount++;
|
||||
|
||||
ICUNIT_ASSERT_EQUAL_VOID(g_testCount, 1, g_testCount); // 1, Here, assert that g_testCount is equal to 1.
|
||||
@@ -121,7 +122,7 @@ static VOID TaskFuncA(VOID)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
g_testCount = 0;
|
||||
|
||||
ret = LOS_MuxCreate(&g_mutexTest1);
|
||||
|
||||
@@ -76,7 +76,8 @@ static VOID TaskFuncB(VOID)
|
||||
static VOID TaskFuncA(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task1, task2;
|
||||
TSK_INIT_PARAM_S task1 = {0};
|
||||
TSK_INIT_PARAM_S task2 = {0};
|
||||
g_testCount++;
|
||||
|
||||
ICUNIT_ASSERT_EQUAL_VOID(g_testCount, 1, g_testCount); // 1, Here, assert that g_testCount is equal to 1.
|
||||
@@ -127,7 +128,7 @@ static VOID TaskFuncA(VOID)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
g_testCount = 0;
|
||||
|
||||
ret = LOS_MuxCreate(&g_mutexTest1);
|
||||
|
||||
@@ -81,7 +81,8 @@ static VOID TaskFuncB(VOID)
|
||||
static VOID TaskFuncA(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task1, task2;
|
||||
TSK_INIT_PARAM_S task1 = {0};
|
||||
TSK_INIT_PARAM_S task2 = {0};
|
||||
g_testCount++;
|
||||
|
||||
ICUNIT_ASSERT_EQUAL_VOID(g_testCount, 1, g_testCount); // 1, Here, assert that g_testCount is equal to 1.
|
||||
@@ -123,7 +124,7 @@ static VOID TaskFuncA(VOID)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
g_testCount = 0;
|
||||
|
||||
ret = LOS_MuxCreate(&g_mutexTest1);
|
||||
|
||||
@@ -79,7 +79,8 @@ static VOID TaskFuncB(VOID)
|
||||
static VOID TaskFuncA(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task1, task2;
|
||||
TSK_INIT_PARAM_S task1 = {0};
|
||||
TSK_INIT_PARAM_S task2 = {0};
|
||||
g_testCount++;
|
||||
|
||||
ICUNIT_ASSERT_EQUAL_VOID(g_testCount, 1, g_testCount); // 1, Here, assert that g_testCount is equal to 1.
|
||||
@@ -121,7 +122,7 @@ static VOID TaskFuncA(VOID)
|
||||
static UINT32 Testcase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task;
|
||||
TSK_INIT_PARAM_S task = {0};
|
||||
g_testCount = 0;
|
||||
|
||||
ret = LOS_MuxCreate(&g_mutexTest1);
|
||||
|
||||
@@ -69,7 +69,7 @@ static UINT32 Testcase(VOID)
|
||||
CHAR buff1[8] = "UniDSP";
|
||||
|
||||
TSK_INIT_PARAM_S task1 = { 0 };
|
||||
TSK_INIT_PARAM_S task2;
|
||||
TSK_INIT_PARAM_S task2 = { 0 };
|
||||
|
||||
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)ItQueueHead032F01;
|
||||
task1.pcName = "TskName1";
|
||||
|
||||
@@ -155,6 +155,8 @@ static_library("test_task") {
|
||||
"It_los_task_126.c",
|
||||
"It_los_task_127.c",
|
||||
"It_los_task_128.c",
|
||||
"It_los_task_129.c",
|
||||
"It_los_task_130.c",
|
||||
]
|
||||
|
||||
configs += [ "//kernel/liteos_m/testsuites:include" ]
|
||||
|
||||
@@ -128,6 +128,9 @@ VOID ItSuiteLosTask()
|
||||
ItLosTask126();
|
||||
ItLosTask127();
|
||||
ItLosTask128();
|
||||
ItLosTask129();
|
||||
ItLosTask130();
|
||||
|
||||
#if (LOS_KERNEL_TEST_FULL == 1)
|
||||
ItLosTask039();
|
||||
ItLosTask040();
|
||||
|
||||
@@ -183,6 +183,8 @@ extern VOID ItLosTask125(VOID);
|
||||
extern VOID ItLosTask126(VOID);
|
||||
extern VOID ItLosTask127(VOID);
|
||||
extern VOID ItLosTask128(VOID);
|
||||
extern VOID ItLosTask129(VOID);
|
||||
extern VOID ItLosTask130(VOID);
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
|
||||
78
testsuites/sample/kernel/task/It_los_task_129.c
Normal file
78
testsuites/sample/kernel/task/It_los_task_129.c
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Copyright (c) 2021-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_task.h"
|
||||
|
||||
static VOID *TaskDeatchf01(void *argument)
|
||||
{
|
||||
g_testCount++;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static UINT32 TestCase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
UINT32 taskID;
|
||||
TSK_INIT_PARAM_S osTaskInitParam = { 0 };
|
||||
VOID *taskStack = NULL;
|
||||
g_testCount = 0;
|
||||
|
||||
osTaskInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskDeatchf01;
|
||||
osTaskInitParam.uwStackSize = OS_TSK_TEST_STACK_SIZE;
|
||||
osTaskInitParam.pcName = "deatch";
|
||||
osTaskInitParam.usTaskPrio = TASK_PRIO_TEST - 5; /* 5: Relatively high priority */
|
||||
osTaskInitParam.uwResved = LOS_TASK_ATTR_JOINABLE;
|
||||
|
||||
taskStack = LOS_MemAlloc(OS_TASK_STACK_ADDR, osTaskInitParam.uwStackSize);
|
||||
osTaskInitParam.stackAddr = (UINTPTR)taskStack;
|
||||
ICUNIT_ASSERT_NOT_EQUAL(osTaskInitParam.stackAddr, 0, osTaskInitParam.stackAddr);
|
||||
|
||||
ret = LOS_TaskCreate(&taskID, &osTaskInitParam);
|
||||
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
|
||||
|
||||
ICUNIT_ASSERT_EQUAL(g_testCount, 1, g_testCount);
|
||||
|
||||
ret = LOS_TaskJoin(taskID, NULL);
|
||||
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
|
||||
|
||||
ret = LOS_TaskDelete(taskID);
|
||||
ICUNIT_ASSERT_EQUAL(ret, LOS_ERRNO_TSK_NOT_CREATED, ret);
|
||||
|
||||
ret = LOS_MemFree(OS_TASK_STACK_ADDR, taskStack);
|
||||
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
|
||||
return LOS_OK;
|
||||
}
|
||||
|
||||
VOID ItLosTask129(VOID) // IT_Layer_ModuleORFeature_No
|
||||
{
|
||||
TEST_ADD_CASE("ItLosTask129", TestCase, TEST_LOS, TEST_TASK, TEST_LEVEL0, TEST_FUNCTION);
|
||||
}
|
||||
|
||||
139
testsuites/sample/kernel/task/It_los_task_130.c
Normal file
139
testsuites/sample/kernel/task/It_los_task_130.c
Normal file
@@ -0,0 +1,139 @@
|
||||
/*
|
||||
* 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_task.h"
|
||||
|
||||
|
||||
static VOID TaskF02(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
|
||||
ICUNIT_GOTO_EQUAL(g_testCount, 2, g_testCount, EXIT1); // 2, Here, assert that g_testCount is equal to 2.
|
||||
g_testCount++;
|
||||
|
||||
ret = LOS_TaskResume(g_testTaskID01);
|
||||
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
|
||||
|
||||
ICUNIT_GOTO_EQUAL(g_testCount, 4, g_testCount, EXIT2); // 4, Here, assert that g_testCount is equal to 4.
|
||||
g_testCount++;
|
||||
|
||||
LOS_TaskDelete(g_testTaskID02);
|
||||
|
||||
return;
|
||||
|
||||
EXIT1:
|
||||
LOS_TaskDelete(g_testTaskID01);
|
||||
EXIT2:
|
||||
LOS_TaskDelete(g_testTaskID02);
|
||||
return;
|
||||
}
|
||||
|
||||
static VOID TaskF01(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
|
||||
ICUNIT_GOTO_EQUAL(g_testCount, 0, g_testCount, EXIT2);
|
||||
g_testCount++;
|
||||
|
||||
ret = LOS_TaskSuspend(g_testTaskID01);
|
||||
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
|
||||
|
||||
ICUNIT_GOTO_EQUAL(g_testCount, 3, g_testCount, EXIT1); // 3, Here, assert that g_testCount is equal to 3.
|
||||
g_testCount++;
|
||||
|
||||
LOS_TaskDelete(g_testTaskID01);
|
||||
|
||||
return;
|
||||
|
||||
EXIT1:
|
||||
LOS_TaskDelete(g_testTaskID02);
|
||||
EXIT2:
|
||||
LOS_TaskDelete(g_testTaskID01);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static UINT32 TestCase(VOID)
|
||||
{
|
||||
UINT32 ret;
|
||||
TSK_INIT_PARAM_S task1 = { 0 };
|
||||
VOID *taskStack1 = NULL;
|
||||
VOID *taskStack2 = NULL;
|
||||
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
|
||||
task1.uwStackSize = TASK_STACK_SIZE_TEST;
|
||||
task1.pcName = "Tsk058A";
|
||||
task1.usTaskPrio = TASK_PRIO_TEST - 2; // 2, set new task priority, it is higher than the current task.
|
||||
|
||||
g_testCount = 0;
|
||||
|
||||
taskStack1 = LOS_MemAlloc(OS_TASK_STACK_ADDR, task1.uwStackSize);
|
||||
task1.stackAddr = (UINTPTR)taskStack1;
|
||||
ICUNIT_ASSERT_NOT_EQUAL(task1.stackAddr, 0, task1.stackAddr);
|
||||
|
||||
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
|
||||
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
|
||||
|
||||
ICUNIT_GOTO_EQUAL(g_testCount, 1, g_testCount, EXIT);
|
||||
g_testCount++;
|
||||
|
||||
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF02;
|
||||
task1.pcName = "Tsk058B";
|
||||
task1.usTaskPrio = TASK_PRIO_TEST - 1;
|
||||
|
||||
taskStack2 = LOS_MemAlloc(OS_TASK_STACK_ADDR, task1.uwStackSize);
|
||||
task1.stackAddr = (UINTPTR)taskStack2;
|
||||
ICUNIT_GOTO_NOT_EQUAL(task1.stackAddr, 0, task1.stackAddr, EXIT);
|
||||
|
||||
ret = LOS_TaskCreate(&g_testTaskID02, &task1);
|
||||
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
|
||||
|
||||
ICUNIT_GOTO_EQUAL(g_testCount, 5, g_testCount, EXIT); // 5, Here, assert that g_testCount is equal to 5.
|
||||
|
||||
ret = LOS_MemFree(OS_TASK_STACK_ADDR, taskStack1);
|
||||
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
|
||||
ret = LOS_MemFree(OS_TASK_STACK_ADDR, taskStack2);
|
||||
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
|
||||
|
||||
return LOS_OK;
|
||||
|
||||
EXIT:
|
||||
LOS_TaskDelete(g_testTaskID01);
|
||||
(VOID)LOS_MemFree(OS_TASK_STACK_ADDR, taskStack1);
|
||||
(VOID)LOS_MemFree(OS_TASK_STACK_ADDR, taskStack2);
|
||||
return LOS_OK;
|
||||
}
|
||||
|
||||
VOID ItLosTask130(VOID) // IT_Layer_ModuleORFeature_No
|
||||
{
|
||||
TEST_ADD_CASE("ItLosTask130", TestCase, TEST_LOS, TEST_TASK, TEST_LEVEL1, TEST_FUNCTION);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user