未验证 提交 b9830c61 编写于 作者: O openharmony_ci 提交者: Gitee

!592 【liteos_m】kernel接口融合修改

Merge pull request !592 from LiteOS/master
......@@ -35,7 +35,7 @@
#include "los_debug.h"
STATIC UINT32 SysTickStart(HWI_PROC_FUNC handler);
STATIC VOID SysTickReload(UINT64 nextResponseTime);
STATIC UINT64 SysTickReload(UINT64 nextResponseTime);
STATIC UINT64 SysTickCycleGet(UINT32 *period);
STATIC VOID SysTickLock(VOID);
STATIC VOID SysTickUnlock(VOID);
......
......@@ -256,7 +256,7 @@ VOID OsSetVector(UINT32 num, HWI_PROC_FUNC vector)
**************************************************************************** */
STATIC UINT32 HwiNumGet(VOID)
{
return HalGetPsr();
return (HalGetPsr() >> PSR_VEC_OFFSET) & MASK_8_BITS;
}
HwiControllerOps g_archHwiOps = {
......@@ -283,7 +283,6 @@ inline UINT32 ArchIsIntActive(VOID)
LITE_OS_SEC_TEXT_MINOR VOID HalHwiDefaultHandler(VOID)
{
UINT32 irqNum = HwiNumGet();
irqNum = (irqNum >> PSR_VEC_OFFSET) & MASK_8_BITS;
PRINT_ERR("%s irqnum:%x\n", __FUNCTION__, irqNum);
while (1) {}
}
......@@ -317,7 +316,6 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
LOS_IntRestore(intSave);
hwiIndex = HwiNumGet();
hwiIndex = (hwiIndex >> PSR_VEC_OFFSET) & MASK_8_BITS;
OsHookCall(LOS_HOOK_TYPE_ISR_ENTER, hwiIndex);
HalPreInterruptHandler(hwiIndex);
......
......@@ -80,6 +80,7 @@ UINT32 ArchIsIntActive(VOID);
#define LOS_HwiDisable ArchIntDisable
#define LOS_HwiClear ArchIntClear
#define LOS_HwiSetPriority ArchIntSetPriority
#define LOS_HwiCurIrqNum ArchIntCurIrqNum
UINT32 ArchIntLock(VOID);
#define LOS_IntLock ArchIntLock
......@@ -193,6 +194,14 @@ STATIC INLINE UINT32 ArchIntSetPriority(HWI_HANDLE_T hwiNum, HWI_PRIOR_T priorit
return g_archHwiOps.setIrqPriority(hwiNum, priority);
}
STATIC INLINE UINT32 ArchIntCurIrqNum(VOID)
{
if (g_archHwiOps.getCurIrqNum == NULL) {
return LOS_NOK;
}
return g_archHwiOps.getCurIrqNum();
}
STATIC INLINE HwiControllerOps *ArchIntOpsGet(VOID)
{
return &g_archHwiOps;
......
......@@ -49,7 +49,7 @@ static inline int MapError(UINT32 err)
switch (err) {
case LOS_OK:
return 0;
case LOS_ERRNO_MUX_PEND_INTERR:
case LOS_ERRNO_MUX_IN_INTERR:
return EPERM;
case LOS_ERRNO_MUX_PEND_IN_LOCK:
return EDEADLK;
......@@ -134,7 +134,7 @@ int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexA
if (mutex == NULL) {
return EINVAL;
}
if (mutexAttr == NULL) {
(VOID)pthread_mutexattr_init(&useAttr);
} else {
......@@ -324,7 +324,7 @@ int pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *absTi
UINT64 timeoutNs;
struct timespec curTime = {0};
LosMuxCB *muxPended = NULL;
ret = MuxPreCheck(mutex, OS_TCB_FROM_TID(LOS_CurTaskIDGet()));
if (ret != 0) {
return (INT32)ret;
......
......@@ -104,7 +104,7 @@ extern "C" {
*
* Solution: Check whether the mutex is being locked during an interrupt.
*/
#define LOS_ERRNO_MUX_PEND_INTERR LOS_ERRNO_OS_ERROR(LOS_MOD_MUX, 0x05)
#define LOS_ERRNO_MUX_IN_INTERR LOS_ERRNO_OS_ERROR(LOS_MOD_MUX, 0x05)
/**
* @ingroup los_mux
......@@ -256,7 +256,7 @@ extern UINT32 LOS_MuxDelete(UINT32 muxHandle);
* is not applicable for the current operation.
* @retval #LOS_ERRNO_MUX_UNAVAILABLE The mutex fails to be locked because it is locked by another thread and
* a period of time is not set for waiting for the mutex to become available.
* @retval #LOS_ERRNO_MUX_PEND_INTERR The mutex is being locked during an interrupt.
* @retval #LOS_ERRNO_MUX_IN_INTERR The mutex is being locked during an interrupt.
* @retval #LOS_ERRNO_MUX_PEND_IN_LOCK The mutex is waited on when the task scheduling is disabled.
* @retval #LOS_ERRNO_MUX_TIMEOUT The mutex waiting times out.
* @retval #LOS_OK The mutex is successfully locked.
......@@ -284,7 +284,7 @@ extern UINT32 LOS_MuxPend(UINT32 muxHandle, UINT32 timeout);
*
* @retval #LOS_ERRNO_MUX_INVALID The mutex state (for example, the mutex does not exist or is not in use
* or owned by other thread) is not applicable for the current operation.
* @retval #LOS_ERRNO_MUX_PEND_INTERR The mutex is being released during an interrupt.
* @retval #LOS_ERRNO_MUX_IN_INTERR The mutex is being released during an interrupt.
* @retval #LOS_OK The mutex is successfully released.
* @par Dependency:
* <ul><li>los_mux.h: the header file that contains the API declaration.</li></ul>
......
......@@ -333,7 +333,17 @@ extern "C" {
/**
* @ingroup los_queue
* In struct QUEUE_INFO_S, the length of each waitReadTask/waitWriteTask/waitMemTask array depends on the value
* Queue error code: The buffer size passed in during queue readding or writting is bigger than the biggest size.
*
* Value: 0x02000620
*
* Solution: Decrease the buffer size.
*/
#define LOS_ERRNO_QUEUE_BUFFER_SIZE_TOO_BIG LOS_ERRNO_OS_ERROR(LOS_MOD_QUE, 0x20)
/**
* @ingroup los_queue
* In struct QueueInfo, the length of each waitReadTask/waitWriteTask/waitMemTask array depends on the value
* LOSCFG_BASE_CORE_TSK_LIMIT. The type of each array element is UINT32, which means that each element could mark 32(=2^5) tasks.
* OS_WAIT_TASK_ARRAY_LEN is used to calculate the array length.
* OS_WAIT_TASK_ID_TO_ARRAY_IDX is used to transfer task ID to array index.
......@@ -387,7 +397,7 @@ typedef struct tagQueueInfo {
* <ul><li>los_queue.h: the header file that contains the API declaration.</li></ul>
* @see LOS_QueueDelete
*/
extern UINT32 LOS_QueueCreate(CHAR *queueName,
extern UINT32 LOS_QueueCreate(const CHAR *queueName,
UINT16 len,
UINT32 *queueID,
UINT32 flags,
......
......@@ -1142,25 +1142,6 @@ extern UINT32 LOS_NewTaskIDGet(VOID);
*/
extern CHAR* LOS_TaskNameGet(UINT32 taskID);
/* *
* @ingroup los_task
* @brief: cpu delay.
*
* @par Description:
* This API is used to cpu delay, no task switching.
*
* @attention:
* <ul><li>None.</li></ul>
*
* @param UINT64 [IN] delay times, microseconds.
*
* @retval: None.
* @par Dependency:
* <ul><li>los_task.h: the header file that contains the API declaration.</li></ul>
* @see None.
*/
extern VOID LOS_UDelay(UINT64 microseconds);
/* *
* @ingroup los_task
* @brief: cpu delay.
......@@ -1779,6 +1760,8 @@ STATIC INLINE LosTaskCB *OsCurrTaskGet(VOID)
return g_losTask.runTask;
}
extern VOID LOS_TaskResRecycle(VOID);
#ifdef __cplusplus
#if __cplusplus
}
......
......@@ -137,6 +137,8 @@ extern UINT32 g_sysClock;
#define OS_SYS_NS_PER_SECOND 1000000000
#define OS_SYS_NS_PER_MS 1000000
#define OS_SYS_NS_PER_US 1000
#define OS_CYCLE_PER_TICK (g_sysClock / LOSCFG_BASE_CORE_TICK_PER_SECOND)
......@@ -359,6 +361,63 @@ extern UINT32 LOS_MS2Tick(UINT32 millisec);
*/
extern UINT32 LOS_TickTimerRegister(const ArchTickTimer *timer, const HWI_PROC_FUNC tickHandler);
/* *
* @ingroup los_task
* @brief: cpu delay.
*
* @par Description:
* This API is used to cpu delay, no task switching.
*
* @attention:
* <ul><li>None.</li></ul>
*
* @param UINT64 [IN] delay times, microseconds.
*
* @retval: None.
* @par Dependency:
* <ul><li>los_task.h: the header file that contains the API declaration.</li></ul>
* @see None.
*/
extern VOID LOS_UDelay(UINT64 microseconds);
/* *
* @ingroup los_task
* @brief: cpu delay.
*
* @par Description:
* This API is used to cpu delay, no task switching.
*
* @attention:
* <ul><li>None.</li></ul>
*
* @param UINT32 [IN] delay times, millisecond.
*
* @retval: None.
* @par Dependency:
* <ul><li>los_task.h: the header file that contains the API declaration.</li></ul>
* @see None.
*/
extern VOID LOS_MDelay(UINT32 millisec);
/* *
* @ingroup los_task
* @brief: cpu nanosecond get.
*
* @par Description:
* This API is used to get the current number of nanoseconds.
*
* @attention:
* <ul><li>None.</li></ul>
*
* @param none.
*
* @retval: None.
* @par Dependency:
* <ul><li>los_task.h: the header file that contains the API declaration.</li></ul>
* @see None.
*/
extern UINT64 LOS_CurrNanosec(VOID);
/**
* @ingroup los_tick
* @brief Handle the system tick timeout.
......@@ -407,6 +466,8 @@ typedef struct TagCpuTick {
*/
#define OS_SYS_US_PER_SECOND 1000000
#define OS_SYS_US_PER_MS 1000
/**
* @ingroup los_tick
* The maximum length of name.
......
......@@ -165,7 +165,7 @@ STATIC_INLINE UINT32 OsMuxValidCheck(LosMuxCB *muxPended)
}
if (OS_INT_ACTIVE) {
return LOS_ERRNO_MUX_PEND_INTERR;
return LOS_ERRNO_MUX_IN_INTERR;
}
if (g_losTaskLock) {
......@@ -279,6 +279,11 @@ LITE_OS_SEC_TEXT UINT32 LOS_MuxPost(UINT32 muxHandle)
OS_RETURN_ERROR(LOS_ERRNO_MUX_INVALID);
}
if (OS_INT_ACTIVE) {
LOS_IntRestore(intSave);
OS_RETURN_ERROR(LOS_ERRNO_MUX_IN_INTERR);
}
runningTask = (LosTaskCB *)g_losTask.runTask;
if ((muxPosted->muxCount == 0) || (muxPosted->owner != runningTask)) {
LOS_IntRestore(intSave);
......
......@@ -90,7 +90,7 @@ LITE_OS_SEC_TEXT_INIT UINT32 OsQueueInit(VOID)
Output : queueID --- Queue ID
Return : LOS_OK on success or error code on failure
*****************************************************************************/
LITE_OS_SEC_TEXT_INIT UINT32 LOS_QueueCreate(CHAR *queueName,
LITE_OS_SEC_TEXT_INIT UINT32 LOS_QueueCreate(const CHAR *queueName,
UINT16 len,
UINT32 *queueID,
UINT32 flags,
......@@ -234,9 +234,9 @@ static INLINE VOID OsQueueBufferOperate(LosQueueCB *queueCB, UINT32 operateType,
if (OS_QUEUE_IS_POINT(operateType)) {
if (OS_QUEUE_IS_READ(operateType)) {
*(UINT32 *)bufferAddr = *(UINT32 *)(VOID *)queueNode;
*(UINTPTR *)bufferAddr = *(UINTPTR *)(VOID *)queueNode;
} else {
*(UINT32 *)(VOID *)queueNode = *(UINT32 *)bufferAddr; // change to pp when calling OsQueueOperate
*(UINTPTR *)(VOID *)queueNode = *(UINTPTR *)bufferAddr;
}
} else {
if (OS_QUEUE_IS_READ(operateType)) {
......@@ -271,6 +271,10 @@ static INLINE UINT32 OsQueueOperateParamCheck(const LosQueueCB *queueCB, UINT32
return LOS_ERRNO_QUEUE_WRITE_SIZE_TOO_BIG;
}
if (*bufferSize >= SECUREC_MEM_MAX_LEN) {
return LOS_ERRNO_QUEUE_BUFFER_SIZE_TOO_BIG;
}
return LOS_OK;
}
......
......@@ -1486,19 +1486,7 @@ LITE_OS_SEC_TEXT_MINOR VOID LOS_Msleep(UINT32 mSecs)
(VOID)LOS_TaskDelay(interval);
}
VOID LOS_UDelay(UINT64 microseconds)
VOID LOS_TaskResRecycle(VOID)
{
UINT64 endTime;
if (microseconds == 0) {
return;
}
endTime = (microseconds / OS_SYS_US_PER_SECOND) * g_sysClock +
(microseconds % OS_SYS_US_PER_SECOND) * g_sysClock / OS_SYS_US_PER_SECOND;
endTime = LOS_SysCycleGet() + endTime;
while (LOS_SysCycleGet() < endTime) {
}
return;
OsRecyleFinishedTask();
}
......@@ -36,6 +36,7 @@
#include "los_swtmr.h"
#include "los_sched.h"
#include "los_debug.h"
#include "stdint.h"
LITE_OS_SEC_BSS STATIC ArchTickTimer *g_sysTickTimer = NULL;
LITE_OS_SEC_BSS UINT32 g_ticksPerSec;
......@@ -347,3 +348,58 @@ LITE_OS_SEC_TEXT_INIT UINT32 OsCpuTick2US(CpuTick *cpuTick, UINT32 *usHi, UINT32
return LOS_OK;
}
/*****************************************************************************
Function : LOS_MS2Tick
Description : get current nanoseconds
Input : None
Output : None
Return : nanoseconds
*****************************************************************************/
UINT64 LOS_CurrNanosec(VOID)
{
UINT64 nanos;
nanos = LOS_SysCycleGet() * (OS_SYS_NS_PER_SECOND / OS_SYS_NS_PER_MS) / (g_sysClock / OS_SYS_NS_PER_MS);
return nanos;
}
/*****************************************************************************
Function : LOS_UDelay
Description : cpu delay function
Input : microseconds ---------- microseconds
Output : None
Return : None
*****************************************************************************/
VOID LOS_UDelay(UINT64 microseconds)
{
UINT64 endTime;
if (microseconds == 0) {
return;
}
endTime = (microseconds / OS_SYS_US_PER_SECOND) * g_sysClock +
(microseconds % OS_SYS_US_PER_SECOND) * g_sysClock / OS_SYS_US_PER_SECOND;
endTime = LOS_SysCycleGet() + endTime;
while (LOS_SysCycleGet() < endTime) {
}
return;
}
/*****************************************************************************
Function : LOS_MDelay
Description : cpu delay function
Input : millisec ---------- milliseconds
Output : None
Return : None
*****************************************************************************/
VOID LOS_MDelay(UINT32 millisec)
{
UINT32 delayUs = (UINT32_MAX / OS_SYS_US_PER_MS) * OS_SYS_US_PER_MS;
while (millisec > UINT32_MAX / OS_SYS_US_PER_MS) {
LOS_UDelay(delayUs);
millisec -= (UINT32_MAX / OS_SYS_US_PER_MS);
}
LOS_UDelay(millisec * OS_SYS_US_PER_MS);
return;
}
......@@ -1037,24 +1037,24 @@ STATIC UINT32 OsMemPoolDelete(VOID *pool)
UINT32 LOS_MemInit(VOID *pool, UINT32 size)
{
if ((pool == NULL) || (size <= OS_MEM_MIN_POOL_SIZE)) {
return OS_ERROR;
return LOS_NOK;
}
if (((UINTPTR)pool & (OS_MEM_ALIGN_SIZE - 1)) || \
(size & (OS_MEM_ALIGN_SIZE - 1))) {
PRINT_ERR("LiteOS heap memory address or size configured not aligned:address:0x%x,size:0x%x, alignsize:%d\n", \
(UINTPTR)pool, size, OS_MEM_ALIGN_SIZE);
return OS_ERROR;
return LOS_NOK;
}
if (OsMemPoolInit(pool, size)) {
return OS_ERROR;
return LOS_NOK;
}
#if (LOSCFG_MEM_MUL_POOL == 1)
if (OsMemPoolAdd(pool, size)) {
(VOID)OsMemPoolDeinit(pool);
return OS_ERROR;
return LOS_NOK;
}
#endif
......@@ -1067,11 +1067,11 @@ UINT32 LOS_MemInit(VOID *pool, UINT32 size)
UINT32 LOS_MemDeInit(VOID *pool)
{
if (pool == NULL) {
return OS_ERROR;
return LOS_NOK;
}
if (OsMemPoolDelete(pool)) {
return OS_ERROR;
return LOS_NOK;
}
OsMemPoolDeinit(pool);
......@@ -1593,11 +1593,11 @@ UINT32 LOS_MemFreeByTaskID(VOID *pool, UINT32 taskID)
{
UINT32 args[2] = { taskID, (UINT32)(UINTPTR)pool };
if (pool == NULL) {
return OS_ERROR;
return LOS_NOK;
}
if (taskID >= LOSCFG_BASE_CORE_TSK_LIMIT) {
return OS_ERROR;
return LOS_NOK;
}
OsAllMemNodeDoHandle(pool, MemNodeFreeByTaskIDHandle, (VOID *)args);
......
......@@ -64,6 +64,11 @@ static_library("test_hwi") {
"it_los_hwi_032.c",
"it_los_hwi_033.c",
"it_los_hwi_034.c",
"it_los_hwi_036.c",
"it_los_hwi_037.c",
"it_los_hwi_038.c",
"it_los_hwi_039.c",
"it_los_hwi_040.c",
"llt_los_hwi_035.c",
]
......
......@@ -57,6 +57,11 @@ VOID ItSuiteLosHwi()
ItLosHwi030();
ItLosHwi031();
ItLosHwi034();
ItLosHwi036();
ItLosHwi037();
ItLosHwi038();
ItLosHwi039();
ItLosHwi040();
#if (LOS_KERNEL_MULTI_HWI_TEST == 1)
ItLosHwi003();
ItLosHwi005();
......
......@@ -73,6 +73,12 @@ extern VOID ItLosHwi030(VOID);
extern VOID ItLosHwi031(VOID);
extern VOID ItLosHwi034(VOID);
extern VOID LltLosHwi035(VOID);
extern VOID ItLosHwi036(VOID);
extern VOID ItLosHwi037(VOID);
extern VOID ItLosHwi038(VOID);
extern VOID ItLosHwi039(VOID);
extern VOID ItLosHwi040(VOID);
#if (LOS_KERNEL_MULTI_HWI_TEST == 1)
extern VOID ItLosHwi003(VOID);
......
/*
* Copyright (c) 2022-2022 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_hwi.h"
static UINT32 Testcase(VOID)
{
UINT32 intSave;
UINT32 deltaTicks;
UINT64 timeRecordNS;
UINT64 timeUpdateNS;
UINT64 delayMs = 10; // delay 10 MS
UINT32 deltaMs;
UINT64 delayTicks;
UINT32 loop = 10; // loop 10 time
delayTicks = delayMs * LOSCFG_BASE_CORE_TICK_PER_SECOND / OS_SYS_MS_PER_SECOND;
for (int i = 0; i <= loop; i++, delayTicks++) {
timeRecordNS = LOS_CurrNanosec();
LOS_TaskDelay(delayTicks);
timeUpdateNS = LOS_CurrNanosec();
deltaTicks = ((timeUpdateNS - timeRecordNS) * LOSCFG_BASE_CORE_TICK_PER_SECOND / OS_SYS_NS_PER_SECOND);
if (deltaTicks >= (delayTicks - 1) && deltaTicks <= (delayTicks + 1)) {
continue;
} else {
ICUNIT_ASSERT_EQUAL(deltaTicks, delayTicks, deltaTicks);
}
}
intSave = LOS_IntLock();
for (int i = 1; i <= loop; i++) {
timeRecordNS = LOS_CurrNanosec();
LOS_MDelay(i);
timeUpdateNS = LOS_CurrNanosec();
deltaMs = (timeUpdateNS - timeRecordNS) / OS_SYS_NS_PER_MS;
ICUNIT_ASSERT_EQUAL(deltaMs, i, deltaMs);
}
LOS_IntRestore(intSave);
return LOS_OK;
}
VOID ItLosHwi036(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosHwi036", Testcase, TEST_LOS, TEST_HWI, TEST_LEVEL3, TEST_PRESSURE);
}
/*
* Copyright (c) 2022-2022 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_hwi.h"
static UINT32 Testcase(VOID)
{
UINT32 intSave;
UINT64 timeRecordNS;
UINT64 timeUpdateNS;
UINT32 deltaMs;
UINT32 loop = 10; // loop 10 time
intSave = LOS_IntLock();
for (int i = 1; i <= loop; i++) {
timeRecordNS = LOS_CurrNanosec();
LOS_MDelay(i);
timeUpdateNS = LOS_CurrNanosec();
deltaMs = (timeUpdateNS - timeRecordNS) / OS_SYS_NS_PER_MS;
ICUNIT_ASSERT_EQUAL(deltaMs, i, deltaMs);
}
LOS_IntRestore(intSave);
return LOS_OK;
}
VOID ItLosHwi037(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosHwi037", Testcase, TEST_LOS, TEST_HWI, TEST_LEVEL3, TEST_PRESSURE);
}
/*
* Copyright (c) 2022-2022 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_hwi.h"
static UINT32 Testcase(VOID)
{
UINT32 deltaTicks;
UINT64 timeRecordNS;
UINT64 timeUpdateNS;
UINT64 tickRecord;
UINT64 tickUpdate;
UINT32 loop = 10; // loop 10 time.
timeRecordNS = LOS_CurrNanosec();
tickRecord = LOS_TickCountGet();
LOS_TaskDelay(1);
for (int i = 1; i <= loop; i++) {
LOS_MDelay(i * 10); // i * 10, Set delay time.
timeUpdateNS = LOS_CurrNanosec();
tickUpdate = LOS_TickCountGet();
deltaTicks = (UINT32)((timeUpdateNS - timeRecordNS) * LOSCFG_BASE_CORE_TICK_PER_SECOND / OS_SYS_NS_PER_SECOND);
ICUNIT_ASSERT_WITHIN_EQUAL(deltaTicks, tickUpdate - tickRecord - 1, tickUpdate - tickRecord + 1, deltaTicks);
}
return LOS_OK;
}
VOID ItLosHwi038(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosHwi038", Testcase, TEST_LOS, TEST_HWI, TEST_LEVEL3, TEST_PRESSURE);
}
/*
* Copyright (c) 2022-2022 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_hwi.h"
static VOID HwiF01(VOID)
{
TestHwiClear(HWI_NUM_TEST);
g_testCount++;
EXIT:
return;
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 2;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
LOS_HwiDisable(HWI_NUM_TEST);
TestHwiTrigger(HWI_NUM_TEST);
ICUNIT_GOTO_EQUAL(g_testCount, 0, g_testCount, EXIT); // Compare wiht the expected value 0.
LOS_HwiEnable(HWI_NUM_TEST);
ICUNIT_GOTO_EQUAL(g_testCount, 1, g_testCount, EXIT); // Compare wiht the expected value 1.
TestHwiDelete(HWI_NUM_TEST);
return LOS_OK;
EXIT:
TestHwiDelete(HWI_NUM_TEST);
return LOS_OK;
}
VOID ItLosHwi039(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosHwi039", Testcase, TEST_LOS, TEST_HWI, TEST_LEVEL3, TEST_PRESSURE);
}
/*
* Copyright (c) 2022-2022 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_hwi.h"
static UINT32 TesttriggerIrq(HWI_HANDLE_T hwiNum)
{
g_testCount++;
printf("This is TesttriggerIrq\n");
return LOS_OK;
}
static UINT32 TestclearIrq(HWI_HANDLE_T hwiNum)
{
g_testCount++;
printf("This is TestclearIrq\n");
return LOS_OK;
}
static UINT32 TestenableIrq(HWI_HANDLE_T hwiNum)
{
g_testCount++;
printf("This is TestenableIrq\n");
return LOS_OK;
}
static UINT32 TestdisableIrq(HWI_HANDLE_T hwiNum)
{
g_testCount++;
printf("This is TestdisableIrq\n");
return LOS_OK;
}
static UINT32 TestsetIrqPriority(HWI_HANDLE_T hwiNum, UINT8 priority)
{
g_testCount++;
printf("This is TestsetIrqPriority\n");
return LOS_OK;
}
static UINT32 TestgetCurIrqNum(VOID)
{
g_testCount++;
printf("This is TestgetCurIrqNum\n");
return HWI_NUM_TEST;
}
static VOID HwiF01(VOID)
{
TestHwiClear(HWI_NUM_TEST);
g_testCount++;
return;
}
static UINT32 Testcase(VOID)
{
UINT32 ret = LOS_OK;
UINT32 irqNum = 0;
HWI_PRIOR_T hwiPrio = 2; // 2, Set hwi priority.
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiControllerOps *ops = NULL;
HwiControllerOps *opsBac = (HwiControllerOps *)malloc(sizeof(HwiControllerOps));
if (opsBac == NULL) {
ret = LOS_NOK;
}
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
(VOID)memset_s(opsBac, sizeof(HwiControllerOps), 0, sizeof(HwiControllerOps));
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiTrigger(LOSCFG_PLATFORM_HWI_LIMIT + 1);
ICUNIT_ASSERT_EQUAL(ret, OS_ERRNO_HWI_NUM_INVALID, ret);
ret = LOS_HwiEnable(LOSCFG_PLATFORM_HWI_LIMIT + 1);
ICUNIT_ASSERT_EQUAL(ret, OS_ERRNO_HWI_NUM_INVALID, ret);
ret = LOS_HwiDisable(LOSCFG_PLATFORM_HWI_LIMIT + 1);
ICUNIT_ASSERT_EQUAL(ret, OS_ERRNO_HWI_NUM_INVALID, ret);
ret = LOS_HwiClear(LOSCFG_PLATFORM_HWI_LIMIT + 1);
ICUNIT_ASSERT_EQUAL(ret, OS_ERRNO_HWI_NUM_INVALID, ret);
hwiPrio = 3; // 3, Set hwi priority.
ret = LOS_HwiSetPriority(LOSCFG_PLATFORM_HWI_LIMIT + 1, hwiPrio);
ICUNIT_ASSERT_NOT_EQUAL(ret, LOS_OK, ret);
ops = LOS_HwiOpsGet();
(VOID)memcpy_s(opsBac, sizeof(HwiControllerOps), ops, sizeof(HwiControllerOps));
ops->triggerIrq = TesttriggerIrq;
ops->enableIrq = TestenableIrq;
ops->disableIrq = TestdisableIrq;
ops->setIrqPriority = TestsetIrqPriority;
ops->getCurIrqNum = TestgetCurIrqNum;
ops->clearIrq = TestclearIrq;
LOS_HwiTrigger(HWI_NUM_TEST);
ICUNIT_GOTO_EQUAL(g_testCount, 1, g_testCount, EXIT); // Compare wiht the expected value 1.
LOS_HwiEnable(HWI_NUM_TEST);
ICUNIT_GOTO_EQUAL(g_testCount, 2, g_testCount, EXIT); // Compare wiht the expected value 2.
LOS_HwiDisable(HWI_NUM_TEST);
ICUNIT_GOTO_EQUAL(g_testCount, 3, g_testCount, EXIT); // Compare wiht the expected value 3.
LOS_HwiClear(HWI_NUM_TEST);
ICUNIT_GOTO_EQUAL(g_testCount, 4, g_testCount, EXIT); // Compare wiht the expected value 4.
LOS_HwiSetPriority(HWI_NUM_TEST, 3); // 3, Set hwi priority.
ICUNIT_GOTO_EQUAL(g_testCount, 5, g_testCount, EXIT); // Compare wiht the expected value 5.
irqNum = LOS_HwiCurIrqNum();
ICUNIT_ASSERT_EQUAL(irqNum, HWI_NUM_TEST, irqNum);
ICUNIT_GOTO_EQUAL(g_testCount, 6, g_testCount, EXIT); // Compare wiht the expected value 6.
ops->triggerIrq = opsBac->triggerIrq;
ops->enableIrq = opsBac->enableIrq;
ops->disableIrq = opsBac->disableIrq;
ops->setIrqPriority = opsBac->setIrqPriority;
ops->getCurIrqNum = opsBac->getCurIrqNum;
ops->clearIrq = opsBac->clearIrq;
free(opsBac);
ret = LOS_HwiDisable(HWI_NUM_TEST);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
LOS_HwiTrigger(HWI_NUM_TEST);
ICUNIT_GOTO_EQUAL(g_testCount, 6, g_testCount, EXIT); // Compare wiht the expected value 6.
ret = LOS_HwiEnable(HWI_NUM_TEST);
ICUNIT_GOTO_EQUAL(g_testCount, 7, g_testCount, EXIT); // Compare wiht the expected value 7.
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
LOS_HwiTrigger(HWI_NUM_TEST);
ICUNIT_GOTO_EQUAL(g_testCount, 8, g_testCount, EXIT); // Compare wiht the expected value 8.
TestHwiDelete(HWI_NUM_TEST);
return LOS_OK;
EXIT:
TestHwiDelete(HWI_NUM_TEST);
free(opsBac);
return LOS_OK;
}
VOID ItLosHwi040(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosHwi040", Testcase, TEST_LOS, TEST_HWI, TEST_LEVEL3, TEST_PRESSURE);
}
......@@ -38,10 +38,10 @@ static UINT32 TestCase(VOID)
UINT32 ret;
ret = LOS_MemInit(NULL, TEST_MEM_SIZE);
ICUNIT_ASSERT_EQUAL(ret, OS_ERROR, ret);
ICUNIT_ASSERT_EQUAL(ret, LOS_NOK, ret);
ret = LOS_MemInit(g_memPool, MIN_MEM_POOL_SIZE - 1);
ICUNIT_ASSERT_EQUAL(ret, OS_ERROR, ret);
ICUNIT_ASSERT_EQUAL(ret, LOS_NOK, ret);
return LOS_OK;
}
......
......@@ -43,14 +43,14 @@ static VOID HwiF01(void)
ret = LOS_MuxPend(g_mutexTest, 0);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_PEND_INTERR, ret);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_IN_INTERR, ret);
ret = LOS_MuxPend(g_mutexTest, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_PEND_INTERR, ret);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_IN_INTERR, ret);
ret = LOS_MuxPost(g_mutexTest);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_INVALID, ret);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_IN_INTERR, ret);
ret = LOS_MuxDelete(g_mutexTest);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
......
......@@ -40,7 +40,7 @@ static VOID HwiF01(void)
TestHwiClear(HWI_NUM_TEST);
ret = LOS_MuxPost(g_mutexTest);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_IN_INTERR, ret);
g_testCount++;
}
......@@ -65,7 +65,7 @@ static UINT32 Testcase(VOID)
ICUNIT_ASSERT_EQUAL(g_testCount, 1, g_testCount); // 1, Here, assert that g_testCount is equal to 1.
ret = LOS_MuxPost(g_mutexTest);
ICUNIT_ASSERT_EQUAL(ret, LOS_ERRNO_MUX_INVALID, ret);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_MuxDelete(g_mutexTest);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
......
......@@ -40,7 +40,7 @@ static VOID HwiF01(void)
TestHwiClear(HWI_NUM_TEST);
ret = LOS_MuxPost(g_mutexTest);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_IN_INTERR, ret);
g_testCount++;
}
......@@ -64,7 +64,7 @@ static UINT32 Testcase(VOID)
ICUNIT_ASSERT_EQUAL(g_testCount, 1, g_testCount); // 1, Here, assert that g_testCount is equal to 1.
ret = LOS_MuxPost(g_mutexTest);
ICUNIT_ASSERT_EQUAL(ret, LOS_ERRNO_MUX_INVALID, ret);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_MuxDelete(g_mutexTest);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
......
......@@ -46,15 +46,15 @@ static VOID Func01(void)
TestHwiDelete(HWI_NUM_TEST);
} else if (g_testCount == 3) { // 3, Here, The current possible value of the variable.
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_PEND_INTERR, ret);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_IN_INTERR, ret);
}
ret = LOS_MuxPost(g_mutexTest);
if (g_testCount == 3) { // 3, Here, The current possible value of the variable.
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_IN_INTERR, ret);
} else if (g_testCount == 4) { // 4, Here, The current possible value of the variable.
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_INVALID, ret);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
g_testCount++;
......@@ -64,7 +64,7 @@ static VOID HwiF01(void)
{
TestHwiClear(HWI_NUM_TEST);
ICUNIT_ASSERT_EQUAL_VOID(g_testCount, 1, g_testCount);
ICUNIT_ASSERT_EQUAL_VOID(g_testCount, 1, g_testCount);
g_testCount++;
......
......@@ -45,7 +45,7 @@ static VOID HwiF02(void)
g_testCount++;
ret = LOS_MuxPost(g_mutexTest);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_INVALID, ret);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_IN_INTERR, ret);
}
static VOID HwiF01(void)
......@@ -57,7 +57,7 @@ static VOID HwiF01(void)
g_testCount++;
ret = LOS_MuxPend(g_mutexTest, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_PEND_INTERR, ret);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_MUX_IN_INTERR, ret);
ret = LOS_HwiCreate(HWI_NUM_TEST0, 1, 0, (HWI_PROC_FUNC)HwiF02, 0);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
......
......@@ -45,10 +45,10 @@ static UINT32 Testcase(VOID)
ret = LOS_QueueCreate(NULL, QUEUE_BASE_NUM, &queueID[index], 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
}
ret = LOS_QueueWrite(LOSCFG_BASE_IPC_QUEUE_LIMIT - 1, &buff1, QUEUE_BASE_MSGSIZE, 0);
ret = LOS_QueueWrite(queueID[limit - 1], &buff1, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ret = LOS_QueueRead(LOSCFG_BASE_IPC_QUEUE_LIMIT - 1, &buff2, QUEUE_BASE_MSGSIZE, 0);
ret = LOS_QueueRead(queueID[limit - 1], &buff2, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &queueID[index], 0, QUEUE_BASE_MSGSIZE);
......
......@@ -46,11 +46,11 @@ static UINT32 Testcase(VOID)
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
}
// 2, is test for LOSCFG_BASE_IPC_QUEUE_LIMIT - 2
ret = LOS_QueueWrite(LOSCFG_BASE_IPC_QUEUE_LIMIT - 2, &buff1, QUEUE_BASE_MSGSIZE, 0);
ret = LOS_QueueWrite(queueID[limit - 1], &buff1, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
// 2, is test for LOSCFG_BASE_IPC_QUEUE_LIMIT - 2
ret = LOS_QueueRead(LOSCFG_BASE_IPC_QUEUE_LIMIT - 2, &buff2, QUEUE_BASE_MSGSIZE, 0);
ret = LOS_QueueRead(queueID[limit - 1], &buff2, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
EXIT:
......
......@@ -45,8 +45,7 @@ static UINT32 Testcase(VOID)
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ret = LOS_QueueRead(g_testQueueID01, &buff2, 0xffffffff, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ICUNIT_GOTO_EQUAL(*((char *)(intptr_t)buff2 + 7), buff1[7], *((char *)(intptr_t)buff2 + 7), EXIT); // 7, QUEUE_BASE_MSGSIZE - 1
ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_QUEUE_BUFFER_SIZE_TOO_BIG, ret, EXIT);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
......
......@@ -45,8 +45,7 @@ static UINT32 Testcase(VOID)
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ret = LOS_QueueRead(g_testQueueID01, &buff2, (0xffffffff - 1), 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ICUNIT_GOTO_EQUAL(*((char *)(intptr_t)buff2 + 7), buff1[7], *((char *)(intptr_t)buff2 + 7), EXIT); // 7, Verify that the data is correct
ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_QUEUE_BUFFER_SIZE_TOO_BIG, ret, EXIT);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
......
......@@ -46,10 +46,10 @@ static UINT32 Testcase(VOID)
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
}
ret = LOS_QueueWriteHead(LOSCFG_BASE_IPC_QUEUE_LIMIT - 1, &buff1, QUEUE_BASE_MSGSIZE, 0);
ret = LOS_QueueWriteHead(queueID[limit - 1], &buff1, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ret = LOS_QueueRead(LOSCFG_BASE_IPC_QUEUE_LIMIT - 1, &buff2, QUEUE_BASE_MSGSIZE, 0);
ret = LOS_QueueRead(queueID[limit - 1], &buff2, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &queueID[index], 0, QUEUE_BASE_MSGSIZE);
......
......@@ -46,10 +46,10 @@ static UINT32 Testcase(VOID)
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
}
ret = LOS_QueueWriteHead(LOSCFG_BASE_IPC_QUEUE_LIMIT - 1, &buff1, QUEUE_BASE_MSGSIZE, 0);
ret = LOS_QueueWriteHead(queueID[limit - 1], &buff1, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ret = LOS_QueueRead(LOSCFG_BASE_IPC_QUEUE_LIMIT - 1, &buff2, QUEUE_BASE_MSGSIZE, 0);
ret = LOS_QueueRead(queueID[limit - 1], &buff2, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
EXIT:
......
......@@ -107,6 +107,8 @@ static_library("test_swtmr") {
"It_los_swtmr_077.c",
"It_los_swtmr_078.c",
"It_los_swtmr_079.c",
"It_los_swtmr_080.c",
"It_los_swtmr_081.c",
"It_los_swtmr_Align_001.c",
"It_los_swtmr_Align_002.c",
"It_los_swtmr_Align_003.c",
......
......@@ -114,6 +114,8 @@ VOID ItSuiteLosSwtmr(void)
ItLosSwtmr077();
ItLosSwtmr078();
ItLosSwtmr079();
ItLosSwtmr080();
ItLosSwtmr081();
#if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1)
ItLosSwtmrAlign005();
ItLosSwtmrAlign006();
......
......@@ -148,6 +148,8 @@ extern VOID ItLosSwtmr076(VOID);
extern VOID ItLosSwtmr077(VOID);
extern VOID ItLosSwtmr078(VOID);
extern VOID ItLosSwtmr079(VOID);
extern VOID ItLosSwtmr080(VOID);
extern VOID ItLosSwtmr081(VOID);
extern VOID ItLosSwtmrAlign001(VOID);
extern VOID ItLosSwtmrAlign002(VOID);
......
......@@ -72,8 +72,8 @@ static UINT32 Testcase(VOID)
ret = LOS_SwtmrTimeGet(swTmrID, &tick);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
// 2 - 1, Here, assert that uwTick is equal to this .
ICUNIT_GOTO_EQUAL(tick, 2 - 1, tick, EXIT);
// 1, Here, assert that uwTick is equal to this .
ICUNIT_GOTO_EQUAL(tick, 1, tick, EXIT);
// 2, Here, assert that g_testCount is equal to this .
ICUNIT_GOTO_EQUAL(g_testCount, 2, g_testCount, EXIT);
......
/*
* 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_testCount1 = 0;
static VOID Case1(UINT32 arg)
{
g_testCount1++;
return;
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
g_testCount1 = 0;
UINT64 tickRecord;
UINT64 tickUpdate;
UINT64 delayTicks;
const UINT64 delayMs = 10; // delay 10 MS
// 4, Timeout interval of a periodic software timer.
ret = LOS_SwtmrCreate(4, LOS_SWTMR_MODE_PERIOD, Case1, &g_swtmrId1, 0xffff
#if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1)
, OS_SWTMR_ROUSES_ALLOW, OS_SWTMR_ALIGN_INSENSITIVE
#endif
);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_SwtmrStart(g_swtmrId1);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
tickRecord = LOS_TickCountGet();
LOS_MDelay(delayMs);
tickUpdate = LOS_TickCountGet();
// 0, Here, assert that g_testCount is equal to this.
ICUNIT_ASSERT_EQUAL(g_testCount1, 0, g_testCount);
delayTicks = delayMs * LOSCFG_BASE_CORE_TICK_PER_SECOND / OS_SYS_MS_PER_SECOND;
ICUNIT_ASSERT_WITHIN_EQUAL(delayTicks, tickUpdate - tickRecord - 1, tickUpdate - tickRecord + 1, delayTicks);
// 10, set task delay time.
LOS_TaskDelay(10);
// 2, Here, assert that g_testCount is equal to this.
ICUNIT_ASSERT_EQUAL(g_testCount1, 2, g_testCount);
EXIT:
LOS_SwtmrDelete(g_swtmrId1);
return LOS_OK;
}
VOID ItLosSwtmr080() // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosSwtmr080", Testcase, TEST_LOS, TEST_SWTMR, TEST_LEVEL1, TEST_FUNCTION);
}
/*
* 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_testCount1 = 0;
static UINT64 g_timeRecordNS = 0;
static UINT64 g_timeUpdateNS = 0;
#define SWTMR_PERIODIC 4
static VOID Case1(UINT32 arg)
{
g_testCount1++;
g_timeUpdateNS = LOS_CurrNanosec();
return;
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
g_testCount1 = 0;
UINT64 tickRecord;
UINT64 tickUpdate;
UINT64 deltaTicks;
// 4, Timeout interval of a periodic software timer.
ret = LOS_SwtmrCreate(SWTMR_PERIODIC, LOS_SWTMR_MODE_ONCE, Case1, &g_swtmrId1, 0xffff
#if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1)
, OS_SWTMR_ROUSES_ALLOW, OS_SWTMR_ALIGN_INSENSITIVE
#endif
);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
g_timeRecordNS = LOS_CurrNanosec();
ret = LOS_SwtmrStart(g_swtmrId1);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
// 10, SSet task delay time.
LOS_TaskDelay(10);
deltaTicks = (g_timeUpdateNS - g_timeRecordNS) * LOSCFG_BASE_CORE_TICK_PER_SECOND / OS_SYS_NS_PER_SECOND;
ICUNIT_ASSERT_EQUAL(deltaTicks, SWTMR_PERIODIC, deltaTicks);
EXIT:
LOS_SwtmrDelete(g_swtmrId1);
return LOS_OK;
}
VOID ItLosSwtmr081() // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosSwtmr081", Testcase, TEST_LOS, TEST_SWTMR, TEST_LEVEL1, TEST_FUNCTION);
}
......@@ -150,6 +150,11 @@ static_library("test_task") {
"It_los_task_121.c",
"It_los_task_122.c",
"It_los_task_123.c",
"It_los_task_124.c",
"It_los_task_125.c",
"It_los_task_126.c",
"It_los_task_127.c",
"It_los_task_128.c",
]
configs += [ "//kernel/liteos_m/testsuites:include" ]
......
......@@ -123,7 +123,11 @@ VOID ItSuiteLosTask()
ItLosTask121();
ItLosTask122();
ItLosTask123();
ItLosTask124();
ItLosTask125();
ItLosTask126();
ItLosTask127();
ItLosTask128();
#if (LOS_KERNEL_TEST_FULL == 1)
ItLosTask039();
ItLosTask040();
......
......@@ -178,6 +178,11 @@ extern VOID ItLosTask120(VOID);
extern VOID ItLosTask121(VOID);
extern VOID ItLosTask122(VOID);
extern VOID ItLosTask123(VOID);
extern VOID ItLosTask124(VOID);
extern VOID ItLosTask125(VOID);
extern VOID ItLosTask126(VOID);
extern VOID ItLosTask127(VOID);
extern VOID ItLosTask128(VOID);
#ifdef __cplusplus
#if __cplusplus
......
/*
* 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 UINT32 GetfreeMemSize(void *pool)
{
return LOS_MemPoolSizeGet(pool) - LOS_MemTotalUsedGet(pool);
}
static VOID TaskF01(UINT32 arg)
{
g_testCount++;
return;
}
static UINT32 TestCase(VOID)
{
UINT32 freeMem;
UINT32 freeMem1;
UINT32 freeMem2;
UINT32 freeMem3;
UINT32 freeMem4;
UINT32 ret;
TSK_INIT_PARAM_S task1 = { 0 };
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
task1.uwStackSize = TASK_STACK_SIZE_TEST;
task1.pcName = "Tsk124A";
task1.usTaskPrio = 8; // 8, set task priortiy value.
g_testCount = 0;
freeMem = GetfreeMemSize(m_aucSysMem0);
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ICUNIT_ASSERT_EQUAL(g_testCount, 1, g_testCount);
freeMem1 = GetfreeMemSize(m_aucSysMem0);
LOS_TaskDelete(g_testTaskID01);
freeMem2 = GetfreeMemSize(m_aucSysMem0);
ICUNIT_ASSERT_EQUAL(freeMem2, freeMem1, freeMem2);
LOS_TaskResRecycle();
freeMem3 = GetfreeMemSize(m_aucSysMem0);
ICUNIT_ASSERT_EQUAL(freeMem3, freeMem, freeMem3);
LOS_TaskDelay(10); // 10, task delay times.
freeMem4 = GetfreeMemSize(m_aucSysMem0);
ICUNIT_ASSERT_EQUAL(freeMem4, freeMem, freeMem4);
return LOS_OK;
}
VOID ItLosTask124(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosTask124", TestCase, TEST_LOS, TEST_TASK, TEST_LEVEL0, TEST_FUNCTION);
}
/*
* 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 UINT32 GetfreeMemSize(void *pool)
{
return LOS_MemPoolSizeGet(pool) - LOS_MemTotalUsedGet(pool);
}
static VOID TaskF01(UINT32 arg)
{
g_testCount++;
return;
}
static UINT32 TestCase(VOID)
{
UINT32 freeMem;
UINT32 freeMem1;
UINT32 freeMem2;
UINT32 freeMem3;
UINT32 freeMem4;
UINT32 ret;
TSK_INIT_PARAM_S task1 = { 0 };
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
task1.uwStackSize = TASK_STACK_SIZE_TEST;
task1.pcName = "Tsk125A";
task1.usTaskPrio = 8; // 8, set task priortiy value.
g_testCount = 0;
freeMem = GetfreeMemSize(m_aucSysMem0);
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ICUNIT_ASSERT_EQUAL(g_testCount, 1, g_testCount);
freeMem1 = GetfreeMemSize(m_aucSysMem0);
LOS_TaskDelete(g_testTaskID01);
freeMem2 = GetfreeMemSize(m_aucSysMem0);
ICUNIT_ASSERT_EQUAL(freeMem2, freeMem1, freeMem2);
LOS_TaskDelay(10); // 10, task delay times.
freeMem3 = GetfreeMemSize(m_aucSysMem0);
ICUNIT_ASSERT_EQUAL(freeMem3, freeMem, freeMem3);
LOS_TaskResRecycle();
freeMem4 = GetfreeMemSize(m_aucSysMem0);
ICUNIT_ASSERT_EQUAL(freeMem4, freeMem, freeMem4);
return LOS_OK;
}
VOID ItLosTask125(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosTask125", TestCase, TEST_LOS, TEST_TASK, TEST_LEVEL0, TEST_FUNCTION);
}
/*
* 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 UINT32 GetfreeMemSize(void *pool)
{
return LOS_MemPoolSizeGet(pool) - LOS_MemTotalUsedGet(pool);
}
static VOID TaskF01(UINT32 arg)
{
g_testCount++;
return;
}
static UINT32 TestCase(VOID)
{
UINT32 freeMem;
UINT32 freeMem1;
UINT32 freeMem2;
UINT32 freeMem3;
UINT32 freeMem4;
UINT32 ret;
TSK_INIT_PARAM_S task1 = { 0 };
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
task1.uwStackSize = TASK_STACK_SIZE_TEST;
task1.pcName = "Tsk016A";
task1.usTaskPrio = 8; // 8, set task priortiy value.
g_testCount = 0;
freeMem = GetfreeMemSize(m_aucSysMem0);
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ICUNIT_ASSERT_EQUAL(g_testCount, 1, g_testCount);
freeMem1 = GetfreeMemSize(m_aucSysMem0);
LOS_TaskDelay(10); // 10, task delay times.
freeMem2 = GetfreeMemSize(m_aucSysMem0);
ICUNIT_ASSERT_EQUAL(freeMem2, freeMem, freeMem2);
LOS_TaskResRecycle();
freeMem3 = GetfreeMemSize(m_aucSysMem0);
ICUNIT_ASSERT_EQUAL(freeMem3, freeMem, freeMem3);
return LOS_OK;
}
VOID ItLosTask126(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosTask126", TestCase, TEST_LOS, TEST_TASK, TEST_LEVEL0, TEST_FUNCTION);
}
/*
* 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 UINT32 GetfreeMemSize(void *pool)
{
return LOS_MemPoolSizeGet(pool) - LOS_MemTotalUsedGet(pool);
}
static VOID TaskF01(UINT32 arg)
{
ICUNIT_GOTO_EQUAL(g_testCount, 0, g_testCount, EXIT);
g_testCount++;
EXIT:
LOS_TaskDelete(g_testTaskID01);
}
static UINT32 TestCase(VOID)
{
UINT32 freeMem;
UINT32 freeMem1;
UINT32 freeMem2;
UINT32 freeMem3;
UINT32 ret;
TSK_INIT_PARAM_S task1 = { 0 };
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
task1.uwStackSize = TASK_STACK_SIZE_TEST;
task1.pcName = "Tsk127A";
task1.usTaskPrio = 8; // 8, set task priortiy value.
task1.uwResved = LOS_TASK_ATTR_JOINABLE;
g_testCount = 0;
freeMem = GetfreeMemSize(m_aucSysMem0);
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
freeMem1 = GetfreeMemSize(m_aucSysMem0);
LOS_TaskResRecycle();
freeMem2 = GetfreeMemSize(m_aucSysMem0);
ICUNIT_ASSERT_EQUAL(freeMem2, freeMem1, freeMem2);
ret = LOS_TaskJoin(g_testTaskID01, NULL);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ICUNIT_GOTO_EQUAL(g_testCount, 1, g_testCount, EXIT);
freeMem3 = GetfreeMemSize(m_aucSysMem0);
ICUNIT_ASSERT_EQUAL(freeMem3, freeMem, freeMem3);
return LOS_OK;
EXIT:
LOS_TaskDelete(g_testTaskID01);
return LOS_OK;
}
VOID ItLosTask127(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosTask127", TestCase, TEST_LOS, TEST_TASK, TEST_LEVEL0, TEST_FUNCTION);
}
/*
* 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 UINT32 g_freeMem1 = 0;
static UINT32 g_freeMem2 = 0;
static UINT32 GetfreeMemSize(void *pool)
{
return LOS_MemPoolSizeGet(pool) - LOS_MemTotalUsedGet(pool);
}
static VOID TaskF02(VOID)
{
g_testCount++;
return;
}
static VOID TaskF01(VOID)
{
g_testCount++;
return;
}
static UINT32 TestCase(VOID)
{
UINT32 freeMem;
UINT32 freeMem1;
UINT32 freeMem2;
UINT32 ret;
TSK_INIT_PARAM_S task1 = { 0 };
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
task1.uwStackSize = TASK_STACK_SIZE_TEST;
task1.pcName = "Tsk128A";
task1.usTaskPrio = TASK_PRIO_TEST - 1;
task1.uwResved = LOS_TASK_STATUS_DETACHED;
g_testCount = 0;
freeMem = GetfreeMemSize(m_aucSysMem0);
LOS_TaskLock();
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ICUNIT_ASSERT_EQUAL(g_testCount, 0, g_testCount);
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF02;
task1.pcName = "Tsk128B";
task1.usTaskPrio = TASK_PRIO_TEST - 3; // TASK_PRIO_TEST - 3, Set task prio.
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ICUNIT_ASSERT_EQUAL(g_testCount, 0, g_testCount);
LOS_TaskUnlock();
ICUNIT_ASSERT_EQUAL(g_testCount, 2, g_testCount); // 2, Here, assert that g_testCount is equal to 2.
LOS_TaskResRecycle();
freeMem2 = GetfreeMemSize(m_aucSysMem0);
ICUNIT_ASSERT_EQUAL(freeMem2, freeMem, freeMem2);
return LOS_OK;
}
VOID ItLosTask128(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosTask128", TestCase, TEST_LOS, TEST_TASK, TEST_LEVEL0, TEST_FUNCTION);
}
......@@ -351,7 +351,7 @@ typedef volatile INT64 Atomic64;
#endif
#ifndef LOS_NOK
#define LOS_NOK 1U
#define LOS_NOK (UINT32)(-1)
#endif
#define OS_FAIL 1
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册