openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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