• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
3  * Copyright (c) 2020-2021 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 #include "iCunit.h"
39 #include <sched.h>
40 #include <pthread.h>
41 #include <stdio.h>
42 #include <stdlib.h>
43 #include <limits.h>
44 #include <string.h>
45 #include <unistd.h>
46 #include <sys/mman.h>
47 #include <errno.h>
48 #include <stdint.h>
49 #include <stdarg.h>
50 #include <sys/prctl.h>
51 #include <time.h>
52 #include <search.h>
53 #include <sys/mount.h>
54 #include "los_typedef.h"
55 #include "sys/wait.h"
56 #include "glob.h"
57 #include "mntent.h"
58 #include "securectype.h"
59 #include "securec.h"
60 #include <wchar.h>
61 #include <fcntl.h>
62 #include <sys/stat.h>
63 #include <dirent.h>
64 #include <semaphore.h>
65 
66 #ifndef OK
67 #define OK 0
68 #endif
69 
70 #define dprintf printf
71 #define ENOERR OK
72 #define LOSCFG_BASE_CORE_TSK_CONFIG 1024
73 
74 #define USER_PROCESS_PRIORITY_HIGHEST 10
75 #define USER_PROCESS_PRIORITY_LOWEST 31
76 #define TEST_TASK_PARAM_INIT(stTestTask, task_name, entry, prio) \
77     do {                                \
78         (void)memset_s(&stTestTask, sizeof(TSK_INIT_PARAM_S), 0, sizeof(TSK_INIT_PARAM_S)); \
79         stTestTask.pfnTaskEntry = (TSK_ENTRY_FUNC)entry; \
80         stTestTask.uwStackSize = LOS_TASK_MIN_STACK_SIZE; \
81         stTestTask.pcName = task_name; \
82         stTestTask.usTaskPrio = prio; \
83         stTestTask.uwResved = LOS_TASK_STATUS_DETACHED; \
84     } while (0)
85 
86 #ifdef LOSCFG_KERNEL_SMP
87 #define TEST_TASK_PARAM_INIT_AFFI(stTestTask, task_name, entry, prio, affi) \
88     TEST_TASK_PARAM_INIT(stTestTask, task_name, entry, prio)                \
89     stTestTask.usCpuAffiMask = affi;
90 #else
91 #define TEST_TASK_PARAM_INIT_AFFI(stTestTask, task_name, entry, prio, affi) \
92     TEST_TASK_PARAM_INIT(stTestTask, task_name, entry, prio)
93 #endif
94 #define JFFS_BASE_MTD_ADDR 0x100000
95 #define JFFS_BASE_MTD_LEN 0x600000
96 
97 #define LOS_TASK_MIN_STACK_SIZE 2048
98 #define TASK_PRIO_TEST 20
99 #ifdef LOSCFG_AARCH64
100 #define TASK_STACK_SIZE_TEST (LOS_TASK_MIN_STACK_SIZE * 3)
101 #else
102 #define TASK_STACK_SIZE_TEST LOS_TASK_MIN_STACK_SIZE
103 #endif
104 #define LOS_MS_PER_TICK (OS_SYS_MS_PER_SECOND / LOSCFG_BASE_CORE_TICK_PER_SECOND)
105 
106 #define HWI_NUM_INTVALID OS_HWI_MAX_NUM
107 #define writel(value, address) WRITE_UINT32(value, address)
108 
109 extern UINT32 PrepareFileEnv(CHAR *pathList[], CHAR *streamList[], INT32 streamLen[], INT32 listCnt);
110 extern UINT32 RecoveryFileEnv(CHAR *pathList[], INT32 listCnt);
111 extern UINT32 PosixPthreadInit(pthread_attr_t *attr, int pri);
112 extern UINT32 PosixPthreadDestroy(pthread_attr_t *attr, pthread_t thread);
113 
114 extern VOID TaskHold(UINT64 sec);
115 
116 extern UINT32 TaskCountGetTest(VOID);
117 extern UINT32 Sem_Count_Get_Test(VOID);
118 extern UINT32 QueueCountGetTest(VOID);
119 extern UINT32 Swtmr_Count_Get_Test(VOID);
120 extern void hal_interrupt_set_affinity(uint32_t irq, uint32_t cpuMask);
121 
122 #define TASK_EXISTED_NUM (TaskCountGetTest())
123 #define QUEUE_EXISTED_NUM (QueueCountGetTest())
124 #define SWTMR_EXISTED_NUM (Swtmr_Count_Get_Test())
125 #define SEM_EXISTED_NUM (Sem_Count_Get_Test())
126 
127 extern void TEST_TEST_HwiDelete(unsigned int irq, void *dev_id);
128 extern void TEST_HwiTrigger(unsigned int irq);
129 extern void TestExtraTaskDelay(UINT32 tick);
130 extern UINT64 TestTickCountGet(void);
131 extern UINT64 TestTickCountByCurrCpuid(void);
132 extern void TestBusyTaskDelay(UINT32 tick);
133 extern void *malloc(size_t size);
134 extern void TEST_DumpCpuid(void);
135 extern u_long T_random(void);
136 extern VOID TestAssertWaitDelay(UINT32 *testCount, UINT32 flag);
137 
138 UINT32 LosTaskDelay(UINT32 tick);
139 #define TEST_HwiDelete(ID) TEST_TEST_HwiDelete(ID, NULL)
140 #define TEST_HwiClear(ID) HalIrqMask(ID)
141 #define TEST_HwiTriggerDelay LosTaskDelay(200 * LOSCFG_BASE_CORE_TICK_PER_SECOND / 1000)
142 #define TEST_HwiCreate(ID, prio, mode, Func, arg) LOS_HwiCreate(ID, prio, mode, Func, arg)
143 
144 #if HUAWEI_ENV_NFS
145 #define NFS_MOUNT_DIR "/nfs"
146 #define NFS_MAIN_DIR NFS_MOUNT_DIR
147 #define NFS_PATH_NAME "/nfs/test"
148 #else
149 #define NFS_MOUNT_DIR "/nfs"
150 #define NFS_MAIN_DIR NFS_MOUNT_DIR
151 #define NFS_PATH_NAME "/nfs/test"
152 #endif
153 
154 #define WIN_MOUNT_PATH "/nfs"
155 #define WIN_NFS_MOUNT_DIR WIN_MOUNT_PATH
156 #define WIN_NFS_MAIN_DIR WIN_NFS_MOUNT_DIR
157 #define WIN_NFS_PATH_NAME "/nfs/test"
158 
159 #define HWI_NUM_INT0 0
160 #define HWI_NUM_INT1 1
161 #define HWI_NUM_INT2 2
162 #define HWI_NUM_INT3 3
163 #define HWI_NUM_INT4 4
164 #define HWI_NUM_INT5 5
165 #define HWI_NUM_INT6 6
166 #define HWI_NUM_INT7 7
167 #define HWI_NUM_INT11 11
168 #define HWI_NUM_INT12 12
169 #define HWI_NUM_INT13 13
170 #define HWI_NUM_INT14 14
171 #define HWI_NUM_INT15 15
172 #define HWI_NUM_INT16 16
173 #define HWI_NUM_INT17 17
174 #define HWI_NUM_INT18 18
175 #define HWI_NUM_INT19 19
176 #define HWI_NUM_INT21 21
177 #define HWI_NUM_INT22 22
178 #define HWI_NUM_INT23 23
179 #define HWI_NUM_INT24 24
180 #define HWI_NUM_INT25 25
181 #define HWI_NUM_INT26 26
182 #define HWI_NUM_INT27 27
183 #define HWI_NUM_INT28 28
184 #define HWI_NUM_INT30 30
185 #define HWI_NUM_INT31 31
186 #define HWI_NUM_INT32 32
187 #define HWI_NUM_INT33 33
188 #define HWI_NUM_INT34 34
189 #define HWI_NUM_INT35 35
190 #define HWI_NUM_INT42 42
191 #define HWI_NUM_INT45 45
192 #define HWI_NUM_INT46 46
193 #define HWI_NUM_INT50 50
194 #define HWI_NUM_INT55 55
195 #define HWI_NUM_INT56 56
196 #define HWI_NUM_INT57 57
197 #define HWI_NUM_INT58 58
198 #define HWI_NUM_INT59 59
199 #define HWI_NUM_INT60 60
200 #define HWI_NUM_INT61 61
201 #define HWI_NUM_INT63 63
202 #define HWI_NUM_INT62 62
203 #define HWI_NUM_INT68 68
204 #define HWI_NUM_INT69 69
205 
206 #define HWI_NUM_INT95 95
207 #define HWI_NUM_INT114 114
208 #define HWI_NUM_INT169 169
209 
210 #if defined TESTPBXA9
211 #define HWI_NUM_TEST HWI_NUM_INT56
212 #define HWI_NUM_TEST1 HWI_NUM_INT57
213 #define HWI_NUM_TEST0 HWI_NUM_INT58
214 #define HWI_NUM_TEST2 HWI_NUM_INT59
215 #define HWI_NUM_TEST3 HWI_NUM_INT60
216 #elif defined TEST3518EV300
217 #define HWI_NUM_TEST0 HWI_NUM_INT58
218 #define HWI_NUM_TEST HWI_NUM_INT59
219 #define HWI_NUM_TEST1 HWI_NUM_INT60
220 #define HWI_NUM_TEST2 HWI_NUM_INT61
221 #define HWI_NUM_TEST3 HWI_NUM_INT68
222 #elif defined TEST3516DV300
223 #define HWI_NUM_TEST HWI_NUM_INT56
224 #define HWI_NUM_TEST1 HWI_NUM_INT57
225 #define HWI_NUM_TEST0 HWI_NUM_INT58
226 #define HWI_NUM_TEST2 HWI_NUM_INT59
227 #define HWI_NUM_TEST3 HWI_NUM_INT60
228 #endif
229 
230 #define TEST_TASKDELAY_1TICK 1
231 #define TEST_TASKDELAY_2TICK 2
232 #define TEST_TASKDELAY_4TICK 4
233 #define TEST_TASKDELAY_10TICK 10
234 #define TEST_TASKDELAY_20TICK 20
235 #define TEST_TASKDELAY_50TICK 50
236 
237 #define uart_printf_func printf
238 
239 #ifndef VFS_STAT_PRINTF
240 #define VFS_STAT_PRINTF 0
241 #endif
242 
243 #ifndef VFS_STATFS_PRINTF
244 #define VFS_STATFS_PRINTF 0
245 #endif
246 
247 #define OPEN_FILE_MAX 20
248 
249 #define HUAWEI_ENV_NFS 0
250 
251 #ifndef TEST_RESOURCELEAK_CHECK
252 #define TEST_RESOURCELEAK_CHECK 1
253 #endif
254 
255 #ifndef TEST_MODULE_CHECK
256 #define TEST_MODULE_CHECK 1
257 #endif
258 
259 extern UINT32 g_shellTestQueueID;
260 extern UINT32 g_testCount;
261 extern UINT32 g_testCount1;
262 extern UINT32 g_testCount2;
263 extern UINT32 g_testCount3;
264 extern UINT32 g_flowcheck;
265 extern UINT32 g_failResult;
266 extern UINT32 g_passResult;
267 extern UINT32 g_testTskHandle;
268 extern UINT32 g_testTaskID01;
269 extern UINT32 g_testTaskID02;
270 extern UINT32 g_testTaskID03;
271 extern UINT32 g_testTaskID04;
272 extern UINT32 g_hwiNum1;
273 extern UINT32 g_hwiNum2;
274 extern UINT32 g_semID;
275 extern UINT32 g_semID2;
276 extern UINT32 g_mutexTest;
277 extern UINT32 g_cpupTestCount;
278 extern UINT16 g_swTmrID;
279 extern UINT32 g_semID;
280 extern UINT32 g_testQueueID01;
281 extern UINT32 g_testQueueID02;
282 extern UINT32 g_testQueueID03;
283 extern UINT32 g_testTskHandle;
284 extern UINT32 g_leavingTaskNum;
285 extern UINT32 g_mAuwTestTaskID[32];
286 extern UINT8 g_mUsIndex;
287 extern UINT32 g_usSemID3[];
288 extern UINT32 g_testPeriod;
289 extern BOOL g_isAddArray;
290 extern BOOL g_isSpinorInit;
291 extern BOOL g_isSdInit;
292 extern UINT32 g_getTickConsume;
293 extern UINT32 g_waitTestCount;
294 extern INT32 g_libFilesystem;
295 
296 extern UINT32 GetTimer2Value(VOID);
297 extern int hinand_erase(unsigned long start, unsigned long size);
298 #define hispinor_erase(start, size)     \
299     do {                                \
300         struct erase_info opts;         \
301         struct mtd_info *pstMtd;        \
302         pstMtd = get_mtd("spinor");     \
303         (void)memset_s(&opts, sizeof(opts), 0, sizeof(opts)); \
304         opts.addr = start;              \
305         opts.len = size;                \
306         pstMtd->erase(pstMtd, &opts);   \
307     } while (0)
308 extern void ipc_gmac_init(void);
309 
310 extern UINT32 Mem_Consume_Show(void);
311 extern VOID shell_cmd_register(void);
312 extern INT32 OsShellCmdSystemInfo(INT32 argc, const CHAR **argv);
313 extern UINT32 OsShellCmdDumpTask(INT32 argc, const CHAR **argv);
314 extern UINT32 OsShellCmdTaskCntGet(VOID);
315 extern UINT32 OsShellCmdSwtmrCntGet(VOID);
316 extern void msleep(unsigned int msecs);
317 extern unsigned int sleep(unsigned int seconds);
318 extern int usleep(unsigned useconds);
319 
320 extern VOID ipc_network_init(void);
321 #ifdef LOSCFG_DRIVERS_MMC
322 extern INT32 SD_MMC_Host_init(void);
323 #endif
324 extern VOID rdk_fs_init(void);
325 extern VOID jffs2_fs_init(void);
326 extern VOID ProcFsInit(void);
327 
328 extern UINT32 LOS_MemTotalUsedGet(VOID *pool);
329 extern VOID ptestTickConsume(VOID);
330 extern UINT32 TEST_TskDelete(UINT32 taskID);
331 extern UINT32 TEST_SemDelete(UINT32 semHandle);
332 extern VOID irq_trigger(unsigned int irq);
333 extern VOID TestPartInit(char *type, UINT32 startAddr, UINT32 length);
334 extern VOID TestPartDelete(char *type);
335 
336 extern VOID TestRunShell(VOID);
337 
338 extern VOID It_Usb_AutoTest(VOID);
339 extern VOID Test_hid_dev_mode(VOID);
340 
341 extern UINT32 usbshell_cmd_reg(VOID);
342 extern void usbshell_queue_control(VOID);
343 extern UINT32 OsTestInit(VOID);
344 
345 extern void TEST_DT_COMMON(void);
346 
347 extern void it_process_testcase(void);
348 extern void it_pthread_testcase(void);
349 extern void it_mutex_test(void);
350 extern void it_rwlock_test(void);
351 extern void it_spinlock_test(void);
352 
353 /* Format options (3rd argument of f_mkfs) */
354 #define TEST_FM_FAT 0x01
355 #define TEST_FM_FAT32 0x02
356 #define TEST_FM_EXFAT 0x04
357 #define TEST_FM_ANY 0x07
358 #define TEST_FM_SFD 0x08
359 
360 #define BIG_FD 512
361 typedef struct testrunParam {
362     CHAR testcase_sequence[16];
363     CHAR testcase_num[16];
364     CHAR testcase_layer[32];
365     CHAR testcase_module[32];
366     CHAR testcase_level[16];
367     CHAR testcase_type[16];
368     CHAR testcase_id[128];
369 } TEST_RUN_PARAM;
370 
371 typedef enum test_type {
372     HOST_U,     // USB U PERFORMANCE
373     HOST_MUTIL, // MUTIL
374     HOST_DISK,  // USB DISKPARTION
375     HOST_HUB,   // USB HUB
376     HOST_ETH,   // USB HOST ETH
377     USB_SMP,
378     HOST_UVC,   // USB HOST UVC
379     HOST_NULL
380 } usb_test_type;
381 
382 
383 #define SHELLTEST_QUEUE_BUFSIZE sizeof(TEST_RUN_PARAM)
384 #ifdef LOSCFG_DRIVERS_USB
385 
386 void Test_usb_shellcmd(controller_type ctype, device_type dtype, usb_test_type typetest);
387 #endif
388 
389 extern int Gettid(void);
390 
391 /* like the ctime/asctime api, use static buffer, though not thread-safe. */
Curtime()392 static inline const char *Curtime()
393 {
394     struct timespec ts;
395     struct tm t;
396     static char buf[32];
397     (void)clock_gettime(CLOCK_REALTIME, &ts);
398     (void)localtime_r(&ts.tv_sec, &t);
399     (void)sprintf_s(buf, sizeof(buf), "%d-%02d-%02d %02d:%02d:%02d.%06ld", t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour,
400         t.tm_min, t.tm_sec, ts.tv_nsec / 1000);
401     return buf;
402 }
403 
404 #define LogPrintln(fmt, ...)                                                                  \
405     printf("%s [%d] %s:%d " fmt "%c", Curtime(), Gettid(), __FILE__, __LINE__, ##__VA_ARGS__, \
406         ('\n' == " " fmt[sizeof(" " fmt) - 2]) ? '\0' : '\n') // trailing newline is auto appended
407 
408 #if !_REDIR_TIME64 || defined(__LP64__)
409 #define TIME_F "ld"
410 #else
411 #define TIME_F "lld"
412 #endif
413 
noprintf(...)414 static void noprintf (...)
415 {
416     return;
417 }
418 #define TEST_PRINT printf
419 
420 /* the files with different access privilege used in testcases are define below */
421 #define FILEPATH_ENOENT "/storage/test_nosuchfile.txt"
422 #define FILEPATHLEN_ENOENT (strlen(FILEPATH_ENOENT) +1U)
423 
424 #define FILEPATH_NOACCESS "noaccessssssssssssssssssssssssssssssssssssssssssss"
425 #define FILEPATHLEN_NOACCESS (strlen(FILEPATH_NOACCESS) +1U)
426 
427 #define FILEPATH_000 "/storage/test_000.txt"
428 #define FILEPATHLEN_000 (strlen(FILEPATH_000) +1U)
429 
430 #define FILEPATH_775 "/storage/test_775.txt"
431 #define FILEPATHLEN_775 (strlen(FILEPATH_775) +1U)
432 
433 #define FILEPATH_755 "/storage/test_775.txt"
434 #define FILEPATHLEN_755 (strlen(FILEPATH_755) +1U)
435 
436 #define FILEPATH_RELATIVE "./1.txt"
437 #define FILEPATHLEN_RELATIVE (strlen(FILEPATH_RELATIVE) +1U)
438 
439 #define DIRPATH_775 "/storage"
440 
441 #define FD_EBADF 513
442 #define FD_EFAULT -1000
443 
444 #define PATHNAME_ENAMETOOLONG "ENAMETOOLONG12345678912345678912345678912345678912345678912345678912345678911111\
445 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
446 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
447 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
448 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
449 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
450 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
451 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
452 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
453 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
454 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
455 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
456 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
457 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
458 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
459 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
460 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
461 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
462 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
463 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
464 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
465 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
466 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
467 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
468 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
469 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
470 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
471 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
472 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
473 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
474 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
475 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
476 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
477 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
478 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
479 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
480 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
481 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
482 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
483 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
484 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
485 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
486 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
487 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
488 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
489 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
490 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
491 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
492 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
493 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
494 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
495 12345678912345678912345678913245678912345678912345678913245678913456789123456789\
496 12345678912345678912345678913245678912345678912345678913245678913456789123456789"
497 
498 #endif /* _OSTEST_H */
499