1800b99b8Sopenharmony_ci/* 2800b99b8Sopenharmony_ci * Copyright (c) 2021-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 DFX_CRASHER_H 17800b99b8Sopenharmony_ci#define DFX_CRASHER_H 18800b99b8Sopenharmony_ci 19800b99b8Sopenharmony_ci#include <stdint.h> 20800b99b8Sopenharmony_ci 21800b99b8Sopenharmony_ci#define NOINLINE __attribute__((noinline)) 22800b99b8Sopenharmony_ci 23800b99b8Sopenharmony_ci#define GEN_TEST_FUNCTION(FuncNumA, FuncNumB) \ 24800b99b8Sopenharmony_ci __attribute__((noinline)) int TestFunc##FuncNumA() \ 25800b99b8Sopenharmony_ci { \ 26800b99b8Sopenharmony_ci return TestFunc##FuncNumB(); \ 27800b99b8Sopenharmony_ci } 28800b99b8Sopenharmony_ci 29800b99b8Sopenharmony_ci 30800b99b8Sopenharmony_ciint RaiseAbort(void); 31800b99b8Sopenharmony_ciint Abort(void); 32800b99b8Sopenharmony_ciint RaiseBusError(void); 33800b99b8Sopenharmony_ciint RaiseFloatingPointException(void); 34800b99b8Sopenharmony_ciint RaiseIllegalInstructionException(void); 35800b99b8Sopenharmony_ciint IllegalInstructionException(void); 36800b99b8Sopenharmony_ciint RaiseSegmentFaultException(void); 37800b99b8Sopenharmony_ciint SegmentFaultException(void); 38800b99b8Sopenharmony_ciint RaiseTrapException(void); 39800b99b8Sopenharmony_ciint CrashTest(void); 40800b99b8Sopenharmony_ci 41800b99b8Sopenharmony_ci 42800b99b8Sopenharmony_civoid PrintUsage(void); 43800b99b8Sopenharmony_civoid *DoCrashInThread(void *inputArg); 44800b99b8Sopenharmony_civoid *SleepThread(void *argv); 45800b99b8Sopenharmony_ci 46800b99b8Sopenharmony_ciuint64_t DoActionOnSubThread(const char *arg); 47800b99b8Sopenharmony_ciuint64_t ParseAndDoCrash(const char *arg); 48800b99b8Sopenharmony_ciint MaxStackDepth(void); 49800b99b8Sopenharmony_ci 50800b99b8Sopenharmony_ci// 1 2 3 4 5 6 7 51800b99b8Sopenharmony_ci// 1234567890123456789012345678901234567890123456789012345678901234567890 52800b99b8Sopenharmony_ciint MaxMethodNameTest12345678901234567890123456789012345678901234567890ABC(void); 53800b99b8Sopenharmony_ci 54800b99b8Sopenharmony_ciint TriggerSegmentFaultException(void); 55800b99b8Sopenharmony_ciint TriggerTrapException(void); 56800b99b8Sopenharmony_ci 57800b99b8Sopenharmony_ci// test functions for callstack depth test 58800b99b8Sopenharmony_ciint TestFunc0(void); 59800b99b8Sopenharmony_ciint TestFunc1(void); 60800b99b8Sopenharmony_ciint TestFunc2(void); 61800b99b8Sopenharmony_ciint TestFunc3(void); 62800b99b8Sopenharmony_ciint TestFunc4(void); 63800b99b8Sopenharmony_ciint TestFunc5(void); 64800b99b8Sopenharmony_ciint TestFunc6(void); 65800b99b8Sopenharmony_ciint TestFunc7(void); 66800b99b8Sopenharmony_ciint TestFunc8(void); 67800b99b8Sopenharmony_ciint TestFunc9(void); 68800b99b8Sopenharmony_ciint TestFunc10(void); 69800b99b8Sopenharmony_ciint TestFunc11(void); 70800b99b8Sopenharmony_ciint TestFunc12(void); 71800b99b8Sopenharmony_ciint TestFunc13(void); 72800b99b8Sopenharmony_ciint TestFunc14(void); 73800b99b8Sopenharmony_ciint TestFunc15(void); 74800b99b8Sopenharmony_ciint TestFunc16(void); 75800b99b8Sopenharmony_ciint TestFunc17(void); 76800b99b8Sopenharmony_ciint TestFunc18(void); 77800b99b8Sopenharmony_ciint TestFunc19(void); 78800b99b8Sopenharmony_ciint TestFunc20(void); 79800b99b8Sopenharmony_ciint TestFunc21(void); 80800b99b8Sopenharmony_ciint TestFunc22(void); 81800b99b8Sopenharmony_ciint TestFunc23(void); 82800b99b8Sopenharmony_ciint TestFunc24(void); 83800b99b8Sopenharmony_ciint TestFunc25(void); 84800b99b8Sopenharmony_ciint TestFunc26(void); 85800b99b8Sopenharmony_ciint TestFunc27(void); 86800b99b8Sopenharmony_ciint TestFunc28(void); 87800b99b8Sopenharmony_ciint TestFunc29(void); 88800b99b8Sopenharmony_ciint TestFunc30(void); 89800b99b8Sopenharmony_ciint TestFunc31(void); 90800b99b8Sopenharmony_ciint TestFunc32(void); 91800b99b8Sopenharmony_ciint TestFunc33(void); 92800b99b8Sopenharmony_ciint TestFunc34(void); 93800b99b8Sopenharmony_ciint TestFunc35(void); 94800b99b8Sopenharmony_ciint TestFunc36(void); 95800b99b8Sopenharmony_ciint TestFunc37(void); 96800b99b8Sopenharmony_ciint TestFunc38(void); 97800b99b8Sopenharmony_ciint TestFunc39(void); 98800b99b8Sopenharmony_ciint TestFunc40(void); 99800b99b8Sopenharmony_ciint TestFunc41(void); 100800b99b8Sopenharmony_ciint TestFunc42(void); 101800b99b8Sopenharmony_ciint TestFunc43(void); 102800b99b8Sopenharmony_ciint TestFunc44(void); 103800b99b8Sopenharmony_ciint TestFunc45(void); 104800b99b8Sopenharmony_ciint TestFunc46(void); 105800b99b8Sopenharmony_ciint TestFunc47(void); 106800b99b8Sopenharmony_ciint TestFunc48(void); 107800b99b8Sopenharmony_ciint TestFunc49(void); 108800b99b8Sopenharmony_ciint TestFunc50(void); 109800b99b8Sopenharmony_ciint TestFunc51(void); 110800b99b8Sopenharmony_ciint TestFunc52(void); 111800b99b8Sopenharmony_ciint TestFunc53(void); 112800b99b8Sopenharmony_ciint TestFunc54(void); 113800b99b8Sopenharmony_ciint TestFunc55(void); 114800b99b8Sopenharmony_ciint TestFunc56(void); 115800b99b8Sopenharmony_ciint TestFunc57(void); 116800b99b8Sopenharmony_ciint TestFunc58(void); 117800b99b8Sopenharmony_ciint TestFunc59(void); 118800b99b8Sopenharmony_ciint TestFunc60(void); 119800b99b8Sopenharmony_ciint TestFunc61(void); 120800b99b8Sopenharmony_ciint TestFunc62(void); 121800b99b8Sopenharmony_ciint TestFunc63(void); 122800b99b8Sopenharmony_ciint TestFunc64(void); 123800b99b8Sopenharmony_ciint TestFunc65(void); 124800b99b8Sopenharmony_ciint TestFunc66(void); 125800b99b8Sopenharmony_ciint TestFunc67(void); 126800b99b8Sopenharmony_ciint TestFunc68(void); 127800b99b8Sopenharmony_ciint TestFunc69(void); 128800b99b8Sopenharmony_ciint TestFunc70(void); 129800b99b8Sopenharmony_ci 130800b99b8Sopenharmony_ci#endif // DFX_CRASHER_H 131