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:
parent
4983542b46
commit
96cc92d035
|
@ -244,37 +244,49 @@ osThreadId_t osThreadNew(osThreadFunc_t func, void *argument, const osThreadAttr
|
|||
{
|
||||
UINT32 tid;
|
||||
UINT32 ret;
|
||||
LosTaskCB *pstTaskCB = NULL;
|
||||
TSK_INIT_PARAM_S stTskInitParam = {NULL};
|
||||
osThreadAttr_t attrTemp = {0};
|
||||
TSK_INIT_PARAM_S stTskInitParam = {0};
|
||||
UINT16 priority;
|
||||
|
||||
if (OS_INT_ACTIVE || (func == NULL)) {
|
||||
return (osThreadId_t)NULL;
|
||||
}
|
||||
|
||||
priority = attr ? LOS_PRIORITY(attr->priority) : LOSCFG_BASE_CORE_TSK_DEFAULT_PRIO;
|
||||
if (attr == NULL) {
|
||||
attrTemp.priority = osPriorityNormal,
|
||||
attr = &attrTemp;
|
||||
}
|
||||
|
||||
priority = LOS_PRIORITY(attr->priority);
|
||||
if (!ISVALID_LOS_PRIORITY(priority)) {
|
||||
/* unsupported priority */
|
||||
return (osThreadId_t)NULL;
|
||||
}
|
||||
|
||||
stTskInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)func;
|
||||
stTskInitParam.uwArg = (UINT32)argument;
|
||||
stTskInitParam.uwStackSize = attr ? attr->stack_size : LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
|
||||
stTskInitParam.pcName = (CHAR *)(attr ? attr->name : "[NULL]");
|
||||
stTskInitParam.usTaskPrio = priority;
|
||||
if ((attr != NULL) && (attr->attr_bits == osThreadJoinable)) {
|
||||
if ((attr->stack_mem != NULL) && (attr->stack_size != 0)) {
|
||||
stTskInitParam.stackAddr = (UINTPTR)attr->stack_mem;
|
||||
stTskInitParam.uwStackSize = attr->stack_size;
|
||||
} else if (attr->stack_size != 0) {
|
||||
stTskInitParam.uwStackSize = attr->stack_size;
|
||||
} else {
|
||||
stTskInitParam.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
|
||||
}
|
||||
if (attr->name != NULL) {
|
||||
stTskInitParam.pcName = (char *)attr->name;
|
||||
} else {
|
||||
stTskInitParam.pcName = "CmsisTask";
|
||||
}
|
||||
if (attr->attr_bits == osThreadJoinable) {
|
||||
stTskInitParam.uwResved = LOS_TASK_ATTR_JOINABLE;
|
||||
}
|
||||
stTskInitParam.usTaskPrio = priority;
|
||||
ret = LOS_TaskCreate(&tid, &stTskInitParam);
|
||||
|
||||
if (ret != LOS_OK) {
|
||||
return (osThreadId_t)NULL;
|
||||
}
|
||||
|
||||
pstTaskCB = OS_TCB_FROM_TID(tid);
|
||||
|
||||
return (osThreadId_t)pstTaskCB;
|
||||
return (osThreadId_t)OS_TCB_FROM_TID(tid);
|
||||
}
|
||||
|
||||
const char *osThreadGetName(osThreadId_t thread_id)
|
||||
|
|
|
@ -92,27 +92,23 @@ static inline bool IsPthread(pthread_t thread)
|
|||
return true;
|
||||
}
|
||||
|
||||
static int PthreadCreateAttrInit(const pthread_attr_t *attr, void *(*startRoutine)(void *), void *arg,
|
||||
TSK_INIT_PARAM_S *taskInitParam)
|
||||
static int PthreadAttrCheck(const pthread_attr_t *threadAttr, TSK_INIT_PARAM_S *taskInitParam)
|
||||
{
|
||||
const pthread_attr_t *threadAttr = attr;
|
||||
INT32 ret;
|
||||
struct sched_param schedParam = { 0 };
|
||||
INT32 policy = 0;
|
||||
pthread_attr_t attrTmp;
|
||||
INT32 ret;
|
||||
|
||||
if (!attr) {
|
||||
(VOID)pthread_attr_init(&attrTmp);
|
||||
threadAttr = &attrTmp;
|
||||
}
|
||||
|
||||
if (threadAttr->stackaddr_set != 0) {
|
||||
return ENOTSUP;
|
||||
}
|
||||
if (threadAttr->stacksize < PTHREAD_STACK_MIN) {
|
||||
return EINVAL;
|
||||
}
|
||||
taskInitParam->uwStackSize = threadAttr->stacksize;
|
||||
if ((threadAttr->stackaddr_set != 0) && (threadAttr->stacksize_set != 0)) {
|
||||
taskInitParam->stackAddr = (UINTPTR)threadAttr->stackaddr;
|
||||
}
|
||||
if (threadAttr->stacksize_set != 0) {
|
||||
taskInitParam->uwStackSize = threadAttr->stacksize;
|
||||
} else {
|
||||
taskInitParam->uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
|
||||
}
|
||||
if (threadAttr->inheritsched == PTHREAD_EXPLICIT_SCHED) {
|
||||
taskInitParam->usTaskPrio = (UINT16)threadAttr->schedparam.sched_priority;
|
||||
} else if (IsPthread(pthread_self())) {
|
||||
|
@ -124,6 +120,25 @@ static int PthreadCreateAttrInit(const pthread_attr_t *attr, void *(*startRoutin
|
|||
} else {
|
||||
taskInitParam->usTaskPrio = (UINT16)threadAttr->schedparam.sched_priority;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int PthreadCreateAttrInit(const pthread_attr_t *attr, void *(*startRoutine)(void *), void *arg,
|
||||
TSK_INIT_PARAM_S *taskInitParam)
|
||||
{
|
||||
const pthread_attr_t *threadAttr = attr;
|
||||
pthread_attr_t attrTmp;
|
||||
INT32 ret;
|
||||
|
||||
if (attr == NULL) {
|
||||
(VOID)pthread_attr_init(&attrTmp);
|
||||
threadAttr = &attrTmp;
|
||||
}
|
||||
|
||||
ret = PthreadAttrCheck(threadAttr, taskInitParam);
|
||||
if (ret != 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
PthreadData *pthreadData = (PthreadData *)malloc(sizeof(PthreadData));
|
||||
if (pthreadData == NULL) {
|
||||
|
|
|
@ -219,30 +219,32 @@ int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stackSize)
|
|||
|
||||
attr->stacksize_set = 1;
|
||||
attr->stacksize = stackSize;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int pthread_attr_setstack(pthread_attr_t *attr, void *stackAddr, size_t stackSize)
|
||||
{
|
||||
(void)attr;
|
||||
(void)stackAddr;
|
||||
(void)stackSize;
|
||||
PRINT_ERR("%s: Don't support the pthread stack func currently!\n", __FUNCTION__);
|
||||
errno = ENOSYS;
|
||||
if ((attr == NULL) || (stackAddr == NULL) || (stackSize < PTHREAD_STACK_MIN)) {
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
return -1;
|
||||
attr->stacksize_set = 1;
|
||||
attr->stacksize = stackSize;
|
||||
attr->stackaddr_set = 1;
|
||||
attr->stackaddr = stackAddr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int pthread_attr_getstack(const pthread_attr_t *attr, void **stackAddr, size_t *stackSize)
|
||||
{
|
||||
(void)attr;
|
||||
(void)stackAddr;
|
||||
(void)stackSize;
|
||||
PRINT_ERR("%s: Don't support the pthread stack func currently!\n", __FUNCTION__);
|
||||
errno = ENOSYS;
|
||||
if ((attr == NULL) || (stackAddr == NULL) || (stackSize == NULL) ||
|
||||
!attr->stacksize_set || !attr->stackaddr_set) {
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
return -1;
|
||||
*stackAddr = attr->stackaddr;
|
||||
*stackSize = attr->stacksize;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stackSize)
|
||||
|
|
|
@ -457,6 +457,7 @@ typedef struct tagTskInitParam {
|
|||
TSK_ENTRY_FUNC pfnTaskEntry; /**< Task entrance function */
|
||||
UINT16 usTaskPrio; /**< Task priority */
|
||||
UINT32 uwArg; /**< Task parameters */
|
||||
UINTPTR stackAddr; /**< Task satck memory */
|
||||
UINT32 uwStackSize; /**< Task stack size */
|
||||
CHAR *pcName; /**< Task name */
|
||||
UINT32 uwResved; /**< Reserved */
|
||||
|
@ -1276,6 +1277,14 @@ extern UINT32 LOS_TaskDetach(UINT32 taskID);
|
|||
*/
|
||||
#define OS_TASK_STATUS_EXIT 0x0100
|
||||
|
||||
/**
|
||||
* @ingroup los_task
|
||||
* Flag that indicates the task or task control block status.
|
||||
*
|
||||
* Task stack allocated by the system.
|
||||
*/
|
||||
#define OS_TASK_FLAG_STACK_FREE 0x0800
|
||||
|
||||
/**
|
||||
* @ingroup los_task
|
||||
* Flag that indicates the task property.
|
||||
|
|
|
@ -126,19 +126,28 @@ STATIC_INLINE UINT32 OsCheckTaskIDValid(UINT32 taskID)
|
|||
return ret;
|
||||
}
|
||||
|
||||
STATIC INLINE VOID OsInsertTCBToFreeList(LosTaskCB *taskCB)
|
||||
{
|
||||
UINT32 taskID = taskCB->taskID;
|
||||
(VOID)memset_s(taskCB, sizeof(LosTaskCB), 0, sizeof(LosTaskCB));
|
||||
taskCB->taskID = taskID;
|
||||
taskCB->taskStatus = OS_TASK_STATUS_UNUSED;
|
||||
LOS_ListAdd(&g_losFreeTask, &taskCB->pendList);
|
||||
}
|
||||
|
||||
STATIC VOID OsRecycleTaskResources(LosTaskCB *taskCB, UINTPTR *stackPtr)
|
||||
{
|
||||
if (!(taskCB->taskStatus & OS_TASK_STATUS_EXIT)) {
|
||||
LOS_ListAdd(&g_losFreeTask, &taskCB->pendList);
|
||||
taskCB->taskStatus = OS_TASK_STATUS_UNUSED;
|
||||
}
|
||||
if (taskCB->topOfStack != 0) {
|
||||
if ((taskCB->taskStatus & OS_TASK_FLAG_STACK_FREE) && (taskCB->topOfStack != 0)) {
|
||||
#if (LOSCFG_EXC_HARDWARE_STACK_PROTECTION == 1)
|
||||
*stackPtr = taskCB->topOfStack - OS_TASK_STACK_PROTECT_SIZE;
|
||||
#else
|
||||
*stackPtr = taskCB->topOfStack;
|
||||
#endif
|
||||
taskCB->topOfStack = (UINT32)NULL;
|
||||
taskCB->taskStatus &= ~OS_TASK_FLAG_STACK_FREE;
|
||||
}
|
||||
if (!(taskCB->taskStatus & OS_TASK_STATUS_EXIT)) {
|
||||
OsInsertTCBToFreeList(taskCB);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -667,10 +676,9 @@ LITE_OS_SEC_TEXT_INIT STATIC_INLINE UINT32 OsTaskInitParamCheck(TSK_INIT_PARAM_S
|
|||
return LOS_OK;
|
||||
}
|
||||
|
||||
LITE_OS_SEC_TEXT_INIT UINT32 OsNewTaskInit(LosTaskCB *taskCB, TSK_INIT_PARAM_S *taskInitParam, VOID *topOfStack)
|
||||
STATIC UINT32 OsNewTaskInit(LosTaskCB *taskCB, TSK_INIT_PARAM_S *taskInitParam)
|
||||
{
|
||||
taskCB->arg = taskInitParam->uwArg;
|
||||
taskCB->topOfStack = (UINT32)(UINTPTR)topOfStack;
|
||||
taskCB->stackSize = taskInitParam->uwStackSize;
|
||||
taskCB->taskSem = NULL;
|
||||
taskCB->taskMux = NULL;
|
||||
|
@ -695,9 +703,30 @@ LITE_OS_SEC_TEXT_INIT UINT32 OsNewTaskInit(LosTaskCB *taskCB, TSK_INIT_PARAM_S *
|
|||
LOS_ListInit(&taskCB->joinList);
|
||||
}
|
||||
|
||||
if (taskInitParam->stackAddr == (UINTPTR)NULL) {
|
||||
#if (LOSCFG_EXC_HARDWARE_STACK_PROTECTION == 1)
|
||||
UINT32 stackSize = taskCB->stackSize + OS_TASK_STACK_PROTECT_SIZE;
|
||||
UINTPTR stackPtr = (UINTPTR)LOS_MemAllocAlign(OS_TASK_STACK_ADDR, stackSize, OS_TASK_STACK_PROTECT_SIZE);
|
||||
taskCB->topOfStack = stackPtr + OS_TASK_STACK_PROTECT_SIZE;
|
||||
#else
|
||||
taskCB->topOfStack = (UINTPTR)LOS_MemAllocAlign(OS_TASK_STACK_ADDR, taskCB->stackSize,
|
||||
LOSCFG_STACK_POINT_ALIGN_SIZE);
|
||||
#endif
|
||||
if (taskCB->topOfStack == (UINTPTR)NULL) {
|
||||
return LOS_ERRNO_TSK_NO_MEMORY;
|
||||
}
|
||||
taskCB->taskStatus |= OS_TASK_FLAG_STACK_FREE;
|
||||
} else {
|
||||
taskCB->topOfStack = LOS_Align(taskInitParam->stackAddr, LOSCFG_STACK_POINT_ALIGN_SIZE);
|
||||
taskCB->stackSize = ALIGN(taskCB->stackSize, OS_TASK_STACK_ADDR_ALIGN);
|
||||
}
|
||||
|
||||
/* initialize the task stack, write magic num to stack top */
|
||||
(VOID)memset_s((VOID *)taskCB->topOfStack, taskCB->stackSize,
|
||||
(INT32)(OS_TASK_STACK_INIT & 0xFF), taskCB->stackSize);
|
||||
|
||||
*((UINT32 *)taskCB->topOfStack) = OS_TASK_MAGIC_WORD;
|
||||
taskCB->stackPointer = ArchTskStackInit(taskCB->taskID, taskCB->stackSize, (VOID *)taskCB->topOfStack);
|
||||
|
||||
return LOS_OK;
|
||||
}
|
||||
|
||||
|
@ -711,7 +740,6 @@ LITE_OS_SEC_TEXT_INIT UINT32 OsNewTaskInit(LosTaskCB *taskCB, TSK_INIT_PARAM_S *
|
|||
LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskCreateOnly(UINT32 *taskID, TSK_INIT_PARAM_S *taskInitParam)
|
||||
{
|
||||
UINT32 intSave;
|
||||
VOID *topOfStack = NULL;
|
||||
LosTaskCB *taskCB = NULL;
|
||||
UINT32 retVal;
|
||||
|
||||
|
@ -734,29 +762,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskCreateOnly(UINT32 *taskID, TSK_INIT_PARAM_S
|
|||
|
||||
taskCB = OS_TCB_FROM_PENDLIST(LOS_DL_LIST_FIRST(&g_losFreeTask));
|
||||
LOS_ListDelete(LOS_DL_LIST_FIRST(&g_losFreeTask));
|
||||
|
||||
LOS_IntRestore(intSave);
|
||||
|
||||
#if (LOSCFG_EXC_HARDWARE_STACK_PROTECTION == 1)
|
||||
UINTPTR stackPtr = (UINTPTR)LOS_MemAllocAlign(OS_TASK_STACK_ADDR, taskInitParam->uwStackSize +
|
||||
OS_TASK_STACK_PROTECT_SIZE, OS_TASK_STACK_PROTECT_SIZE);
|
||||
topOfStack = (VOID *)(stackPtr + OS_TASK_STACK_PROTECT_SIZE);
|
||||
#else
|
||||
topOfStack = (VOID *)LOS_MemAllocAlign(OS_TASK_STACK_ADDR, taskInitParam->uwStackSize,
|
||||
LOSCFG_STACK_POINT_ALIGN_SIZE);
|
||||
#endif
|
||||
if (topOfStack == NULL) {
|
||||
intSave = LOS_IntLock();
|
||||
LOS_ListAdd(&g_losFreeTask, &taskCB->pendList);
|
||||
LOS_IntRestore(intSave);
|
||||
return LOS_ERRNO_TSK_NO_MEMORY;
|
||||
}
|
||||
/* initialize the task stack, write magic num to stack top */
|
||||
(VOID)memset_s(topOfStack, taskInitParam->uwStackSize,
|
||||
(INT32)(OS_TASK_STACK_INIT & 0xFF), taskInitParam->uwStackSize);
|
||||
|
||||
retVal = OsNewTaskInit(taskCB, taskInitParam, topOfStack);
|
||||
retVal = OsNewTaskInit(taskCB, taskInitParam);
|
||||
if (retVal != LOS_OK) {
|
||||
intSave = LOS_IntLock();
|
||||
OsInsertTCBToFreeList(taskCB);
|
||||
LOS_IntRestore(intSave);
|
||||
return retVal;
|
||||
}
|
||||
|
||||
|
@ -1110,7 +1122,7 @@ LITE_OS_SEC_TEXT_INIT UINT32 LOS_TaskDelete(UINT32 taskID)
|
|||
|
||||
if (taskCB->taskStatus & OS_TASK_STATUS_RUNNING) {
|
||||
if (!(taskCB->taskStatus & OS_TASK_STATUS_EXIT)) {
|
||||
taskCB->taskStatus = OS_TASK_STATUS_UNUSED;
|
||||
taskCB->taskStatus |= OS_TASK_STATUS_UNUSED;
|
||||
OsRunningTaskDelete(taskID, taskCB);
|
||||
}
|
||||
LOS_IntRestore(intSave);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue