• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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