1 /* 2 * Copyright (c) 2022 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 16 #ifndef POWER_LOG_H 17 #define POWER_LOG_H 18 19 #define CONFIG_HILOG 20 #ifdef CONFIG_HILOG 21 22 #include <stdint.h> 23 24 #include "hilog/log.h" 25 26 namespace OHOS { 27 namespace PowerMgr { 28 29 #ifdef POWER_HILOGF 30 #undef POWER_HILOGF 31 #endif 32 33 #ifdef POWER_HILOGE 34 #undef POWER_HILOGE 35 #endif 36 37 #ifdef POWER_HILOGW 38 #undef POWER_HILOGW 39 #endif 40 41 #ifdef POWER_HILOGI 42 #undef POWER_HILOGI 43 #endif 44 45 #ifdef POWER_HILOGD 46 #undef POWER_HILOGD 47 #endif 48 49 #ifdef POWER_KHILOGF 50 #undef POWER_KHILOGF 51 #endif 52 53 #ifdef POWER_KHILOGE 54 #undef POWER_KHILOGE 55 #endif 56 57 #ifdef POWER_KHILOGW 58 #undef POWER_KHILOGW 59 #endif 60 61 #ifdef POWER_KHILOGI 62 #undef POWER_KHILOGI 63 #endif 64 65 #ifdef POWER_KHILOGD 66 #undef POWER_KHILOGD 67 #endif 68 69 namespace { 70 // Power manager reserved domain id range 71 constexpr unsigned int POWER_DOMAIN_ID_START = 0xD002900; 72 constexpr unsigned int POWER_DOMAIN_ID_END = POWER_DOMAIN_ID_START + 32; 73 constexpr unsigned int TEST_DOMAIN_ID = 0xD000F00; 74 } 75 76 enum PowerManagerLogLabel { 77 // Component labels, you can add if needed 78 COMP_LOCK = 0, 79 COMP_FWK = 1, 80 COMP_SVC = 2, 81 COMP_HDI = 3, 82 COMP_DRV = 4, 83 COMP_UTILS = 5, 84 // Feature labels, use to mark major features 85 FEATURE_WAKEUP, 86 #ifdef POWER_MANAGER_WAKEUP_ACTION 87 FEATURE_WAKEUP_ACTION, 88 #endif 89 FEATURE_SUSPEND, 90 FEATURE_RUNNING_LOCK, 91 FEATURE_ACTIVITY, 92 FEATURE_POWER_STATE, 93 FEATURE_SCREEN_OFF_PRE, 94 FEATURE_POWER_MODE, 95 FEATURE_SHUTDOWN, 96 FEATURE_INPUT, 97 FEATURE_UTIL, 98 // Test label 99 LABEL_TEST, 100 // The end of labels, max to the domain id range length 32 101 LABEL_END, 102 }; 103 104 enum PowerManagerLogDomain { 105 DOMAIN_LOCK = POWER_DOMAIN_ID_START + COMP_LOCK, // 0xD002900 106 DOMAIN_FRAMEWORK, // 0xD002901 107 DOMAIN_SERVICE, // 0xD002902 108 DOMAIN_HDI, // 0xD002903 109 DOMAIN_DRIVER, // 0xD002904 110 DOMAIN_UTILS, // 0xD002905 111 DOMAIN_FEATURE_WAKEUP, 112 #ifdef POWER_MANAGER_WAKEUP_ACTION 113 DOMAIN_FEATURE_WAKEUP_ACTION, 114 #endif 115 DOMAIN_FEATURE_SUSPEND, 116 DOMAIN_FEATURE_RUNNING_LOCK, 117 DOMAIN_FEATURE_ACTIVITY, 118 DOMAIN_FEATURE_POWER_STATE, 119 DOMAIN_FEATURE_SCREEN_OFF_PRE, 120 DOMAIN_FEATURE_POWER_MODE, 121 DOMAIN_FEATURE_SHUTDOWN, 122 DOMAIN_FEATURE_INPUT, 123 DOMAIN_FEATURE_UTIL, 124 DOMAIN_TEST = TEST_DOMAIN_ID, // 0xD000F00 125 DOMAIN_END = POWER_DOMAIN_ID_END, // Max to 0xD002920, keep the sequence and length same as PowerManagerLogLabel 126 }; 127 128 struct PowerManagerLogLabelDomain { 129 unsigned int domainId; 130 const char* tag; 131 }; 132 133 // Keep the sequence and length same as PowerManagerLogDomain 134 static const PowerManagerLogLabelDomain POWER_LABEL[LABEL_END] = { 135 {DOMAIN_LOCK, "PowerLock"}, 136 {DOMAIN_FRAMEWORK, "PowerFwk"}, 137 {DOMAIN_SERVICE, "PowerSvc"}, 138 {DOMAIN_HDI, "PowerHdi"}, 139 {DOMAIN_DRIVER, "PowerDrv"}, 140 {DOMAIN_UTILS, "PowerUtils"}, 141 {DOMAIN_FEATURE_WAKEUP, "PowerWakeup"}, 142 #ifdef POWER_MANAGER_WAKEUP_ACTION 143 {DOMAIN_FEATURE_WAKEUP_ACTION, "PowerWakeupAction"}, 144 #endif 145 {DOMAIN_FEATURE_SUSPEND, "PowerSuspend"}, 146 {DOMAIN_FEATURE_RUNNING_LOCK, "PowerRunningLock"}, 147 {DOMAIN_FEATURE_ACTIVITY, "PowerActivity"}, 148 {DOMAIN_FEATURE_POWER_STATE, "PowerState"}, 149 {DOMAIN_FEATURE_SCREEN_OFF_PRE, "PowerScreenOffPre"}, 150 {DOMAIN_FEATURE_POWER_MODE, "PowerMode"}, 151 {DOMAIN_FEATURE_SHUTDOWN, "PowerShutdown"}, 152 {DOMAIN_FEATURE_INPUT, "PowerInput"}, 153 {DOMAIN_FEATURE_UTIL, "PowerUtil"}, 154 {DOMAIN_TEST, "PowerTest"}, 155 }; 156 157 #define POWER_HILOGF(domain, ...) \ 158 ((void)HILOG_IMPL(LOG_CORE, LOG_FATAL, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__)) 159 #define POWER_HILOGE(domain, ...) \ 160 ((void)HILOG_IMPL(LOG_CORE, LOG_ERROR, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__)) 161 #define POWER_HILOGW(domain, ...) \ 162 ((void)HILOG_IMPL(LOG_CORE, LOG_WARN, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__)) 163 #define POWER_HILOGI(domain, ...) \ 164 ((void)HILOG_IMPL(LOG_CORE, LOG_INFO, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__)) 165 #define POWER_HILOGD(domain, ...) \ 166 ((void)HILOG_IMPL(LOG_CORE, LOG_DEBUG, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__)) 167 168 constexpr OHOS::HiviewDFX::HiLogLabel POWER_KERNEL_LABEL = { 169 LOG_KMSG, 170 DOMAIN_SERVICE, 171 "POWER" 172 }; 173 174 #define POWER_KHILOGF(domain, ...) \ 175 do { \ 176 (void)OHOS::HiviewDFX::HiLog::Fatal(POWER_KERNEL_LABEL, __VA_ARGS__); \ 177 ((void)HILOG_IMPL(LOG_CORE, LOG_FATAL, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__)); \ 178 } while (0) 179 180 #define POWER_KHILOGE(domain, ...) \ 181 do { \ 182 (void)OHOS::HiviewDFX::HiLog::Error(POWER_KERNEL_LABEL, __VA_ARGS__); \ 183 ((void)HILOG_IMPL(LOG_CORE, LOG_ERROR, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__)); \ 184 } while (0) 185 186 #define POWER_KHILOGW(domain, ...) \ 187 do { \ 188 (void)OHOS::HiviewDFX::HiLog::Warn(POWER_KERNEL_LABEL, __VA_ARGS__); \ 189 ((void)HILOG_IMPL(LOG_CORE, LOG_WARN, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__)); \ 190 } while (0) 191 192 #define POWER_KHILOGI(domain, ...) \ 193 do { \ 194 (void)OHOS::HiviewDFX::HiLog::Info(POWER_KERNEL_LABEL, __VA_ARGS__); \ 195 ((void)HILOG_IMPL(LOG_CORE, LOG_INFO, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__)); \ 196 } while (0) 197 198 #define POWER_KHILOGD(domain, ...) \ 199 do { \ 200 (void)OHOS::HiviewDFX::HiLog::Debug(POWER_KERNEL_LABEL, __VA_ARGS__); \ 201 ((void)HILOG_IMPL(LOG_CORE, LOG_DEBUG, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__)); \ 202 } while (0) 203 204 } // namespace PowerMgr 205 } // namespace OHOS 206 207 #else 208 209 #define POWER_HILOGF(...) 210 #define POWER_HILOGE(...) 211 #define POWER_HILOGW(...) 212 #define POWER_HILOGI(...) 213 #define POWER_HILOGD(...) 214 215 #define POWER_KHILOGF(...) 216 #define POWER_KHILOGE(...) 217 #define POWER_KHILOGW(...) 218 #define POWER_KHILOGI(...) 219 #define POWER_KHILOGD(...) 220 221 #endif // CONFIG_HILOG 222 223 #endif // POWER_LOG_H 224