1 /* 2 * Copyright (C) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef SYS_EVENT_H 16 #define SYS_EVENT_H 17 #include <string> 18 #include <unordered_map> 19 20 #include "hisysevent.h" 21 22 namespace OHOS { 23 namespace Request { 24 //event 25 constexpr const char *STATISTIC_EVENT = "EXEC_ERROR"; 26 constexpr const char *FAULT_EVENT = "EXEC_FAULT"; 27 28 enum DfxErrorCode : uint32_t { 29 APP_ERROR_00 = 0x00000000, 30 APP_ERROR_01 = 0x00000001, 31 APP_ERROR_02 = 0x00000002, 32 INVALID_IPC_MESSAGE_A00 = 0x001FFFFF, 33 INVALID_IPC_MESSAGE_A01 = 0x001F0000, 34 INVALID_IPC_MESSAGE_A02 = 0x001F0001, 35 INVALID_IPC_MESSAGE_A03 = 0x001F0100, 36 INVALID_IPC_MESSAGE_A04 = 0x001F0101, 37 INVALID_IPC_MESSAGE_A05 = 0x001F0200, 38 INVALID_IPC_MESSAGE_A06 = 0x001F0201, 39 INVALID_IPC_MESSAGE_A07 = 0x001F0300, 40 INVALID_IPC_MESSAGE_A08 = 0x001F0301, 41 INVALID_IPC_MESSAGE_A09 = 0x001F0400, 42 INVALID_IPC_MESSAGE_A10 = 0x001F0401, 43 INVALID_IPC_MESSAGE_A11 = 0x001F0500, 44 INVALID_IPC_MESSAGE_A12 = 0x001F0501, 45 INVALID_IPC_MESSAGE_A13 = 0x001F0600, 46 INVALID_IPC_MESSAGE_A14 = 0x001F0601, 47 INVALID_IPC_MESSAGE_A15 = 0x001F0700, 48 INVALID_IPC_MESSAGE_A16 = 0x001F0701, 49 INVALID_IPC_MESSAGE_A17 = 0x001F0800, 50 INVALID_IPC_MESSAGE_A18 = 0x001F0801, 51 INVALID_IPC_MESSAGE_A19 = 0x001F0900, 52 INVALID_IPC_MESSAGE_A20 = 0x001F0901, 53 INVALID_IPC_MESSAGE_A21 = 0x001F0A00, 54 INVALID_IPC_MESSAGE_A22 = 0x001F0A01, 55 INVALID_IPC_MESSAGE_A23 = 0x001F0B00, 56 INVALID_IPC_MESSAGE_A24 = 0x001F0B01, 57 INVALID_IPC_MESSAGE_A25 = 0x001F0C00, 58 INVALID_IPC_MESSAGE_A26 = 0x001F0C01, 59 INVALID_IPC_MESSAGE_A27 = 0x001F0D00, 60 INVALID_IPC_MESSAGE_A28 = 0x001F0D01, 61 INVALID_IPC_MESSAGE_A29 = 0x001F0E00, 62 INVALID_IPC_MESSAGE_A30 = 0x001F0E01, 63 INVALID_IPC_MESSAGE_A31 = 0x001F0F00, 64 INVALID_IPC_MESSAGE_A32 = 0x001F0F01, 65 INVALID_IPC_MESSAGE_A33 = 0x001F1000, 66 INVALID_IPC_MESSAGE_A34 = 0x001F1001, 67 INVALID_IPC_MESSAGE_A35 = 0x001F1100, 68 INVALID_IPC_MESSAGE_A36 = 0x001F1101, 69 INVALID_IPC_MESSAGE_A37 = 0x001F1200, 70 INVALID_IPC_MESSAGE_A38 = 0x001F1201, 71 INVALID_IPC_MESSAGE_A39 = 0x001F1300, 72 INVALID_IPC_MESSAGE_A40 = 0x001F1301, 73 INVALID_IPC_MESSAGE_A41 = 0x001F1400, 74 INVALID_IPC_MESSAGE_A42 = 0x001F1401, 75 INVALID_IPC_MESSAGE_A43 = 0x001F1500, 76 INVALID_IPC_MESSAGE_A44 = 0x001F1501, 77 INVALID_IPC_MESSAGE_A45 = 0x001F1600, 78 INVALID_IPC_MESSAGE_A46 = 0x001F1601, 79 INVALID_IPC_MESSAGE_00 = 0x00100000, 80 INVALID_IPC_MESSAGE_01 = 0x00100100, 81 INVALID_IPC_MESSAGE_02 = 0x00100200, 82 INVALID_IPC_MESSAGE_03 = 0x00100300, 83 INVALID_IPC_MESSAGE_04 = 0x00100400, 84 INVALID_IPC_MESSAGE_05 = 0x00100500, 85 INVALID_IPC_MESSAGE_06 = 0x00100600, 86 INVALID_IPC_MESSAGE_07 = 0x00100700, 87 INVALID_IPC_MESSAGE_08 = 0x00100800, 88 INVALID_IPC_MESSAGE_09 = 0x00100900, 89 INVALID_IPC_MESSAGE_10 = 0x00100A00, 90 INVALID_IPC_MESSAGE_11 = 0x00100B00, 91 INVALID_IPC_MESSAGE_12 = 0x00100C00, 92 INVALID_IPC_MESSAGE_13 = 0x00100D00, 93 INVALID_IPC_MESSAGE_14 = 0x00100E00, 94 INVALID_IPC_MESSAGE_15 = 0x00100F00, 95 INVALID_IPC_MESSAGE_16 = 0x00101000, 96 INVALID_IPC_MESSAGE_17 = 0x00101100, 97 INVALID_IPC_MESSAGE_18 = 0x00101200, 98 INVALID_IPC_MESSAGE_19 = 0x00101300, 99 INVALID_IPC_MESSAGE_20 = 0x00101400, 100 INVALID_IPC_MESSAGE_21 = 0x00101500, 101 INVALID_IPC_MESSAGE_22 = 0x00101600, 102 TASK_FAULT_00 = 0x002F00FF, 103 TASK_FAULT_01 = 0x002F01FF, 104 TASK_FAULT_02 = 0x002F02FF, 105 TASK_FAULT_03 = 0x002F03FF, 106 TASK_FAULT_04 = 0x002F04FF, 107 TASK_FAULT_05 = 0x002F05FF, 108 TASK_FAULT_06 = 0x002F06FF, 109 TASK_FAULT_07 = 0x002F07FF, 110 TASK_FAULT_08 = 0x002F08FF, 111 TASK_FAULT_09 = 0x002FFFFF, 112 UDS_FAULT_00 = 0x00300000, 113 UDS_FAULT_01 = 0x00300001, 114 UDS_FAULT_02 = 0x00300002, 115 UDS_FAULT_03 = 0x003F0000, 116 UDS_FAULT_04 = 0x003F0001, 117 SA_ERROR_00 = 0x004F0000, 118 SA_ERROR_01 = 0x004F0001, 119 SA_ERROR_02 = 0x004F0002, 120 SA_FAULT_00 = 0x005F0000, 121 SA_FAULT_01 = 0x005F0001, 122 ACL_FAULT_00 = 0xF0000000, 123 IPC_FAULT_00 = 0xF0100000, 124 IPC_FAULT_01 = 0xF0100001, 125 SAMGR_FAULT_00 = 0xF0200000, 126 SAMGR_FAULT_01 = 0xF0200001, 127 SAMGR_FAULT_02 = 0xF0200002, 128 SAMGR_FAULT_03 = 0xF0200003, 129 SAMGR_FAULT_04 = 0xF0200004, 130 SAMGR_FAULT_A00 = 0xF02F0000, 131 SAMGR_FAULT_A01 = 0xF02F0001, 132 SAMGR_FAULT_A02 = 0xF02F0002, 133 ABMS_FAULT_00 = 0xF0300000, 134 ABMS_FAULT_01 = 0xF0300001, 135 ABMS_FAULT_02 = 0xF0300002, 136 ABMS_FAULT_03 = 0xF0300003, 137 ABMS_FAULT_04 = 0xF0300004, 138 ABMS_FAULT_05 = 0xF0300005, 139 ABMS_FAULT_06 = 0xF0300006, 140 ABMS_FAULT_07 = 0xF0300007, 141 ABMS_FAULT_08 = 0xF0300008, 142 ABMS_FAULT_09 = 0xF0300009, 143 ABMS_FAULT_10 = 0xF030000A, 144 ABMS_FAULT_11 = 0xF030000B, 145 ABMS_FAULT_A00 = 0xF03F0000, 146 ABMS_FAULT_A01 = 0xF03F0001, 147 BMS_FAULT_00 = 0xF04F0000, 148 OS_ACCOUNT_FAULT_00 = 0xF05F0000, 149 OS_ACCOUNT_FAULT_01 = 0xF05F0001, 150 OS_ACCOUNT_FAULT_02 = 0xF05F0002, 151 RDB_FAULT_00 = 0xF06F0000, 152 RDB_FAULT_01 = 0xF06F0001, 153 RDB_FAULT_02 = 0xF06F0002, 154 RDB_FAULT_03 = 0xF06F0003, 155 RDB_FAULT_04 = 0xF06F0004, 156 RDB_FAULT_05 = 0xF06F0005, 157 RDB_FAULT_06 = 0xF06F0006, 158 RDB_FAULT_07 = 0xF06F0007, 159 RDB_FAULT_08 = 0xF06F0008, 160 RDB_FAULT_09 = 0xF06F0009, 161 RDB_FAULT_10 = 0xF06F000A, 162 RDB_FAULT_11 = 0xF06F000B, 163 RDB_FAULT_12 = 0xF06F000C, 164 RDB_FAULT_13 = 0xF06FFFFF, 165 EVENT_FAULT_00 = 0xF07F0000, 166 EVENT_FAULT_01 = 0xF07F0001, 167 EVENT_FAULT_02 = 0xF07F0002, 168 NET_CONN_CLIENT_FAULT_00 = 0xF08F0000, 169 NET_CONN_CLIENT_FAULT_01 = 0xF08F0001, 170 NET_CONN_CLIENT_FAULT_02 = 0xF08F0002, 171 NET_CONN_CLIENT_FAULT_03 = 0xF08F0003, 172 TELEPHONY_FAULT_00 = 0xF09F0000, 173 TELEPHONY_FAULT_01 = 0xF09F0001, 174 SYSTEM_RESOURCE_FAULT_00 = 0xF0AF0000, 175 SYSTEM_RESOURCE_FAULT_01 = 0xF0AF0001, 176 SYSTEM_RESOURCE_FAULT_02 = 0xF0AF0002, 177 MEDIA_FAULT_00 = 0xF0BF0000, 178 MEDIA_FAULT_01 = 0xF0BF0001, 179 NOTIFICATION_FAULT_00 = 0xF0CF0000, 180 CERT_MANAGER_FAULT_00 = 0xF0DF0000, 181 CERT_MANAGER_FAULT_01 = 0xF0DF0001, 182 ACCESS_TOKEN_FAULT_00 = 0xF0EF0000, 183 ACCESS_TOKEN_FAULT_01 = 0xF0EF0001, 184 ACCESS_TOKEN_FAULT_02 = 0xF0EF0002, 185 URL_POLICY_FAULT_00 = 0xF0FF0000, 186 STANDARD_FAULT_00 = 0xF1000000, 187 STANDARD_FAULT_01 = 0xF1000001, 188 STANDARD_FAULT_02 = 0xF1000002, 189 STANDARD_FAULT_03 = 0xF1000003, 190 STANDARD_FAULT_04 = 0xF1000004, 191 STANDARD_FAULT_05 = 0xF1000005, 192 STANDARD_FAULT_06 = 0xF1000006, 193 STANDARD_FAULT_A01 = 0xF10F0000, 194 }; 195 196 struct SysEventInfo { 197 uint32_t dCode; 198 std::string bundleName; 199 std::string moduleName; 200 std::string extraInfo; 201 }; 202 203 class SysEventLog { 204 public: 205 static void SendSysEventLog(const std::string &eventName, const uint32_t dCode, const std::string bundleName, 206 const std::string moduleName, const std::string extraInfo); 207 static void SendSysEventLog(const std::string &eventName, const uint32_t dCode, const std::string extraInfo); 208 static void SendSysEventLog( 209 const std::string &eventName, const uint32_t dCode, const int32_t one, const int32_t two); 210 211 private: 212 static std::unordered_map<std::string, void (*)(const SysEventInfo &info)> sysEventMap_; 213 214 static void SendStatisticEvent(const SysEventInfo &info); 215 static void SendFaultEvent(const SysEventInfo &info); 216 217 template<typename... Types> 218 static int32_t HisysWrite(const std::string &eventName, HiviewDFX::HiSysEvent::EventType type, Types... keyValues); 219 }; 220 221 } // namespace Request 222 } // namespace OHOS 223 224 #endif