• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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