init_time_analyzer.h (17989B)
1 /** \file init_time_analyzer.h 2 * 3 * Define the modules running time to be analyzed in order to get better decisions when working on time optimization. 4 */ 5 /* 6 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 7 * 8 * Copyright 2007-2020 Broadcom Inc. All rights reserved. 9 */ 10 11 #ifndef DNX_INIT_TIME_ANALYZER_H_INCLUDED 12 #define DNX_INIT_TIME_ANALYZER_H_INCLUDED 13 /* 14 * Include files. 15 * { 16 */ 17 #include <shared/shrextend/shrextend_debug.h> 18 #include <sal/core/time.h> 19 #include <shared/utilex/utilex_time_analyzer.h> 20 21 /* 22 * } 23 */ 24 /* 25 * MACROs 26 * { 27 */ 28 /* 29 * Time Measurement Tool 30 * ===================== 31 * *Allows measuring the amount of time spent in each code section 32 * *Allows to count the times we run a specific code section 33 * *Currently tracking few basic operations such as: (1) sw state (2) dnx data (3) dbal (4) resource manager 34 * *The time measurements can be done per init step, per any two points in the code (using debugger or BCM shell) 35 * 36 * Enable 37 * ======= 38 * go to "include/bcm_int/dnx/init/init_time_analyzer.h" 39 * Modify macro "DNX_INIT_TIME_ANALYZER_*_EN" to 1 according to the procedures you want to measure 40 * Recompile 41 * Set soc property to "custom_feature_time_analyze=PER_STEP" to statistics per step or "custom_feature_time_analyze=GLOBAL" for shared statistics for all steps. 42 * Run bcm.user 43 * 44 * Add a New Code Section to Track 45 * =============================== 46 * 1) In "include/bcm_int/dnx/init/init_time_analyzer.h", add new member to enum "dnx_init_time_analyzer_module_e" 47 * 2) Create Enable flag DNX_INIT_TIME_ANALYZER_<module>_EN or use one of the existing ones 48 * 3) If new flag created, create also start and stop macros as follow 49 * " 50 #if DNX_INIT_TIME_ANALYZER_DBAL_EN 51 #define DNX_INIT_TIME_ANALYZER_<module>_START(unit, module_id) utilex_time_analyzer_module_start(unit, module_id) 52 #define DNX_INIT_TIME_ANALYZER_<module>_STOP(unit, module_id) utilex_time_analyzer_module_stop(unit, module_id) 53 #else 54 #define DNX_INIT_TIME_ANALYZER_<module>_START(unit, module_id) 55 #define DNX_INIT_TIME_ANALYZER_<module>_STOP(unit, module_id) 56 #endif 57 * " 58 * 4) Add new entry in DNX_INIT_TIME_ANALYZER_OPS_INIT 59 * 5) Wrap your code section (more than one section is also supported) with: 60 * DNX_INIT_TIME_ANALYZER_<module>_START(unit, <new enum member>) 61 * DNX_INIT_TIME_ANALYZER_<module>_STOP(unit, <new enum member>) 62 * 63 * Display Results 64 * =============== 65 * BCM Shell > "ta dump" 66 * GDB > "p sh_process_command(0, "ta dump") 67 * Restart Measurement 68 * BCM Shell > "ta clear" 69 * GDB > "p sh_process_command(0, "ta clear") 70 * Example Output: 71 * ============================================================================ 72 | Time Analyzer | 73 ============================================================================ 74 | Name | Total Time | Occurrences | Avg Time | 75 ============================================================================ 76 | DBAL_SET | 3 [milliseconds] | 16 | 193 [microseconds] | 77 | DBAL_GET | 128 [milliseconds] | 2311 | 55 [microseconds] | 78 | DBAL_REST | 32 [milliseconds] | 9887 | 3 [microseconds] | 79 | ALGO_PORT_BITMAP | 0 [milliseconds] | 0 | 0 [microseconds] | 80 | SLEEP | 0 [milliseconds] | 0 | 0 [microseconds] | 81 | DNX_DATA | 18 [milliseconds] | 23238 | 0 [microseconds] | 82 | SW_STATE | 0 [milliseconds] | 0 | 0 [microseconds] | 83 ============================================================================ 84 */ 85 /** 86 * \brief - set to 1 to enable. disabled by a compilation to optimize running time 87 */ 88 #define DNX_INIT_TIME_ANALYZER_DBAL_EN 0 89 #define DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN 0 90 #define DNX_INIT_TIME_ANALYZER_DNX_DATA_EN 0 91 #define DNX_INIT_TIME_ANALYZER_SW_STATE_EN 0 92 #define DNX_INIT_TIME_ANALYZER_RES_MNGR_EN 0 93 #define DNX_INIT_TIME_ANALYZER_ACCESS_EN 0 94 #define DNX_INIT_TIME_ANALYZER_ALGO_PORT_EN 0 95 #define DNX_ERROR_RECOVERY_TIME_DIAGNOSTICS 0 96 97 /* 98 * regular init time analyzer diagnostics are disabled when error recovery diagnostics are enabled 99 */ 100 /** DBAL */ 101 #if DNX_INIT_TIME_ANALYZER_DBAL_EN 102 #define DNX_INIT_TIME_ANALYZER_DBAL_START(unit, module_id) utilex_time_analyzer_module_start(unit, module_id) 103 #define DNX_INIT_TIME_ANALYZER_DBAL_STOP(unit, module_id) utilex_time_analyzer_module_stop(unit, module_id) 104 #else 105 #define DNX_INIT_TIME_ANALYZER_DBAL_START(unit, module_id) 106 #define DNX_INIT_TIME_ANALYZER_DBAL_STOP(unit, module_id) 107 #endif 108 /** DBAL INIT */ 109 #if DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN 110 #define DNX_INIT_TIME_ANALYZER_DBAL_INIT_START(unit, module_id) utilex_time_analyzer_module_start(unit, module_id) 111 #define DNX_INIT_TIME_ANALYZER_DBAL_INIT_STOP(unit, module_id) utilex_time_analyzer_module_stop(unit, module_id) 112 #else 113 #define DNX_INIT_TIME_ANALYZER_DBAL_INIT_START(unit, module_id) 114 #define DNX_INIT_TIME_ANALYZER_DBAL_INIT_STOP(unit, module_id) 115 #endif 116 /** DNX DATA */ 117 #if DNX_INIT_TIME_ANALYZER_DNX_DATA_EN 118 #define DNX_INIT_TIME_ANALYZER_DNX_DATA_START(unit, module_id) utilex_time_analyzer_module_start(unit, module_id) 119 #define DNX_INIT_TIME_ANALYZER_DNX_DATA_STOP(unit, module_id) utilex_time_analyzer_module_stop(unit, module_id) 120 #else 121 #define DNX_INIT_TIME_ANALYZER_DNX_DATA_START(unit, module_id) 122 #define DNX_INIT_TIME_ANALYZER_DNX_DATA_STOP(unit, module_id) 123 #endif 124 /** SW_STATE */ 125 #if DNX_INIT_TIME_ANALYZER_SW_STATE_EN 126 #define DNX_INIT_TIME_ANALYZER_SW_STATE_START(unit, module_id) utilex_time_analyzer_module_start(unit, module_id) 127 #define DNX_INIT_TIME_ANALYZER_SW_STATE_STOP(unit, module_id) utilex_time_analyzer_module_stop(unit, module_id) 128 #else 129 #define DNX_INIT_TIME_ANALYZER_SW_STATE_START(unit, module_id) 130 #define DNX_INIT_TIME_ANALYZER_SW_STATE_STOP(unit, module_id) 131 #endif 132 /** RES_MNGR */ 133 #if DNX_INIT_TIME_ANALYZER_RES_MNGR_EN 134 #define DNX_INIT_TIME_ANALYZER_RES_MNGR_START(unit, module_id) utilex_time_analyzer_module_start(unit, module_id) 135 #define DNX_INIT_TIME_ANALYZER_RES_MNGR_STOP(unit, module_id) utilex_time_analyzer_module_stop(unit, module_id) 136 #else 137 #define DNX_INIT_TIME_ANALYZER_RES_MNGR_START(unit, module_id) 138 #define DNX_INIT_TIME_ANALYZER_RES_MNGR_STOP(unit, module_id) 139 #endif 140 /** ACCESS */ 141 #if DNX_INIT_TIME_ANALYZER_ACCESS_EN 142 #define DNX_INIT_TIME_ANALYZER_ACCESS_START(unit, module_id) utilex_time_analyzer_module_start(unit, module_id) 143 #define DNX_INIT_TIME_ANALYZER_ACCESS_STOP(unit, module_id) utilex_time_analyzer_module_stop(unit, module_id) 144 #else 145 #define DNX_INIT_TIME_ANALYZER_ACCESS_START(unit, module_id) 146 #define DNX_INIT_TIME_ANALYZER_ACCESS_STOP(unit, module_id) 147 #endif 148 /** ALGO PORT*/ 149 #if DNX_INIT_TIME_ANALYZER_ALGO_PORT_EN 150 #define DNX_INIT_TIME_ANALYZER_ALGO_PORT_START(unit, module_id) utilex_time_analyzer_module_start(unit, module_id) 151 #define DNX_INIT_TIME_ANALYZER_ALGO_PORT_STOP(unit, module_id) utilex_time_analyzer_module_stop(unit, module_id) 152 #else 153 #define DNX_INIT_TIME_ANALYZER_ALGO_PORT_START(unit, module_id) 154 #define DNX_INIT_TIME_ANALYZER_ALGO_PORT_STOP(unit, module_id) 155 #endif 156 /* 157 * error recovery diagnostics require init time analyzer diagnostics 158 */ 159 #if DNX_ERROR_RECOVERY_TIME_DIAGNOSTICS 160 #define DNX_ERROR_RECOVERY_TIME_DIAG_START(unit, module_id) utilex_time_analyzer_module_start(unit, module_id) 161 #define DNX_ERROR_RECOVERY_TIME_DIAG_END(unit, module_id) utilex_time_analyzer_module_stop(unit, module_id) 162 #else 163 #define DNX_ERROR_RECOVERY_TIME_DIAG_START(unit, module_id) 164 #define DNX_ERROR_RECOVERY_TIME_DIAG_END(unit, module_id) 165 #endif 166 167 /* 168 * } 169 */ 170 171 /* 172 * TYPEDEFs 173 * { 174 */ 175 176 /** 177 * \brief - Time Analyzer storage structure 178 */ 179 180 typedef struct 181 { 182 int module_id; 183 char *name; 184 int enable_flag; 185 } dnx_init_time_analyzer_operations_t; 186 187 /** 188 * \brief - all the modules / operation tracked 189 * Note: must be synced with the switch case in dnx_init_time_analyzer_module_name_get() 190 */ 191 typedef enum 192 { 193 DNX_INIT_TIME_ANALYZER_DBAL_SET, 194 DNX_INIT_TIME_ANALYZER_DBAL_GET, 195 DNX_INIT_TIME_ANALYZER_DBAL_CLEAR, 196 DNX_INIT_TIME_ANALYZER_DBAL_ENTRY_CLEAR, 197 DNX_INIT_TIME_ANALYZER_DBAL_ITER, 198 DNX_INIT_TIME_ANALYZER_DBAL_FIELD_SET, 199 DNX_INIT_TIME_ANALYZER_DBAL_FIELD_GET, 200 DNX_INIT_TIME_ANALYZER_DBAL_FIELD_REQUEST, 201 DNX_INIT_TIME_ANALYZER_CHECK_2, 202 DNX_INIT_TIME_ANALYZER_CHECK_1, 203 DNX_INIT_TIME_ANALYZER_ALGO_PORT_BITMAP, 204 DNX_INIT_TIME_ANALYZER_DNX_DATA, 205 DNX_INIT_TIME_ANALYZER_SW_STATE, 206 DNX_INIT_TIME_ANALYZER_RES_MNGR, 207 DNX_INIT_TIME_ANALYZER_TEMPLATE_MNGR, 208 DNX_INIT_TIME_ANALYZER_MEM_INIT, 209 DNX_INIT_TIME_ANALYZER_MEM_ZEROS, 210 DNX_INIT_TIME_ANALYZER_ER_API_FULL, 211 DNX_INIT_TIME_ANALYSER_DBAL_INIT, 212 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT, 213 DNX_INIT_TIME_ANALYSER_DBAL_L_DYNAMIC_INIT, 214 DNX_INIT_TIME_ANALYSER_DBAL_L_ALLOC_INIT, 215 DNX_INIT_TIME_ANALYSER_DBAL_L_GENERIC_INIT, 216 DNX_INIT_TIME_ANALYSER_DBAL_L_VALIDATIONS, 217 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_VALID, 218 DNX_INIT_TIME_ANALYSER_DBAL_MDB_INIT, 219 DNX_INIT_TIME_ANALYSER_DBAL_SW_INIT, 220 DNX_INIT_TIME_ANALYSER_DBAL_PEMLA_INIT, 221 222 DNX_INIT_TIME_ANALYSER_DBAL_L_HL_INIT, 223 DNX_INIT_TIME_ANALYSER_DBAL_L_SW_STATE_INIT, 224 DNX_INIT_TIME_ANALYSER_DBAL_L_TCAMCON_INIT, 225 DNX_INIT_TIME_ANALYSER_DBAL_L_PEMLA_INIT, 226 DNX_INIT_TIME_ANALYSER_DBAL_L_MDB_INIT, 227 228 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_IF, 229 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL, 230 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_RES_TYPE, 231 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_MDB, 232 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_FIELD_STRING_TO_ID, 233 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_TCAM_CS, 234 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_STRUCT_ACCESS_CLEAR, 235 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_STRUCT_CLEAR, 236 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ACCESS_REGISTER_MEMORY, 237 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_GENERAL_INFO, 238 239 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_REG, 240 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_MEM, 241 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_MEM_HW_ENTITY_VALIDATE, 242 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_DNX_DATA_PARSING, 243 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT, 244 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_HL_MDB_INIT, 245 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_CLEAR_XML_STRUCT, 246 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_GENERAL_INFO, 247 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_DB_INTERFACE, 248 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_APP_TO_PHY_DB, 249 DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_ADD_DBAL_TABLE, 250 251 DNX_INIT_TIME_ANALYZER_NOF 252 } dnx_init_time_analyzer_module_e; 253 254 /** 255 * \brief- list (operations ids, operation names, operation enable flag) 256 */ 257 #define DNX_INIT_TIME_ANALYZER_OPS_INIT {\ 258 {DNX_INIT_TIME_ANALYZER_CHECK_1, "GENERIC CHECK 1", DNX_INIT_TIME_ANALYZER_DBAL_EN},\ 259 {DNX_INIT_TIME_ANALYZER_CHECK_2, "GENERIC CHECK 2", DNX_INIT_TIME_ANALYZER_DBAL_EN},\ 260 {DNX_INIT_TIME_ANALYZER_DBAL_SET, "DBAL_SET", DNX_INIT_TIME_ANALYZER_DBAL_EN},\ 261 {DNX_INIT_TIME_ANALYZER_DBAL_GET, "DBAL_GET", DNX_INIT_TIME_ANALYZER_DBAL_EN},\ 262 {DNX_INIT_TIME_ANALYZER_DBAL_CLEAR, "DBAL_CLEAR", DNX_INIT_TIME_ANALYZER_DBAL_EN},\ 263 {DNX_INIT_TIME_ANALYZER_DBAL_ENTRY_CLEAR, "DBAL_ENTRY_CLEAR", DNX_INIT_TIME_ANALYZER_DBAL_EN},\ 264 {DNX_INIT_TIME_ANALYZER_DBAL_ITER, "DBAL_ITER", DNX_INIT_TIME_ANALYZER_DBAL_EN},\ 265 {DNX_INIT_TIME_ANALYZER_DBAL_FIELD_SET, "DBAL_FIELD_SET", DNX_INIT_TIME_ANALYZER_DBAL_EN},\ 266 {DNX_INIT_TIME_ANALYZER_DBAL_FIELD_GET, "DBAL_FIELD_GET", DNX_INIT_TIME_ANALYZER_DBAL_EN},\ 267 {DNX_INIT_TIME_ANALYZER_DBAL_FIELD_REQUEST, "DBAL_FIELD_REQ", DNX_INIT_TIME_ANALYZER_DBAL_EN},\ 268 {DNX_INIT_TIME_ANALYZER_ALGO_PORT_BITMAP, "PORT_BITMAP", DNX_INIT_TIME_ANALYZER_ALGO_PORT_EN},\ 269 {DNX_INIT_TIME_ANALYZER_DNX_DATA, "DNX_DATA", DNX_INIT_TIME_ANALYZER_DNX_DATA_EN},\ 270 {DNX_INIT_TIME_ANALYZER_SW_STATE, "SW STATE", DNX_INIT_TIME_ANALYZER_SW_STATE_EN},\ 271 {DNX_INIT_TIME_ANALYZER_RES_MNGR, "RES MNGR", DNX_INIT_TIME_ANALYZER_RES_MNGR_EN},\ 272 {DNX_INIT_TIME_ANALYZER_TEMPLATE_MNGR, "TEMP MNGR", DNX_INIT_TIME_ANALYZER_RES_MNGR_EN},\ 273 {DNX_INIT_TIME_ANALYZER_MEM_INIT, "MEM_INIT", DNX_INIT_TIME_ANALYZER_ACCESS_EN},\ 274 {DNX_INIT_TIME_ANALYZER_MEM_ZEROS, "MEM_ZEROS", DNX_INIT_TIME_ANALYZER_ACCESS_EN},\ 275 {DNX_INIT_TIME_ANALYSER_DBAL_INIT, "DBAL INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 276 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT, "DBAL L INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 277 {DNX_INIT_TIME_ANALYSER_DBAL_L_GENERIC_INIT, "DBAL GENERIC INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 278 {DNX_INIT_TIME_ANALYSER_DBAL_L_ALLOC_INIT, "DBAL ALLOC INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 279 {DNX_INIT_TIME_ANALYSER_DBAL_L_DYNAMIC_INIT, "DBAL DYNAMIC INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 280 {DNX_INIT_TIME_ANALYSER_DBAL_L_VALIDATIONS, "DBAL INIT VALIDATIONS", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 281 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_VALID, "DBAL L INIT VALID", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 282 {DNX_INIT_TIME_ANALYSER_DBAL_MDB_INIT, "DBAL MDB INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 283 {DNX_INIT_TIME_ANALYSER_DBAL_SW_INIT, "DBAL SW INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 284 {DNX_INIT_TIME_ANALYSER_DBAL_PEMLA_INIT, "DBAL PEMLA INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 285 {DNX_INIT_TIME_ANALYSER_DBAL_L_HL_INIT, "DBAL L HL INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 286 {DNX_INIT_TIME_ANALYSER_DBAL_L_SW_STATE_INIT, "DBAL L SWSTATE INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 287 {DNX_INIT_TIME_ANALYSER_DBAL_L_TCAMCON_INIT, "DBAL L TCAMCON INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 288 {DNX_INIT_TIME_ANALYSER_DBAL_L_PEMLA_INIT, "DBAL L PEMLA INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 289 {DNX_INIT_TIME_ANALYSER_DBAL_L_MDB_INIT, "DBAL L MDB INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 290 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_IF, "DBAL ADD TABLE IF INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 291 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL, "DBAL ADD TABLE MAP HL INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 292 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_MDB, "DBAL ADD TABLE MAP MDB INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 293 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_FIELD_STRING_TO_ID, "DBAL FIELD STRING TO ID", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 294 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_TCAM_CS, "DBAL ADD TABLE MAP TCAM CS INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 295 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_RES_TYPE, "DBAL ADD TABLE MAP HL RES TYPE", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 296 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ACCESS_REGISTER_MEMORY, "DBAL ACCESS REGISTER MEMORY", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 297 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_STRUCT_ACCESS_CLEAR, "DBAL STRUCT ACCESS CLEAR", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 298 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_STRUCT_CLEAR, "DBAL STRUCT CLEAR", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 299 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_GENERAL_INFO, "DBAL GENERAL INFO SET", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 300 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_REG, "DBAL ADD TABLE MAP HL REG INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 301 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_MEM, "DBAL ADD TABLE MAP HL MEM INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 302 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_MEM_HW_ENTITY_VALIDATE, "DBAL ADD TABLE MAP HL MEM HW INIT ENTITY VALIDATE", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 303 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_DNX_DATA_PARSING, "DBAL DNX DATA PARSING INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 304 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_HL_MDB_INIT, "DBAL MDB HL INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 305 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT, "DBAL AG INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 306 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_CLEAR_XML_STRUCT, "DBAL AG CLEAR XML STRUCT INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 307 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_GENERAL_INFO, "DBAL AG GENERAL INFO INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 308 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_DB_INTERFACE, "DBAL AG DB INTERFACE INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 309 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_APP_TO_PHY_DB, "DBAL AG APP TO PHY DB INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 310 {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_ADD_DBAL_TABLE, "DBAL AG ADD DBAL TABLE INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\ 311 } 312 /* 313 * } 314 */ 315 316 /* 317 * FUNCTIONs 318 * { 319 */ 320 /** 321 * \brief - allocate memory, initialize time analyzer tool and adds the required modules to be tracked 322 * \param [in] unit - unit #. 323 * \return 324 * See shr_error_e 325 * \remark 326 * * None 327 * \see 328 * * None 329 */ 330 shr_error_e dnx_init_time_analyzer_init( 331 int unit); 332 /** 333 * \brief - free time analyzer tool resources 334 * \param [in] unit - unit #. 335 * \return 336 * See shr_error_e 337 * \remark 338 * * None 339 * \see 340 * * None 341 */ 342 shr_error_e dnx_init_time_analyzer_deinit( 343 int unit); 344 /** 345 * \brief - flag cb for init sequence that allows to skip the module 346 * \param [in] unit - unit #. 347 * * \param [out] flags - init sequnce flags 348 * \return 349 * See shr_error_e 350 * \remark 351 * * None 352 * \see 353 * * None 354 */ 355 shr_error_e dnx_time_analyzer_flag_cb( 356 int unit, 357 int *flags); 358 /* 359 * } 360 */ 361 362 #endif /* DNX_INIT_TIME_ANALYZER_H_INCLUDED */