utils_error_defs.h (4311B)
1 /* 2 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 3 * 4 * Copyright 2007-2020 Broadcom Inc. All rights reserved. 5 */ 6 7 8 #ifndef __UTILS_ERR_DEFS_H_INCLUDED__ 9 /* { */ 10 #define __UTILS_ERR_DEFS_H_INCLUDED__ 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 /************* 17 * INCLUDES * 18 */ 19 /* { */ 20 21 #include "soc/dpp/SAND/Utils/sand_os_interface.h" 22 #include "soc/dpp/SAND/Management/sand_error_code.h" 23 24 /* } */ 25 26 #define UTILS_GEN_SVR_ERR(e_err_str, e_proc_name, e_err_code, e_svr_wrn) \ 27 gen_err(FALSE,FALSE,0,0,e_err_str, e_proc_name, e_svr_wrn,\ 28 e_err_code, TRUE, 0, 601, FALSE) 29 30 31 #define UTILS_INIT_ERR_DEFS(e_proc_name) \ 32 unsigned int m_ret = 0; \ 33 unsigned int m_silent_flag; \ 34 char* m_proc_name = e_proc_name; \ 35 m_silent_flag = 1; 36 37 #define UTILS_SET_ERR_AND_EXIT(e_err_code) \ 38 { \ 39 m_ret = e_err_code; \ 40 goto exit ; \ 41 } 42 43 #define UTILS_PRINT_ERR_MSG(e_silent_flag, e_err_msg) \ 44 { \ 45 m_silent_flag = e_silent_flag; \ 46 if (!m_silent_flag) \ 47 { \ 48 soc_sand_os_printf( \ 49 "\n\r--> ERROR: %s\n\r", e_err_msg); \ 50 } \ 51 } 52 53 #define UTILS_PRINT_MSG(e_silent_flag, e_msg) \ 54 { \ 55 m_silent_flag = e_silent_flag; \ 56 if (!m_silent_flag) \ 57 { \ 58 soc_sand_os_printf( \ 59 "--> %s\n\r", e_msg); \ 60 } \ 61 } 62 63 64 65 #define UTILS_EXIT_IF_ERR(e_sand_err,e_err_code) \ 66 { \ 67 m_ret = soc_sand_get_error_code_from_error_word(e_sand_err); \ 68 if(m_ret != 0) \ 69 { \ 70 m_ret = e_err_code ; \ 71 goto exit ; \ 72 } \ 73 } 74 75 #define UTILS_FUNC_VALIDATE(e_func_name, e_err_code) \ 76 { \ 77 if (e_func_name == NULL) \ 78 { \ 79 UTILS_SET_ERR_AND_EXIT(e_err_code) \ 80 } \ 81 } 82 83 #define UTILS_ERR_IF_NULL(e_ptr, e_err_code) \ 84 { \ 85 if (e_ptr == NULL) \ 86 { \ 87 UTILS_SET_ERR_AND_EXIT(e_err_code) \ 88 } \ 89 } 90 91 92 93 /* 94 * Macro to handle procedure call which returns standard soc_sand 95 * error code and, in case of error, sets error code, performs an exit function and quits. 96 * Assumes local variables: ret, error_id, soc_sand_err 97 * Assumes label: exit 98 */ 99 #define UTILS_EXIT_AND_PRINT_IF_ERR(e_result, e_silent_flag, e_err_code, e_err_msg) \ 100 m_silent_flag = e_silent_flag; \ 101 m_ret = soc_sand_get_error_code_from_error_word(e_result);\ 102 if (SOC_SAND_OK != m_ret) \ 103 { \ 104 /* \ 105 * Error detected. Quit with error. \ 106 */ \ 107 UTILS_PRINT_ERR_MSG(m_silent_flag, e_err_msg) \ 108 \ 109 goto exit ; \ 110 } 111 112 113 #define UTILS_EXIT_AND_PRINT_ERR \ 114 { \ 115 if ((m_ret) && (m_silent_flag == FALSE)) \ 116 { \ 117 soc_sand_os_printf(\ 118 "\n\r + %-60s -- ERROR %u.\n\r",m_proc_name, m_ret);\ 119 } \ 120 return m_ret; \ 121 } 122 123 #ifdef __cplusplus 124 } 125 #endif 126 127 128 /* } __UTILS_ERR_DEFS_H_INCLUDED__*/ 129 #endif 130 131