1800b99b8Sopenharmony_ci/* 2800b99b8Sopenharmony_ci * Copyright (c) 2024 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 CRASH_EXCEPTION_H 17800b99b8Sopenharmony_ci#define CRASH_EXCEPTION_H 18800b99b8Sopenharmony_ci 19800b99b8Sopenharmony_ci#include <cinttypes> 20800b99b8Sopenharmony_ci#include <string> 21800b99b8Sopenharmony_ci#include "dfx_exception.h" 22800b99b8Sopenharmony_ci 23800b99b8Sopenharmony_cinamespace OHOS { 24800b99b8Sopenharmony_cinamespace HiviewDFX { 25800b99b8Sopenharmony_ci 26800b99b8Sopenharmony_ci/** 27800b99b8Sopenharmony_ci * @brief fault log file check keyword info 28800b99b8Sopenharmony_ci*/ 29800b99b8Sopenharmony_cistruct LogValidCheckInfo { 30800b99b8Sopenharmony_ci /** key words for check */ 31800b99b8Sopenharmony_ci std::string key; 32800b99b8Sopenharmony_ci /** regex rule */ 33800b99b8Sopenharmony_ci std::string regx; 34800b99b8Sopenharmony_ci /** offset of the key words in file */ 35800b99b8Sopenharmony_ci std::string::size_type start; 36800b99b8Sopenharmony_ci /** error code when file invalid */ 37800b99b8Sopenharmony_ci int32_t errCode; 38800b99b8Sopenharmony_ci}; 39800b99b8Sopenharmony_ci 40800b99b8Sopenharmony_ci/** 41800b99b8Sopenharmony_ci * @brief get current time 42800b99b8Sopenharmony_ci*/ 43800b99b8Sopenharmony_ciuint64_t GetTimeMillisec(void); 44800b99b8Sopenharmony_ci 45800b99b8Sopenharmony_ci/** 46800b99b8Sopenharmony_ci * @brief save crashed process info 47800b99b8Sopenharmony_ci*/ 48800b99b8Sopenharmony_civoid SetCrashProcInfo(std::string& name, int32_t pid, int32_t uid); 49800b99b8Sopenharmony_ci 50800b99b8Sopenharmony_ci/** 51800b99b8Sopenharmony_ci * @brief report crash to sysevent 52800b99b8Sopenharmony_ci*/ 53800b99b8Sopenharmony_civoid ReportCrashException(const char* pName, int32_t pid, int32_t uid, int32_t errCode); 54800b99b8Sopenharmony_ci 55800b99b8Sopenharmony_ci/** 56800b99b8Sopenharmony_ci * @brief report crash to sysevent 57800b99b8Sopenharmony_ci*/ 58800b99b8Sopenharmony_civoid ReportCrashException(std::string name, int32_t pid, int32_t uid, int32_t errCode); 59800b99b8Sopenharmony_ci 60800b99b8Sopenharmony_ci/** 61800b99b8Sopenharmony_ci * @brief report crash unwinder error to sysevent 62800b99b8Sopenharmony_ci*/ 63800b99b8Sopenharmony_civoid ReportUnwinderException(uint16_t unwError); 64800b99b8Sopenharmony_ci 65800b99b8Sopenharmony_ci/** 66800b99b8Sopenharmony_ci * @brief Check summary valid,The valid is if the string contains stack information for the first three frames 67800b99b8Sopenharmony_ci * 68800b99b8Sopenharmony_ci * @param summary Stack information in the fault info 69800b99b8Sopenharmony_ci * @return if check valid return true, otherwise return false 70800b99b8Sopenharmony_ci*/ 71800b99b8Sopenharmony_cibool CheckFaultSummaryValid(const std::string &summary); 72800b99b8Sopenharmony_ci} 73800b99b8Sopenharmony_ci} 74800b99b8Sopenharmony_ci#endif