1/* 2 * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. 3 * Copyright (c) 2020-2022 Huawei Device Co., Ltd. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright notice, this list of 9 * conditions and the following disclaimer. 10 * 11 * 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 * of conditions and the following disclaimer in the documentation and/or other materials 13 * provided with the distribution. 14 * 15 * 3. Neither the name of the copyright holder nor the names of its contributors may be used 16 * to endorse or promote products derived from this software without specific prior written 17 * permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32#ifndef _OSTEST_H 33#define _OSTEST_H 34 35#ifndef SWTMR_TEST 36#define SWTMR_TEST 37#endif 38 39#include "stdarg.h" 40#include "los_config.h" 41#include "iCunit.h" 42#include "stdio.h" 43#include "stdlib.h" 44#include "limits.h" 45#include "string.h" 46#include "los_base.h" 47#include "los_config.h" 48#include "los_typedef.h" 49#include "los_hwi.h" 50#include "los_vm_map.h" 51#include "los_task.h" 52#include "los_sched_pri.h" 53#include "los_task_pri.h" 54#include "los_sys_pri.h" 55#include "los_sem_pri.h" 56#include "los_event.h" 57#include "los_memory.h" 58#include "los_queue.h" 59#include "los_swtmr.h" 60#include "los_mux.h" 61#include "los_queue_pri.h" 62#include "los_atomic.h" 63#if !defined(TEST1980) && !defined(TESTISP) 64#include "console.h" 65#endif 66 67#ifndef LOSCFG_AARCH64 68#ifdef LOSCFG_LIB_LIBC 69#include "time.h" 70#endif 71#include "target_config.h" 72#endif 73#include "los_process_pri.h" 74#include "pthread.h" 75 76#define LOSCFG_TEST 1 77#ifdef LOSCFG_PLATFORM_HI3516DV300 78#define TEST3516DV300 79#elif LOSCFG_PLATFORM_HI3518EV300 80#define TEST3518EV300 81#endif 82 83#ifdef __cplusplus 84#if __cplusplus 85extern "C" { 86#endif /* __cpluscplus */ 87#endif /* __cpluscplus */ 88 89#define TEST_TASK_PARAM_INIT(testTask, task_name, entry, prio) \ 90 do { \ 91 (void)memset_s(&(testTask), sizeof(TSK_INIT_PARAM_S), 0, sizeof(TSK_INIT_PARAM_S)); \ 92 testTask.pfnTaskEntry = (TSK_ENTRY_FUNC)entry; \ 93 testTask.uwStackSize = 0x1000; \ 94 testTask.pcName = task_name; \ 95 testTask.usTaskPrio = prio; \ 96 testTask.uwResved = LOS_TASK_STATUS_DETACHED; \ 97 } while (0); 98 99#ifdef LOSCFG_KERNEL_SMP 100#define TEST_TASK_PARAM_INIT_AFFI(testTask, task_name, entry, prio, affi) \ 101 TEST_TASK_PARAM_INIT(testTask, task_name, entry, prio) \ 102 testTask.usCpuAffiMask = affi; 103#else 104#define TEST_TASK_PARAM_INIT_AFFI(stTestTask, task_name, entry, prio, affi) \ 105 TEST_TASK_PARAM_INIT(stTestTask, task_name, entry, prio) 106#endif 107#define JFFS_BASE_MTD_ADDR 0x100000 108#define JFFS_BASE_MTD_LEN 0x600000 109 110 111#define TASK_PRIO_TEST (LOS_TaskPriGet(LOS_CurTaskIDGet())) // 25 112#define TASK_PRIO_TEST_TASK 25 113#define TASK_PRIO_TEST_SWTMR 4 114#ifdef LOSCFG_AARCH64 115#define TASK_STACK_SIZE_TEST (LOS_TASK_MIN_STACK_SIZE * 3) 116#else 117#define TASK_STACK_SIZE_TEST LOS_TASK_MIN_STACK_SIZE 118#endif 119#define LOS_MS_PER_TICK (OS_SYS_MS_PER_SECOND / LOSCFG_BASE_CORE_TICK_PER_SECOND) 120#define LOS_US_PER_TICK (OS_SYS_US_PER_SECOND / LOSCFG_BASE_CORE_TICK_PER_SECOND) 121 122#define HWI_NUM_INTVALID OS_HWI_MAX_NUM 123#define writel(g_value, address) WRITE_UINT32(g_value, address) 124#ifdef TESTPBXA9 125extern int vsnprintf(char *str, size_t n, const char *fmt, va_list ap); 126#endif 127 128#if defined(LOSCFG_TEST_POSIX) 129extern UINT32 PosixPthreadInit(pthread_attr_t *attr, int pri); 130extern UINT32 PosixPthreadDestroy(pthread_attr_t *attr, pthread_t thread); 131#endif 132 133extern UINT32 TaskCountGetTest(VOID); 134extern UINT32 SemCountGetTest(VOID); 135extern UINT32 QueueCountGetTest(VOID); 136extern UINT32 SwtmrCountGetTest(VOID); 137extern void hal_interrupt_set_affinity(uint32_t irq, uint32_t cpuMask); 138 139#define TASK_EXISTED_NUM (TaskCountGetTest()) 140#define QUEUE_EXISTED_NUM (QueueCountGetTest()) 141#define SWTMR_EXISTED_NUM (SwtmrCountGetTest()) 142#define SEM_EXISTED_NUM (SemCountGetTest()) 143 144extern void TestTestHwiDelete(unsigned int irq, void *devId); 145extern void TestHwiTrigger(unsigned int irq); 146extern void TestExtraTaskDelay(UINT32 tick); 147extern UINT64 TestTickCountGet(void); 148extern UINT64 TestTickCountByCurrCpuid(void); 149extern void TestBusyTaskDelay(UINT32 tick); 150extern void *malloc(size_t size); 151extern void TestDumpCpuid(void); 152extern u_long TRandom(void); 153 154#define TEST_HwiDelete(ID) TestTestHwiDelete(ID, NULL) 155#define TEST_HwiClear(ID) HalIrqMask(ID) 156#define TEST_HwiTriggerDelay LOS_TaskDelay(200 * LOSCFG_BASE_CORE_TICK_PER_SECOND / 1000) 157#define TEST_HwiCreate(ID, prio, mode, Func, arg) LOS_HwiCreate(ID, prio, mode, Func, arg) 158 159 160#define HWI_NUM_INT0 0 161#define HWI_NUM_INT1 1 162#define HWI_NUM_INT2 2 163#define HWI_NUM_INT3 3 164#define HWI_NUM_INT4 4 165#define HWI_NUM_INT5 5 166#define HWI_NUM_INT6 6 167#define HWI_NUM_INT7 7 168#define HWI_NUM_INT11 11 169#define HWI_NUM_INT12 12 170#define HWI_NUM_INT13 13 171#define HWI_NUM_INT14 14 172#define HWI_NUM_INT15 15 173#define HWI_NUM_INT16 16 174#define HWI_NUM_INT17 17 175#define HWI_NUM_INT18 18 176#define HWI_NUM_INT19 19 177#define HWI_NUM_INT21 21 178#define HWI_NUM_INT22 22 179#define HWI_NUM_INT23 23 180#define HWI_NUM_INT24 24 181#define HWI_NUM_INT25 25 182#define HWI_NUM_INT26 26 183#define HWI_NUM_INT27 27 184#define HWI_NUM_INT28 28 185#define HWI_NUM_INT30 30 186#define HWI_NUM_INT31 31 187#define HWI_NUM_INT32 32 188#define HWI_NUM_INT33 33 189#define HWI_NUM_INT34 34 190#define HWI_NUM_INT35 35 191#define HWI_NUM_INT42 42 192#define HWI_NUM_INT45 45 193#define HWI_NUM_INT46 46 194#define HWI_NUM_INT50 50 195#define HWI_NUM_INT55 55 196#define HWI_NUM_INT56 56 197#define HWI_NUM_INT57 57 198#define HWI_NUM_INT58 58 199#define HWI_NUM_INT59 59 200#define HWI_NUM_INT60 60 201#define HWI_NUM_INT61 61 202#define HWI_NUM_INT63 63 203#define HWI_NUM_INT62 62 204#define HWI_NUM_INT68 68 205#define HWI_NUM_INT69 69 206 207#define HWI_NUM_INT95 95 208#define HWI_NUM_INT114 114 209#define HWI_NUM_INT169 169 210 211#if defined TESTPBXA9 212#define HWI_NUM_TEST HWI_NUM_INT56 213#define HWI_NUM_TEST1 HWI_NUM_INT57 214#define HWI_NUM_TEST0 HWI_NUM_INT58 215#define HWI_NUM_TEST2 HWI_NUM_INT59 216#define HWI_NUM_TEST3 HWI_NUM_INT60 217#elif defined TEST3518EV300 218#define HWI_NUM_TEST0 HWI_NUM_INT58 219#define HWI_NUM_TEST HWI_NUM_INT59 220#define HWI_NUM_TEST1 HWI_NUM_INT60 221#define HWI_NUM_TEST2 HWI_NUM_INT61 222#define HWI_NUM_TEST3 HWI_NUM_INT68 223#elif defined TEST3516DV300 224#define HWI_NUM_TEST HWI_NUM_INT56 225#define HWI_NUM_TEST1 HWI_NUM_INT57 226#define HWI_NUM_TEST0 HWI_NUM_INT58 227#define HWI_NUM_TEST2 HWI_NUM_INT59 228#define HWI_NUM_TEST3 HWI_NUM_INT60 229#endif 230 231#define TEST_TASKDELAY_1TICK 1 232#define TEST_TASKDELAY_2TICK 2 233#define TEST_TASKDELAY_4TICK 4 234#define TEST_TASKDELAY_10TICK 10 235#define TEST_TASKDELAY_20TICK 20 236#define TEST_TASKDELAY_50TICK 50 237 238#ifdef TEST3731 239#define TestTimer2ValueGet(temp) READ_UINT32(temp, TIMER1_REG_BASE + TIMER_VALUE) 240#elif defined TEST3559 241#define TestTimer2ValueGet(temp) READ_UINT32(temp, TIMER3_REG_BASE + TIMER_VALUE) 242#else 243#define TestTimer2ValueGet(temp) READ_UINT32(temp, TIMER2_REG_BASE + TIMER_VALUE) 244#endif 245 246#define REALTIME(time) (UINT32)((UINT64)(0xffffffff - time) * 1000 / OS_SYS_CLOCK) /* accuracy:ms */ 247#define HW_TMI(time) (UINT32)((UINT64)(0xffffffff - time) * 1000 / (OS_SYS_CLOCK / 1000000)) /* accuracy:ns */ 248 249#define uart_printf_func dprintf 250 251#ifndef VFS_STAT_PRINTF 252#define VFS_STAT_PRINTF 0 253#endif 254 255#ifndef VFS_STATFS_PRINTF 256#define VFS_STATFS_PRINTF 0 257#endif 258 259#define OPEN_FILE_MAX 20 260 261#define HUAWEI_ENV_NFS 0 262 263#ifndef TEST_RESOURCELEAK_CHECK 264#define TEST_RESOURCELEAK_CHECK 1 265#endif 266 267#ifndef TEST_MODULE_CHECK 268#define TEST_MODULE_CHECK 1 269#endif 270 271#define OS_PROCESS_STATUS_PEND OS_PROCESS_STATUS_PENDING 272#define OS_TASK_STATUS_SUSPEND OS_TASK_STATUS_SUSPENDED 273#define OS_TASK_STATUS_PEND OS_TASK_STATUS_PENDING 274 275extern UINT32 volatile g_testCount; 276extern UINT32 g_testCount1; 277extern UINT32 g_testCount2; 278extern UINT32 g_testCount3; 279extern UINT32 g_flowcheck; 280extern UINT32 g_failResult; 281extern UINT32 g_passResult; 282extern UINT32 g_testTskHandle; 283extern UINT32 g_testTaskID01; 284extern UINT32 g_testTaskID02; 285extern UINT32 g_testTaskID03; 286extern UINT32 g_testTaskID04; 287extern UINT32 g_hwiNum1; 288extern UINT32 g_hwiNum2; 289extern UINT32 g_semID; 290extern UINT32 g_semID2; 291extern LosMux g_mutexkernelTest; 292extern UINT32 g_cpupTestCount; 293extern UINT16 g_swTmrID; 294extern UINT32 g_semID; 295extern UINT32 g_testQueueID01; 296extern UINT32 g_testQueueID02; 297extern UINT32 g_testQueueID03; 298extern UINT32 g_testTskHandle; 299extern UINT32 g_leavingTaskNum; 300extern UINT32 g_semID3[]; 301extern EVENT_CB_S g_eventCB; 302extern EVENT_CB_S g_event; 303extern UINT32 g_testPeriod; 304extern BOOL g_isAddArray; 305extern BOOL g_isSdInit; 306extern BOOL g_isSpinorInit; 307extern UINT32 g_getTickConsume; 308extern UINT32 g_waitTestCount; 309extern INT32 g_libFileSystem; 310extern UINT32 LosMuxCreate(LosMux *mutex); 311extern INT32 g_performanceStart; 312 313extern void msleep(unsigned int msecs); 314extern unsigned int sleep(unsigned int seconds); 315extern int usleep(unsigned useconds); 316 317#define OS_TASK_STATUS_DETACHED 0 318extern UINT32 LOS_MemTotalUsedGet(VOID *pool); 319extern VOID ptestTickConsume(VOID); 320extern UINT32 TEST_TskDelete(UINT32 taskID); 321extern UINT32 TEST_SemDelete(UINT32 semHandle); 322 323extern VOID ItSuiteLosQueue(VOID); 324extern VOID ItSuiteLosSwtmr(VOID); 325extern VOID ItSuiteLosTask(VOID); 326extern VOID ItSuiteLosEvent(VOID); 327 328extern VOID ItSuiteLosMux(VOID); 329extern VOID ItSuiteLosRwlock(VOID); 330extern VOID ItSuiteLosSem(VOID); 331extern VOID ItSuiteSmpHwi(VOID); 332extern VOID ItSuiteHwiNesting(VOID); 333 334extern VOID ItSuiteExtendCpup(VOID); 335 336extern VOID ItSuitePosixMutex(VOID); 337extern VOID ItSuitePosixPthread(VOID); 338 339extern VOID TestRunShell(VOID); 340 341extern void TestSystemInit(void); 342 343extern void TEST_DT_COMMON(void); 344extern VOID dprintf(const char *fmt, ...); 345 346extern UINT32 OsSwtmrTaskIDGetByCpuid(UINT16 cpuid); 347 348#define BIG_FD 512 349typedef struct testrunParam { 350 CHAR testcase_sequence[16]; 351 CHAR testcase_num[16]; 352 CHAR testcase_layer[32]; 353 CHAR testcase_module[32]; 354 CHAR testcase_level[16]; 355 CHAR testcase_type[16]; 356 CHAR testcase_id[128]; 357} TEST_RUN_PARAM; 358 359#define LOSCFG_BASE_CORE_TSK_CONFIG LOSCFG_BASE_CORE_TSK_LIMIT 360#define LOSCFG_BASE_IPC_SEM_CONFIG LOSCFG_BASE_IPC_SEM_LIMIT 361#define LOSCFG_BASE_IPC_QUEUE_CONFIG LOSCFG_BASE_IPC_QUEUE_LIMIT 362#define LOSCFG_BASE_CORE_SWTMR_CONFIG LOSCFG_BASE_CORE_SWTMR_LIMIT 363 364#define HAL_READ_UINT8(addr, data) READ_UINT8(data, addr) 365#define HAL_WRITE_UINT8(addr, data) WRITE_UINT8(data, addr) 366#define HAL_READ_UINT32(addr, data) READ_UINT32(data, addr) 367#define HAL_WRITE_UINT32(addr, data) WRITE_UINT32(data, addr) 368 369extern void InitRebootHook(void); 370 371#define LOSCFG_TEST_SMOKE 372#define LOSCFG_TEST_FULL 373#ifdef __cplusplus 374#if __cplusplus 375} 376#endif /* __cpluscplus */ 377#endif /* __cpluscplus */ 378 379#endif /* _OSTEST_H */ 380