• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
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  * Description: diag print log
15  */
16 
17 #ifndef SOC_DIAG_LOG_H
18 #define SOC_DIAG_LOG_H
19 
20 #include "soc_diag_wdk.h"
21 #include "diag_oam_log.h"
22 #include "log_def.h"
23 #include "log_module_id.h"
24 
25 #ifdef __cplusplus
26 #if __cplusplus
27 extern "C" {
28 #endif
29 #endif
30 
31 #define DIAG_LOG_LEVEL_ALERT    0
32 #define DIAG_LOG_LEVEL_FATAL    1
33 #define DIAG_LOG_LEVEL_ERROR    2
34 #define DIAG_LOG_LEVEL_WARN     3
35 #define DIAG_LOG_LEVEL_NOTICE   4
36 #define DIAG_LOG_LEVEL_INFO     5
37 #define DIAG_LOG_LEVEL_DBG      6
38 #define DIAG_LOG_LEVEL_TRACE    7
39 
40 #ifndef CORE_ID
41 #define CORE_ID 0
42 #endif
43 
44 #ifndef THIS_MOD_ID
45 #define THIS_MOD_ID 0
46 #endif
47 
48 #if defined(HAVE_PCLINT_CHECK)
49 #define check_default_id(id) (id)
50 #else
51 #define check_default_id(id) (((id) == 0) ? __LINE__ : (id))
52 #endif
53 
54 #define var_args_max_12(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, ...)     a12
55 #define var_args_cnt(unused, args...)   var_args_max_12(unused, ##args, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
56 
57 /** msg_id:
58  * |-------------------------------------------------------------------------------------------------------|
59  * |-H--------------------------------------------- 32 bit ----------------------------------------------L-|
60  * |  1 bit(31)  |    4 bits(30 ~ 27)  |    10 bits(26 ~ 17)    |      14 bits(16 ~ 3)      | 3 bits(2 ~ 0)|
61  * |  log_flg    |       mod_id        |        file_id         |          line No.         |    level     |
62  * |-------------------------------------------------------------------------------------------------------|
63  */
64 #define diag_log_msg_mk_id_e(id) (((uint32_t)(1UL << 31)) + (((uint32_t)(THIS_MOD_ID << 27)) & 0x78000000) \
65     + (((uint32_t)(THIS_FILE_ID << 17)) & 0x7fe0000) + ((((uint32_t)(check_default_id(id))) << 3) & 0x1fff8) \
66     + (DIAG_LOG_LEVEL_ERROR & 0x7))
67 
68 #define diag_log_msg_mk_id_w(id) (((uint32_t)(1UL << 31)) + (((uint32_t)(THIS_MOD_ID << 27)) & 0x78000000) \
69     + (((uint32_t)(THIS_FILE_ID << 17)) & 0x7fe0000) + ((((uint32_t)(check_default_id(id))) << 3) & 0x1fff8) \
70     + (DIAG_LOG_LEVEL_WARN & 0x7))
71 
72 #define diag_log_msg_mk_id_i(id) (((uint32_t)(1UL << 31)) + (((uint32_t)(THIS_MOD_ID << 27)) & 0x78000000) \
73     + (((uint32_t)(THIS_FILE_ID << 17)) & 0x7fe0000) + ((((uint32_t)(check_default_id(id))) << 3) & 0x1fff8) \
74     + (DIAG_LOG_LEVEL_INFO & 0x7))
75 
76 #define diag_log_msg_mk_id_d(id) (((uint32_t)(1UL << 31)) + (((uint32_t)(THIS_MOD_ID << 27)) & 0x78000000) \
77     + (((uint32_t)(THIS_FILE_ID << 17)) & 0x7fe0000) + ((((uint32_t)(check_default_id(id))) << 3) & 0x1fff8) \
78     + (DIAG_LOG_LEVEL_DBG & 0x7))
79 
80 #define check_default_mod_id(id) (((id) == 0) ? THIS_MOD_ID : (id))
81 #define diag_log_msg_mk_mod_id(src_mod) ((uint32_t)(((uint32_t)(check_default_mod_id(src_mod))) | \
82     ((uint32_t)(CORE_ID)) << 24))
83 
84 #if (defined(DIAG_PRINT_TO_SHELL))
85 #define diag_io_print(fmt, arg...) printf("[%s:%d] "fmt"\r\n", __func__, __LINE__, ##arg)
86 #else
87 #define diag_io_print(fmt, arg...)
88 #endif
89 
90 #ifndef DIAG_PRINT_TO_SHELL
91 #define uapi_diag_error_log0(id, fmt) \
92     oam_log_print0_press(diag_log_msg_mk_id_e(id))
93 #define uapi_diag_error_log1(id, fmt, p1) \
94     oam_log_print1_press(diag_log_msg_mk_id_e(id), p1)
95 #define uapi_diag_error_log2(id, fmt, p1, p2) \
96     oam_log_print2_press(diag_log_msg_mk_id_e(id), p1, p2)
97 #define uapi_diag_error_log3(id, fmt, p1, p2, p3) \
98     do { \
99         zdiag_log_msg3_t log_msg = {p1, p2, p3}; \
100         oam_log_print3_press(diag_log_msg_mk_id_e(id), &log_msg); \
101     } while (0)
102 #define uapi_diag_error_log4(id, fmt, p1, p2, p3, p4) \
103     do { \
104         zdiag_log_msg4_t log_msg = {p1, p2, p3, p4}; \
105         oam_log_print4_press(diag_log_msg_mk_id_e(id), &log_msg); \
106     } while (0)
107 #define uapi_diag_error_logx(id, fmt, args...) \
108     do { \
109         oam_log_print_alterable_press(diag_log_msg_mk_id_e(id), \
110             var_args_cnt(unused, ##args), ##args); \
111     } while (0)
112 #define uapi_diag_error_log_buff(id, log_info, data_size, fmt, type) \
113     oam_log_print_buff_press(diag_log_msg_mk_id_e(id), log_info, data_size)
114 
115 #define uapi_diag_warning_log0(id, fmt) \
116     oam_log_print0_press(diag_log_msg_mk_id_w(id))
117 #define uapi_diag_warning_log1(id, fmt, p1) \
118     oam_log_print1_press(diag_log_msg_mk_id_w(id), p1)
119 #define uapi_diag_warning_log2(id, fmt, p1, p2) \
120     oam_log_print2_press(diag_log_msg_mk_id_w(id), p1, p2)
121 #define uapi_diag_warning_log3(id, fmt, p1, p2, p3) \
122     do { \
123         zdiag_log_msg3_t log_msg = {p1, p2, p3}; \
124         oam_log_print3_press(diag_log_msg_mk_id_w(id), &log_msg); \
125     } while (0)
126 #define uapi_diag_warning_log4(id, fmt, p1, p2, p3, p4) \
127     do { \
128         zdiag_log_msg4_t log_msg = {p1, p2, p3, p4}; \
129         oam_log_print4_press(diag_log_msg_mk_id_w(id), &log_msg); \
130     } while (0)
131 #define uapi_diag_warning_logx(id, fmt, args...) \
132     do { \
133         oam_log_print_alterable_press(diag_log_msg_mk_id_w(id), \
134             var_args_cnt(unused, ##args), ##args); \
135     } while (0)
136 #define uapi_diag_warning_log_buff(id, log_info, data_size, fmt, type) \
137     oam_log_print_buff_press(diag_log_msg_mk_id_w(id), log_info, data_size)
138 
139 #define uapi_diag_info_log0(id, fmt)  \
140     oam_log_print0_press(diag_log_msg_mk_id_i(id))
141 #define uapi_diag_info_log1(id, fmt, p1)  \
142     oam_log_print1_press(diag_log_msg_mk_id_i(id), (uint32_t)(p1))
143 #define uapi_diag_info_log2(id, fmt, p1, p2)  \
144     oam_log_print2_press(diag_log_msg_mk_id_i(id), (uint32_t)(p1), (uint32_t)(p2))
145 #define uapi_diag_info_log3(id, fmt, p1, p2, p3)  \
146     do { \
147         zdiag_log_msg3_t log_msg = {(uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)}; \
148         oam_log_print3_press(diag_log_msg_mk_id_i(id), &log_msg); \
149     } while (0)
150 #define uapi_diag_info_log4(id, fmt, p1, p2, p3, p4) \
151     do { \
152         zdiag_log_msg4_t log_msg = {(uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)}; \
153         oam_log_print4_press(diag_log_msg_mk_id_i(id), &log_msg); \
154     } while (0)
155 #define uapi_diag_info_logx(id, fmt, args...) \
156     do { \
157         oam_log_print_alterable_press(diag_log_msg_mk_id_i(id), \
158             var_args_cnt(unused, ##args), ##args); \
159     } while (0)
160 #define uapi_diag_info_log_buff(id, log_info, data_size, fmt, type) \
161     oam_log_print_buff_press(diag_log_msg_mk_id_i(id), log_info, data_size)
162 
163 #define uapi_diag_debug_log0(id, fmt)  \
164     oam_log_print0_press(diag_log_msg_mk_id_d(id))
165 #define uapi_diag_debug_log1(id, fmt, p1)  \
166     oam_log_print1_press(diag_log_msg_mk_id_d(id), p1)
167 #define uapi_diag_debug_log2(id, fmt, p1, p2)  \
168     oam_log_print2_press(diag_log_msg_mk_id_d(id), p1, p2)
169 #define uapi_diag_debug_log3(id, fmt, p1, p2, p3)  \
170     do { \
171         zdiag_log_msg3_t log_msg = {p1, p2, p3}; \
172         oam_log_print3_press(diag_log_msg_mk_id_i(id), &log_msg); \
173     } while (0)
174 #define uapi_diag_debug_log4(id, fmt, p1, p2, p3, p4) \
175     do { \
176         zdiag_log_msg4_t log_msg = {p1, p2, p3, p4}; \
177         oam_log_print4_press(diag_log_msg_mk_id_d(id), &log_msg); \
178     } while (0)
179 #define uapi_diag_debug_logx(id, fmt, args...) \
180     do { \
181         oam_log_print_alterable_press(diag_log_msg_mk_id_d(id), \
182             var_args_cnt(unused, ##args), ##args); \
183     } while (0)
184 #define uapi_diag_debug_log_buff(id, log_info, data_size, fmt, type) \
185     oam_log_print_buff_press(diag_log_msg_mk_id_d(id), log_info, data_size)
186 
187 #else /* DIAG_PRINT */
188 
189 #define uapi_diag_error_log0(id, fmt) diag_io_print("[ERROR]"fmt"\r\n")
190 #define uapi_diag_error_log1(id, fmt, p1) diag_io_print("[ERROR]"fmt" %d\r\n", p1)
191 #define uapi_diag_error_log2(id, fmt, p1, p2) diag_io_print("[ERROR]"fmt" %d  %d\r\n", p1, p2)
192 #define uapi_diag_error_log3(id, fmt, p1, p2, p3) diag_io_print("[ERROR]"fmt" %d %d %d\r\n", p1, p2, p3)
193 #define uapi_diag_error_log4(id, fmt, p1, p2, p3, p4) diag_io_print("[ERROR]"fmt" %d %d %d %d\r\n", p1, p2, p3, p4)
194 #define uapi_diag_error_logx(id, fmt, args...) diag_io_print(fmt, ##args)
195 #define uapi_diag_error_log_buff(id, log_info, data_size, fmt, type)
196 
197 #define uapi_diag_warning_log0(id, fmt) diag_io_print("[WARNING]"fmt"\r\n")
198 #define uapi_diag_warning_log1(id, fmt, p1) diag_io_print("[WARNING]"fmt" %d\r\n", p1)
199 #define uapi_diag_warning_log2(id, fmt, p1, p2) diag_io_print("[WARNING]"fmt" %d %d\r\n", p1, p2)
200 #define uapi_diag_warning_log3(id, fmt, p1, p2, p3) diag_io_print("[WARNING]"fmt" %d %d %d\r\n", p1, p2, p3)
201 #define uapi_diag_warning_log4(id, fmt, p1, p2, p3, p4) diag_io_print("[WARNING]"fmt" %d %d %d %d\r\n", p1, p2, p3, p4)
202 #define uapi_diag_warning_logx(id, fmt, args...) diag_io_print(fmt, ##args)
203 #define uapi_diag_warning_log_buff(id, log_info, data_size, fmt, type)
204 
205 #define uapi_diag_info_log0(id, fmt) diag_io_print("[INFO]"fmt"\r\n")
206 #define uapi_diag_info_log1(id, fmt, p1) diag_io_print("[INFO]"fmt" %d\r\n", p1)
207 #define uapi_diag_info_log2(id, fmt, p1, p2) diag_io_print("[INFO]"fmt" %d %d\r\n", p1, p2)
208 #define uapi_diag_info_log3(id, fmt, p1, p2, p3) diag_io_print("[INFO]"fmt" %d %d %d\r\n", p1, p2, p3)
209 #define uapi_diag_info_log4(id, fmt, p1, p2, p3, p4) diag_io_print("[INFO]"fmt" %d %d %d %d\r\n", p1, p2, p3, p4)
210 #define uapi_diag_info_logx(id, fmt, args...) diag_io_print(fmt, ##args)
211 #define uapi_diag_info_log_buff(id, log_info, data_size, fmt, type)
212 
213 #define uapi_diag_debug_log0(id, fmt) diag_io_print("[INFO]"fmt"\r\n")
214 #define uapi_diag_debug_log1(id, fmt, p1) diag_io_print("[INFO]"fmt" %d\r\n", p1)
215 #define uapi_diag_debug_log2(id, fmt, p1, p2) diag_io_print("[INFO]"fmt" %d %d\r\n", p1, p2)
216 #define uapi_diag_debug_log3(id, fmt, p1, p2, p3) diag_io_print("[INFO]"fmt" %d %d %d\r\n", p1, p2, p3)
217 #define uapi_diag_debug_log4(id, fmt, p1, p2, p3, p4) diag_io_print("[INFO]"fmt" %d %d %d %d\r\n", p1, p2, p3, p4)
218 #define uapi_diag_debug_logx(id, fmt, args...) diag_io_print(fmt, ##args)
219 #define uapi_diag_debug_log_buff(id, log_info, data_size, fmt, type)
220 
221 #endif /* end DIAG_PRINT */
222 
223 #ifdef __cplusplus
224 #if __cplusplus
225     }
226 #endif
227 #endif
228 
229 #endif /* SOC_DIAG_LOG_H */
230