• 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 #include <stdio.h>
36 #include <stdlib.h>
37 #include <string.h>
38 
39 #include "iCunit.h"
40 
41 #include "los_debug.h"
42 #include "los_config.h"
43 
44 #include "los_interrupt.h"
45 #include "los_arch_interrupt.h"
46 #include "los_task.h"
47 #include "los_sem.h"
48 #include "los_event.h"
49 #include "los_memory.h"
50 #include "los_queue.h"
51 #if (LOSCFG_BASE_CORE_CPUP == 1)
52 #include "los_cpup.h"
53 #endif
54 #include "los_tick.h"
55 #include "los_swtmr.h"
56 #include "los_mux.h"
57 #include "securec.h"
58 #include "securectype.h"
59 
60 #ifdef __cplusplus
61 #if __cplusplus
62 extern "C" {
63 #endif /* __cplusplus */
64 #endif /* __cplusplus */
65 
66 #define PRINTF(fmt, args...) \
67     do {                     \
68         printf(fmt, ##args); \
69     } while (0)
70 
71 #define LITEOS_BASE_TEST 1
72 
73 #ifndef LOS_KERNEL_TEST_FULL
74 #define LOS_KERNEL_TEST_FULL  0
75 #endif
76 #define LOS_KERNEL_ATOMIC_TEST 1
77 #define LOS_KERNEL_CORE_TASK_TEST 1
78 #define LOS_KERNEL_IPC_MUX_TEST 1
79 #define LOS_KERNEL_IPC_SEM_TEST 1
80 #define LOS_KERNEL_IPC_EVENT_TEST 1
81 #define LOS_KERNEL_IPC_QUEUE_TEST 1
82 #define LOS_KERNEL_CORE_SWTMR_TEST 1
83 #ifndef LOS_KERNEL_HWI_TEST
84 #define LOS_KERNEL_HWI_TEST 1
85 #endif
86 #define LOS_KERNEL_FS_TEST 0
87 #define LOS_KERNEL_MEM_TEST 1
88 #define LOS_KERNEL_DYNLINK_TEST 0
89 #define LOS_KERNEL_TICKLESS_TEST 0
90 #if (LOSCFG_KERNEL_PM == 1)
91 #define LOS_KERNEL_PM_TEST 1
92 #else
93 #define LOS_KERNEL_PM_TEST 0
94 #endif
95 #define LOS_KERNEL_LMS_TEST 0
96 #define LOS_KERNEL_LMK_TEST 0
97 #define LOS_KERNEL_SIGNAL_TEST 0
98 
99 #define LOS_POSIX_TEST 1
100 #define LOS_CMSIS_TEST 1
101 #define LOS_CMSIS2_CORE_TASK_TEST 0
102 #define LOS_CMSIS2_IPC_MUX_TEST 0
103 #define LOS_CMSIS2_IPC_SEM_TEST 0
104 #define LOS_CMSIS2_IPC_EVENT_TEST 0
105 #define LOS_CMSIS2_IPC_MSG_TEST 0
106 #define LOS_CMSIS2_CORE_SWTMR_TEST 0
107 #define LOS_CMSIS2_HWI_TEST 0
108 
109 #define LOSCFG_TEST_LLT 0
110 #define LOSCFG_TEST_MUCH_LOG 0
111 
112 extern UINT32 volatile g_testCount;
113 extern UINT32 g_testTskHandle;
114 extern UINT32 g_testTaskID01;
115 extern UINT32 g_testTaskID02;
116 extern UINT32 g_testTaskID03;
117 extern UINT32 g_testTaskID04;
118 extern UINT32 g_hwiNum1;
119 extern UINT32 g_hwiNum2;
120 extern UINT32 g_usSemID;
121 extern UINT32 g_usSemID2;
122 extern UINT32 g_mutexTest;
123 
124 extern UINT16 g_usSwTmrID;
125 extern UINT32 g_usSemID;
126 extern UINT32 g_testQueueID01;
127 extern UINT32 g_testQueueID02;
128 extern UINT32 g_testQueueID03;
129 extern UINT32 g_testTskHandle;
130 extern UINT32 g_leavingTaskNum;
131 extern UINT32 g_testTaskIdArray[LOSCFG_BASE_CORE_TSK_LIMIT];
132 extern UINT16 g_index;
133 extern UINT32 g_usSemID3[];
134 extern EVENT_CB_S g_exampleEvent;
135 
136 #ifndef LOS_TASK_MIN_TEST_STACK_SIZE
137 #define LOS_TASK_MIN_TEST_STACK_SIZE LOSCFG_BASE_CORE_TSK_MIN_STACK_SIZE + 0x20
138 #endif
139 
140 #ifndef TASK_TEST
141 #define TASK_TEST
142 #endif
143 
144 #ifndef SWTMR_TEST
145 #define SWTMR_TEST
146 #endif
147 
148 #ifndef QUEUE_TEST
149 #define QUEUE_TEST
150 #endif
151 
152 #ifndef SEM_TEST
153 #define SEM_TEST
154 #endif
155 
156 #ifndef EVENT_TEST
157 #define EVENT_TEST
158 #endif
159 
160 #ifndef HWI_TEST
161 #define HWI_TEST
162 #endif
163 
164 #ifndef TICK_TEST
165 #define TICK_TEST
166 #endif
167 
168 #ifndef EXC_TEST
169 #define EXC_TEST
170 #endif
171 
172 #ifndef MEMCHECK_TEST
173 #define MEMCHECK_TEST
174 #endif
175 
176 #ifndef MACRO_BASE_FUNCTION_TEST
177 #define MACRO_BASE_FUNCTION_TEST
178 #endif
179 
180 #ifndef MACRO_EXC_TEST
181 #define MACRO_EXC_TEST
182 #endif
183 
184 #ifndef MACRO_PRESSURE_TEST
185 #define MACRO_PRESSURE_TEST
186 #endif
187 
188 #ifdef MACRO_PREESSURE_TEST
189 #define DIVISOR 1
190 #else
191 #define DIVISOR 10
192 #endif
193 
194 #ifndef TEST_CASE_RES_CHECK
195 #define TEST_CASE_RES_CHECK
196 #endif
197 
198 #ifndef TST_IT
199 #define TST_IT
200 #endif
201 
202 #define TEST_PT 1
203 
204 #if (1 == OS_INCLUDE_DYNMEM)
205 #define TEST_BIG 1
206 #else
207 #define TEST_BIG 0
208 #endif
209 
210 #define TASK_PRIO_TEST 25
211 #define TASK_PRIO_TEST_NORMAL 20
212 
213 #define TASK_LOOP_NUM 0x100000
214 #define QUEUE_LOOP_NUM 100
215 #define HWI_LOOP_NUM 100
216 #define SWTMR_LOOP_NUM 1000
217 #define TASK_NAME_NUM 10
218 #define TEST_TASK_RUNTIME 0x100000
219 #define TEST_SWTMR_RUNTIME 0x1000000
220 #define TEST_HWI_RUNTIME 0x100000
221 #define TEST_TASK_PRIORITY_LOW osPriorityBelowNormal  // tskIDLE_PRIORITY + 10
222 #define TEST_TASK_PRIORITY_NORMAL osPriorityNormal    // tskIDLE_PRIORITY + 11
223 #define TEST_TASK_PRIORITY_HIGH osPriorityAboveNormal // tskIDLE_PRIORITY + 12
224 #define TEST_TASK_PRIORITY_MAX osPriorityAboveNormal5
225 
226 #define LOS_TASK_STATUS_DETACHED 0x0100
227 
228 #define LOS_SYS_MS_PER_SECOND 1000    // Number of ms in one second.
229 #define LOS_SYS_US_PER_SECOND 1000000 // Number of us in one second.
230 
231 #define LOS_MS_PER_TICK (LOS_SYS_MS_PER_SECOND / LOSCFG_BASE_CORE_TICK_PER_SECOND)
232 
233 #ifdef __RISC_V__
234 #define OS_TSK_TEST_STACK_SIZE 0x9000
235 #elif  __XTENSA_LX6__
236 #define OS_TSK_TEST_STACK_SIZE 0x800
237 #else
238 #define OS_TSK_TEST_STACK_SIZE 0x1000
239 #endif
240 #define TASK_STACK_SIZE_TEST OS_TSK_TEST_STACK_SIZE
241 #define TEST_TASK_STACK_SIZE OS_TSK_TEST_STACK_SIZE
242 #define TASK_CMSIS_STACK_SIZE_TEST 0x600
243 
244 #define OS_EVENT_TIMEOUT_MAX_VAL 0xFFFFFFFF
245 
246 extern UINT32 QueueUsedCountGet(VOID);
247 extern UINT32 TaskUsedCountGet(VOID);
248 #define TASK_EXISTED_NUM TaskUsedCountGet()
249 #define QUEUE_EXISTED_NUM QueueUsedCountGet()
250 
251 #define HWI_NUM_INT_NEG (-4)
252 #define HWI_NUM_INT0 0
253 #define HWI_NUM_INT1 1
254 #define HWI_NUM_INT2 2
255 #define HWI_NUM_INT3 3
256 #define HWI_NUM_INT4 4
257 #define HWI_NUM_INT5 5
258 #define HWI_NUM_INT6 6
259 #define HWI_NUM_INT7 7
260 #define HWI_NUM_INT11 11
261 #define HWI_NUM_INT12 12
262 #define HWI_NUM_INT13 13
263 #define HWI_NUM_INT14 14
264 #define HWI_NUM_INT15 15
265 #define HWI_NUM_INT16 16
266 #define HWI_NUM_INT17 17
267 #define HWI_NUM_INT18 18
268 #define HWI_NUM_INT21 21
269 #define HWI_NUM_INT22 22
270 #define HWI_NUM_INT23 23
271 #define HWI_NUM_INT24 24
272 #define HWI_NUM_INT25 25
273 #define HWI_NUM_INT26 26
274 #define HWI_NUM_INT27 27
275 #define HWI_NUM_INT28 28
276 #define HWI_NUM_INT30 30
277 #define HWI_NUM_INT31 31
278 #define HWI_NUM_INT32 32
279 #define HWI_NUM_INT33 33
280 #define HWI_NUM_INT45 45
281 #define HWI_NUM_INT50 50
282 #define HWI_NUM_INT55 55
283 #define HWI_NUM_INT60 60
284 #define HWI_NUM_INT58 58
285 #define HWI_NUM_INT59 59
286 
287 #define HWI_NUM_INT75 75
288 #define HWI_NUM_INT71 71
289 #define HWI_NUM_INT72 72
290 #define HWI_NUM_INT73 73
291 
292 #ifdef __RISC_V__
293 #define HWI_NUM_TEST 32
294 #define HWI_NUM_TEST0 33
295 #define HWI_NUM_TEST1 34
296 #define HWI_NUM_TEST2 35
297 #define HWI_NUM_TEST3 36
298 #define LOS_KERNEL_MULTI_HWI_TEST 1 // default enable multiple hwi number test case
299 #elif __CSKY_V2__
300 #define HWI_NUM_TEST 31 // csky_v2 only support one software interrupt number
301 #define LOS_KERNEL_MULTI_HWI_TEST 0 // csky_v2 not support multiple hwi number test case
302 #elif __XTENSA_LX6__
303 #define HWI_NUM_TEST 7 // xtensa_lx6 only support one software interrupt number
304 #define LOS_KERNEL_MULTI_HWI_TEST 0 // xtensa_lx6 not support multiple hwi number test case
305 #else
306 #define HWI_NUM_TEST  HWI_NUM_INT7
307 #define HWI_NUM_TEST0 HWI_NUM_INT1
308 #define HWI_NUM_TEST1 HWI_NUM_INT11
309 #define HWI_NUM_TEST2 HWI_NUM_INT12
310 #define HWI_NUM_TEST3 HWI_NUM_INT14
311 #define LOS_KERNEL_MULTI_HWI_TEST 1 // default enable multiple hwi number test case
312 #endif
313 
314 #define LOSCFG_BASE_IPC_QUEUE_CONFIG LOSCFG_BASE_IPC_QUEUE_LIMIT
315 #define LOSCFG_BASE_IPC_SEM_CONFIG LOSCFG_BASE_IPC_SEM_LIMIT
316 #define LOSCFG_BASE_CORE_SWTMR_CONFIG LOSCFG_BASE_CORE_SWTMR_LIMIT
317 #define LOSCFG_BASE_CORE_TSK_CONFIG LOSCFG_BASE_CORE_TSK_LIMIT
318 #define dprintf printf
319 #define IT_SEM_COUNT_MAX OS_SEM_COUNTING_MAX_COUNT
320 
321 extern EVENT_CB_S g_pstEventCb01;
322 extern EVENT_CB_S g_pstEventCb02;
323 extern EVENT_CB_S g_pstEventCb03;
324 
325 
326 extern UINT32 TEST_TskDelete(UINT32 taskID);
327 extern UINT32 TestSemDelete(UINT32 semHandle);
328 extern UINT32 TestHwiDelete(UINT32 hwiNum);
329 extern VOID TEST_HwiDeleteAll(VOID);
330 extern VOID TestHwiTrigger(UINT32 hwiNum);
331 extern VOID TestHwiClear(UINT32 hwiNum);
332 #ifdef __RISC_V__
333 extern UINT64 LosCpuCycleGet(VOID);
334 #else
335 typedef struct tagHwiHandleForm {
336     HWI_PROC_FUNC pfnHook;
337     UINT32 uwPrioMask;
338 } HWI_HANDLE_FORM_S;
339 #endif
340 #define TEST_HwiCreate(ID, prio, mode, Func, irqParam) LOS_HwiCreate(ID, prio, mode, Func, irqParam)
341 #define uart_printf_func printf
342 
343 extern VOID ItSuiteLosAtomic(void);
344 extern VOID ItSuiteLosTask(void);
345 extern VOID ItSuiteLosQueue(void);
346 extern VOID ItSuiteLosMux(void);
347 extern VOID ItSuiteLosEvent(void);
348 extern VOID ItSuiteLosSem(void);
349 extern VOID ItSuiteLosSwtmr(void);
350 extern VOID ItSuiteLosHwi(void);
351 extern VOID ItSuiteLosMem(void);
352 extern VOID ItSuiteLosDynlink(void);
353 extern VOID ItSuite_Los_FatFs(void);
354 extern VOID ItSuiteLosPm(void);
355 extern VOID ItSuiteLosLmk(void);
356 extern VOID ItSuiteLosSignal(void);
357 
358 extern int PthreadFuncTestSuite(void);
359 
360 extern void CmsisFuncTestSuite(void);
361 
362 extern VOID ItSuite_Cmsis_Lostask(void);
363 extern VOID ItSuite_Cmsis_Lostask_add(void);
364 extern VOID ItSuite_CMSIS_Losmsg(void);
365 extern VOID ItSuite_CMSIS_Losmsg_add(void);
366 extern VOID ItSuite_CMSIS_Signal(void);
367 extern VOID ItSuite_CMSIS_Signal_add(void);
368 extern VOID ItSuite_Cmsis_LosMemBox(void);
369 extern VOID ItSuite_Cmsis_LosMutex(void);
370 extern VOID ItSuite_Cmsis_LosMutex_add(void);
371 extern VOID ItSuite_Cmsis_LosRobin(void);
372 extern VOID ItSuite_Cmsis_LosRobin_add(void);
373 extern VOID ItSuite_CMSIS_Losmail(void);
374 extern VOID ItSuite_CMSIS_Losmail_add(void);
375 extern VOID ItSuite_Cmsis_LosSem(void);
376 extern VOID ItSuite_Cmsis_LosSem_add(void);
377 extern VOID ItSuite_CMSIS_Swtmr(void);
378 extern VOID ItSuite_CMSIS_Swtmr_add(void);
379 extern VOID ItSuite_Cmsis_Hwi_M3(VOID);
380 extern VOID ItSuite_Cmsis_Hwi_M3_add(void);
381 extern VOID ItSuite_CMSIS_Wait(void);
382 extern VOID ItSuite_CMSIS_Wait_add(VOID);
383 
384 #define OS_MS_TO_TICK(ms) (((ms) * (UINT64)LOSCFG_BASE_CORE_TICK_PER_SECOND) / 1000)
385 
386 extern UINT32 g_usSemID;
387 extern UINT32 g_auwTestTaskID[LOSCFG_BASE_CORE_TSK_LIMIT];
388 
389 extern LosQueueCB *g_pstAllQueue;
390 extern UINT32 g_taskMaxNum;
391 
392 extern LITE_OS_SEC_BSS_INIT LOS_DL_LIST g_stUnusedSemList;
393 
394 extern LosTask g_losTask;
395 extern VOID LOS_Schedule(VOID);
396 extern LosTaskCB *g_taskCBArray;
397 
398 #ifdef __cplusplus
399 #if __cplusplus
400 }
401 #endif /* __cplusplus */
402 #endif /* __cplusplus */
403 
404 #endif /* _OSTEST_H */
405