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