1800b99b8Sopenharmony_ci/*
2800b99b8Sopenharmony_ci * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3800b99b8Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4800b99b8Sopenharmony_ci * you may not use this file except in compliance with the License.
5800b99b8Sopenharmony_ci * You may obtain a copy of the License at
6800b99b8Sopenharmony_ci *
7800b99b8Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8800b99b8Sopenharmony_ci *
9800b99b8Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10800b99b8Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11800b99b8Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12800b99b8Sopenharmony_ci * See the License for the specific language governing permissions and
13800b99b8Sopenharmony_ci * limitations under the License.
14800b99b8Sopenharmony_ci */
15800b99b8Sopenharmony_ci
16800b99b8Sopenharmony_ci#ifndef MULTITHREAD_CONSTRUCTOR_H
17800b99b8Sopenharmony_ci#define MULTITHREAD_CONSTRUCTOR_H
18800b99b8Sopenharmony_ci
19800b99b8Sopenharmony_ci#define NOINLINE __attribute__((noinline))
20800b99b8Sopenharmony_ci
21800b99b8Sopenharmony_ci#define GEN_TEST_FUNCTION(FuncNumA, FuncNumB)          \
22800b99b8Sopenharmony_ci    __attribute__((noinline)) int TestFunc##FuncNumA() \
23800b99b8Sopenharmony_ci    {                                                  \
24800b99b8Sopenharmony_ci        return TestFunc##FuncNumB();                   \
25800b99b8Sopenharmony_ci    }
26800b99b8Sopenharmony_ci
27800b99b8Sopenharmony_ci#ifdef __cplusplus
28800b99b8Sopenharmony_ciextern "C" {
29800b99b8Sopenharmony_ci#endif
30800b99b8Sopenharmony_ciint MultiThreadConstructor(const int threadNum);
31800b99b8Sopenharmony_ciint MultiThreadConstructorForThreadCrash(const int threadNum);
32800b99b8Sopenharmony_ci#ifdef __cplusplus
33800b99b8Sopenharmony_ci}
34800b99b8Sopenharmony_ci#endif
35800b99b8Sopenharmony_ci
36800b99b8Sopenharmony_ci// test functions for callstack depth test
37800b99b8Sopenharmony_ciint TestFunc0(void);
38800b99b8Sopenharmony_ciint TestFunc1(void);
39800b99b8Sopenharmony_ciint TestFunc2(void);
40800b99b8Sopenharmony_ciint TestFunc3(void);
41800b99b8Sopenharmony_ciint TestFunc4(void);
42800b99b8Sopenharmony_ciint TestFunc5(void);
43800b99b8Sopenharmony_ciint TestFunc6(void);
44800b99b8Sopenharmony_ciint TestFunc7(void);
45800b99b8Sopenharmony_ciint TestFunc8(void);
46800b99b8Sopenharmony_ciint TestFunc9(void);
47800b99b8Sopenharmony_ciint TestFunc10(void);
48800b99b8Sopenharmony_ciint TestFunc11(void);
49800b99b8Sopenharmony_ciint TestFunc12(void);
50800b99b8Sopenharmony_ciint TestFunc13(void);
51800b99b8Sopenharmony_ciint TestFunc14(void);
52800b99b8Sopenharmony_ciint TestFunc15(void);
53800b99b8Sopenharmony_ciint TestFunc16(void);
54800b99b8Sopenharmony_ciint TestFunc17(void);
55800b99b8Sopenharmony_ciint TestFunc18(void);
56800b99b8Sopenharmony_ciint TestFunc19(void);
57800b99b8Sopenharmony_ciint TestFunc20(void);
58800b99b8Sopenharmony_ciint TestFunc21(void);
59800b99b8Sopenharmony_ciint TestFunc22(void);
60800b99b8Sopenharmony_ciint TestFunc23(void);
61800b99b8Sopenharmony_ciint TestFunc24(void);
62800b99b8Sopenharmony_ciint TestFunc25(void);
63800b99b8Sopenharmony_ciint TestFunc26(void);
64800b99b8Sopenharmony_ciint TestFunc27(void);
65800b99b8Sopenharmony_ciint TestFunc28(void);
66800b99b8Sopenharmony_ciint TestFunc29(void);
67800b99b8Sopenharmony_ciint TestFunc30(void);
68800b99b8Sopenharmony_ciint TestFunc31(void);
69800b99b8Sopenharmony_ciint TestFunc32(void);
70800b99b8Sopenharmony_ciint TestFunc33(void);
71800b99b8Sopenharmony_ciint TestFunc34(void);
72800b99b8Sopenharmony_ciint TestFunc35(void);
73800b99b8Sopenharmony_ciint TestFunc36(void);
74800b99b8Sopenharmony_ciint TestFunc37(void);
75800b99b8Sopenharmony_ciint TestFunc38(void);
76800b99b8Sopenharmony_ciint TestFunc39(void);
77800b99b8Sopenharmony_ciint TestFunc40(void);
78800b99b8Sopenharmony_ciint TestFunc41(void);
79800b99b8Sopenharmony_ciint TestFunc42(void);
80800b99b8Sopenharmony_ciint TestFunc43(void);
81800b99b8Sopenharmony_ciint TestFunc44(void);
82800b99b8Sopenharmony_ciint TestFunc45(void);
83800b99b8Sopenharmony_ciint TestFunc46(void);
84800b99b8Sopenharmony_ciint TestFunc47(void);
85800b99b8Sopenharmony_ciint TestFunc48(void);
86800b99b8Sopenharmony_ciint TestFunc49(void);
87800b99b8Sopenharmony_ciint TestFunc50(void);
88800b99b8Sopenharmony_ciint TestFunc51(void);
89800b99b8Sopenharmony_ciint TestFunc52(void);
90800b99b8Sopenharmony_ciint TestFunc53(void);
91800b99b8Sopenharmony_ciint TestFunc54(void);
92800b99b8Sopenharmony_ciint TestFunc55(void);
93800b99b8Sopenharmony_ciint TestFunc56(void);
94800b99b8Sopenharmony_ciint TestFunc57(void);
95800b99b8Sopenharmony_ciint TestFunc58(void);
96800b99b8Sopenharmony_ciint TestFunc59(void);
97800b99b8Sopenharmony_ciint TestFunc60(void);
98800b99b8Sopenharmony_ciint TestFunc61(void);
99800b99b8Sopenharmony_ciint TestFunc62(void);
100800b99b8Sopenharmony_ciint TestFunc63(void);
101800b99b8Sopenharmony_ciint TestFunc64(void);
102800b99b8Sopenharmony_ciint TestFunc65(void);
103800b99b8Sopenharmony_ciint TestFunc66(void);
104800b99b8Sopenharmony_ciint TestFunc67(void);
105800b99b8Sopenharmony_ciint TestFunc68(void);
106800b99b8Sopenharmony_ciint TestFunc69(void);
107800b99b8Sopenharmony_ciint TestFunc70(void);
108800b99b8Sopenharmony_ci
109800b99b8Sopenharmony_ci#endif // MULTITHREAD_CONSTRUCTOR_H
110