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 85 extern "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 125 extern int vsnprintf(char *str, size_t n, const char *fmt, va_list ap); 126 #endif 127 128 #if defined(LOSCFG_TEST_POSIX) 129 extern UINT32 PosixPthreadInit(pthread_attr_t *attr, int pri); 130 extern UINT32 PosixPthreadDestroy(pthread_attr_t *attr, pthread_t thread); 131 #endif 132 133 extern UINT32 TaskCountGetTest(VOID); 134 extern UINT32 SemCountGetTest(VOID); 135 extern UINT32 QueueCountGetTest(VOID); 136 extern UINT32 SwtmrCountGetTest(VOID); 137 extern 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 144 extern void TestTestHwiDelete(unsigned int irq, void *devId); 145 extern void TestHwiTrigger(unsigned int irq); 146 extern void TestExtraTaskDelay(UINT32 tick); 147 extern UINT64 TestTickCountGet(void); 148 extern UINT64 TestTickCountByCurrCpuid(void); 149 extern void TestBusyTaskDelay(UINT32 tick); 150 extern void *malloc(size_t size); 151 extern void TestDumpCpuid(void); 152 extern 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 275 extern UINT32 volatile g_testCount; 276 extern UINT32 g_testCount1; 277 extern UINT32 g_testCount2; 278 extern UINT32 g_testCount3; 279 extern UINT32 g_flowcheck; 280 extern UINT32 g_failResult; 281 extern UINT32 g_passResult; 282 extern UINT32 g_testTskHandle; 283 extern UINT32 g_testTaskID01; 284 extern UINT32 g_testTaskID02; 285 extern UINT32 g_testTaskID03; 286 extern UINT32 g_testTaskID04; 287 extern UINT32 g_hwiNum1; 288 extern UINT32 g_hwiNum2; 289 extern UINT32 g_semID; 290 extern UINT32 g_semID2; 291 extern LosMux g_mutexkernelTest; 292 extern UINT32 g_cpupTestCount; 293 extern UINT16 g_swTmrID; 294 extern UINT32 g_semID; 295 extern UINT32 g_testQueueID01; 296 extern UINT32 g_testQueueID02; 297 extern UINT32 g_testQueueID03; 298 extern UINT32 g_testTskHandle; 299 extern UINT32 g_leavingTaskNum; 300 extern UINT32 g_semID3[]; 301 extern EVENT_CB_S g_eventCB; 302 extern EVENT_CB_S g_event; 303 extern UINT32 g_testPeriod; 304 extern BOOL g_isAddArray; 305 extern BOOL g_isSdInit; 306 extern BOOL g_isSpinorInit; 307 extern UINT32 g_getTickConsume; 308 extern UINT32 g_waitTestCount; 309 extern INT32 g_libFileSystem; 310 extern UINT32 LosMuxCreate(LosMux *mutex); 311 extern INT32 g_performanceStart; 312 313 extern void msleep(unsigned int msecs); 314 extern unsigned int sleep(unsigned int seconds); 315 extern int usleep(unsigned useconds); 316 317 #define OS_TASK_STATUS_DETACHED 0 318 extern UINT32 LOS_MemTotalUsedGet(VOID *pool); 319 extern VOID ptestTickConsume(VOID); 320 extern UINT32 TEST_TskDelete(UINT32 taskID); 321 extern UINT32 TEST_SemDelete(UINT32 semHandle); 322 323 extern VOID ItSuiteLosQueue(VOID); 324 extern VOID ItSuiteLosSwtmr(VOID); 325 extern VOID ItSuiteLosTask(VOID); 326 extern VOID ItSuiteLosEvent(VOID); 327 328 extern VOID ItSuiteLosMux(VOID); 329 extern VOID ItSuiteLosRwlock(VOID); 330 extern VOID ItSuiteLosSem(VOID); 331 extern VOID ItSuiteSmpHwi(VOID); 332 extern VOID ItSuiteHwiNesting(VOID); 333 334 extern VOID ItSuiteExtendCpup(VOID); 335 336 extern VOID ItSuitePosixMutex(VOID); 337 extern VOID ItSuitePosixPthread(VOID); 338 339 extern VOID TestRunShell(VOID); 340 341 extern void TestSystemInit(void); 342 343 extern void TEST_DT_COMMON(void); 344 extern VOID dprintf(const char *fmt, ...); 345 346 extern UINT32 OsSwtmrTaskIDGetByCpuid(UINT16 cpuid); 347 348 #define BIG_FD 512 349 typedef 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 369 extern 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