BCM ERROR define

  1. error.h
#ifndef __BCM_ERROR_H__
#define __BCM_ERROR_H__

#include <shared/error.h>

/* 
 * BCM API error codes.
 * 
 * Note: An error code may be converted to a string by passing the code
 * to bcm_errmsg().
 */
typedef enum bcm_error_e {
    BCM_E_NONE         = _SHR_E_NONE, 
    BCM_E_INTERNAL     = _SHR_E_INTERNAL, 
    BCM_E_MEMORY       = _SHR_E_MEMORY, 
    BCM_E_UNIT         = _SHR_E_UNIT, 
    BCM_E_PARAM        = _SHR_E_PARAM, 
    BCM_E_EMPTY        = _SHR_E_EMPTY, 
    BCM_E_FULL         = _SHR_E_FULL, 
    BCM_E_NOT_FOUND    = _SHR_E_NOT_FOUND, 
    BCM_E_EXISTS       = _SHR_E_EXISTS, 
    BCM_E_TIMEOUT      = _SHR_E_TIMEOUT, 
    BCM_E_BUSY         = _SHR_E_BUSY, 
    BCM_E_FAIL         = _SHR_E_FAIL, 
    BCM_E_DISABLED     = _SHR_E_DISABLED, 
    BCM_E_BADID        = _SHR_E_BADID, 
    BCM_E_RESOURCE     = _SHR_E_RESOURCE, 
    BCM_E_CONFIG       = _SHR_E_CONFIG, 
    BCM_E_UNAVAIL      = _SHR_E_UNAVAIL, 
    BCM_E_INIT         = _SHR_E_INIT, 
    BCM_E_PORT         = _SHR_E_PORT 
} bcm_error_t;

/* Switch event types */
typedef enum bcm_switch_event_e {
    BCM_SWITCH_EVENT_IO_ERROR              =   _SHR_SWITCH_EVENT_IO_ERROR, 
    BCM_SWITCH_EVENT_PARITY_ERROR          =   _SHR_SWITCH_EVENT_PARITY_ERROR, 
    BCM_SWITCH_EVENT_THREAD_ERROR          =   _SHR_SWITCH_EVENT_THREAD_ERROR, 
    BCM_SWITCH_EVENT_ACCESS_ERROR          =   _SHR_SWITCH_EVENT_ACCESS_ERROR, 
    BCM_SWITCH_EVENT_ASSERT_ERROR          =   _SHR_SWITCH_EVENT_ASSERT_ERROR, 
    BCM_SWITCH_EVENT_MODID_CHANGE          =   _SHR_SWITCH_EVENT_MODID_CHANGE, 
    BCM_SWITCH_EVENT_DOS_ATTACK            =   _SHR_SWITCH_EVENT_DOS_ATTACK, 
    BCM_SWITCH_EVENT_STABLE_FULL           =   _SHR_SWITCH_EVENT_STABLE_FULL, 
    BCM_SWITCH_EVENT_STABLE_ERROR          =   _SHR_SWITCH_EVENT_STABLE_ERROR, 
    BCM_SWITCH_EVENT_UNCONTROLLED_SHUTDOWN =   _SHR_SWITCH_EVENT_UNCONTROLLED_SHUTDOWN, 
    BCM_SWITCH_EVENT_WARM_BOOT_DOWNGRADE   =   _SHR_SWITCH_EVENT_WARM_BOOT_DOWNGRADE, 
    BCM_SWITCH_EVENT_TUNE_ERROR            =   _SHR_SWITCH_EVENT_TUNE_ERROR, 
    BCM_SWITCH_EVENT_DEVICE_INTERRUPT      =   _SHR_SWITCH_EVENT_DEVICE_INTERRUPT, 
    BCM_SWITCH_EVENT_ALARM                 =   _SHR_SWITCH_EVENT_ALARM, 
    BCM_SWITCH_EVENT_MMU_BST_TRIGGER       =   _SHR_SWITCH_EVENT_MMU_BST_TRIGGER, 
    BCM_SWITCH_EVENT_EPON_ALARM            =   _SHR_SWITCH_EVENT_EPON_ALARM, 
    BCM_SWITCH_EVENT_RUNT_DETECT           =   _SHR_SWITCH_EVENT_RUNT_DETECT, 
    BCM_SWITCH_EVENT_AUTONEG_SPEED_ERROR   =   _SHR_SWITCH_EVENT_AUTONEG_SPEED_ERROR, 
    BCM_SWITCH_EVENT_COUNT                 =   _SHR_SWITCH_EVENT_COUNT 
} bcm_switch_event_t;

#define BCM_SUCCESS(rv)         \
    _SHR_E_SUCCESS(rv) 

#define BCM_FAILURE(rv)         \
    _SHR_E_FAILURE(rv) 

#define BCM_IF_ERROR_RETURN(op)  \
    _SHR_E_IF_ERROR_RETURN(op) 

#define BCM_IF_ERROR_NOT_UNAVAIL_RETURN(op)  \
    _SHR_E_IF_ERROR_NOT_UNAVAIL_RETURN(op) 

#define bcm_errmsg(rv)          \
    _SHR_ERRMSG(rv) 

#endif /* __BCM_ERROR_H__ */
  1. error.h
#ifndef _SHR_ERROR_H
#define _SHR_ERROR_H

typedef enum {
    _SHR_E_NONE                 = 0,
    _SHR_E_INTERNAL             = -1,
    _SHR_E_MEMORY               = -2,
    _SHR_E_UNIT                 = -3,
    _SHR_E_PARAM                = -4,
    _SHR_E_EMPTY                = -5,
    _SHR_E_FULL                 = -6,
    _SHR_E_NOT_FOUND            = -7,
    _SHR_E_EXISTS               = -8,
    _SHR_E_TIMEOUT              = -9,
    _SHR_E_BUSY                 = -10,
    _SHR_E_FAIL                 = -11,
    _SHR_E_DISABLED             = -12,
    _SHR_E_BADID                = -13,
    _SHR_E_RESOURCE             = -14,
    _SHR_E_CONFIG               = -15,
    _SHR_E_UNAVAIL              = -16,
    _SHR_E_INIT                 = -17,
    _SHR_E_PORT                 = -18,
    _SHR_E_LIMIT                = -19           /* Must come last */
} _shr_error_t;

#define _SHR_ERRMSG_INIT        { \
        "Ok",                           /* E_NONE */ \
        "Internal error",               /* E_INTERNAL */ \
        "Out of memory",                /* E_MEMORY */ \
        "Invalid unit",                 /* E_UNIT */ \
        "Invalid parameter",            /* E_PARAM */ \
        "Table empty",                  /* E_EMPTY */ \
        "Table full",                   /* E_FULL */ \
        "Entry not found",              /* E_NOT_FOUND */ \
        "Entry exists",                 /* E_EXISTS */ \
        "Operation timed out",          /* E_TIMEOUT */ \
        "Operation still running",      /* E_BUSY */ \
        "Operation failed",             /* E_FAIL */ \
        "Operation disabled",           /* E_DISABLED */ \
        "Invalid identifier",           /* E_BADID */ \
        "No resources for operation",   /* E_RESOURCE */ \
        "Invalid configuration",        /* E_CONFIG */ \
        "Feature unavailable",          /* E_UNAVAIL */ \
        "Feature not initialized",      /* E_INIT */ \
        "Invalid port",                 /* E_PORT */ \
        "Unknown error"                 /* E_LIMIT */ \
        }

extern char *_shr_errmsg[];

#define _SHR_ERRMSG(r)          \
        _shr_errmsg[(((int)r) <= 0 && ((int)r) > _SHR_E_LIMIT) ? -(r) : -_SHR_E_LIMIT]

#define _SHR_E_SUCCESS(rv)              ((rv) >= 0)
#define _SHR_E_FAILURE(rv)              ((rv) < 0)

/*
 * Macro:
 *      _SHR_E_IF_ERROR_RETURN
 * Purpose:
 *      Evaluate _op as an expression, and if an error, return.
 * Notes:
 *      This macro uses a do-while construct to maintain expected
 *      "C" blocking, and evaluates "op" ONLY ONCE so it may be
 *      a function call that has side affects.
 */

#ifdef DEBUG_ERR_TRACE
#include "shared/bsl.h"
#define _SHR_ERROR_TRACE(__errcode__)  LOG_ERROR(BSL_LS_SOC_DIAG, \
                                                    (BSL_META("ERROR(%d)\n"), __errcode__))
#define _SHR_RETURN(__expr__)  do { int __errcode__ = (__expr__);  if (__errcode__ < 0) _SHR_ERROR_TRACE(__errcode__);  return (__errcode__); } while (0)
#else
#define _SHR_ERROR_TRACE(__errcode__)
#define _SHR_RETURN(__expr__)  return (__expr__)
#endif

#define _SHR_E_IF_ERROR_RETURN(op) \
    do { int __rv__; if ((__rv__ = (op)) < 0) { _SHR_ERROR_TRACE(__rv__);  return(__rv__); } } while(0)

#define _SHR_E_IF_ERROR_CLEAN_RETURN(op,exop) \
    do { int __rv__; if ((__rv__ = (op)) < 0) { _SHR_ERROR_TRACE(__rv__); (exop); return(__rv__); } } while(0)

#define _SHR_E_IF_ERROR_NOT_UNAVAIL_RETURN(op)                       \
    do {                                                                \
        int __rv__;                                                     \
        if (((__rv__ = (op)) < 0) && (__rv__ != _SHR_E_UNAVAIL)) {      \
            return(__rv__);                                             \
        }                                                               \
    } while(0)


typedef enum {
    _SHR_SWITCH_EVENT_IO_ERROR      = 1,
    _SHR_SWITCH_EVENT_PARITY_ERROR  = 2,
    _SHR_SWITCH_EVENT_THREAD_ERROR  = 3,
    _SHR_SWITCH_EVENT_ACCESS_ERROR  = 4,
    _SHR_SWITCH_EVENT_ASSERT_ERROR  = 5,
    _SHR_SWITCH_EVENT_MODID_CHANGE  = 6,
    _SHR_SWITCH_EVENT_DOS_ATTACK    = 7,
    _SHR_SWITCH_EVENT_STABLE_FULL   = 8,
    _SHR_SWITCH_EVENT_STABLE_ERROR   = 9,
    _SHR_SWITCH_EVENT_UNCONTROLLED_SHUTDOWN = 10,
    _SHR_SWITCH_EVENT_WARM_BOOT_DOWNGRADE = 11,
    _SHR_SWITCH_EVENT_TUNE_ERROR = 12,
    _SHR_SWITCH_EVENT_DEVICE_INTERRUPT  = 13,
    _SHR_SWITCH_EVENT_ALARM = 14,
    _SHR_SWITCH_EVENT_MMU_BST_TRIGGER = 15,
    _SHR_SWITCH_EVENT_EPON_ALARM = 16,
    _SHR_SWITCH_EVENT_RUNT_DETECT = 17,
    _SHR_SWITCH_EVENT_AUTONEG_SPEED_ERROR = 18,
    _SHR_SWITCH_EVENT_COUNT             /* last, as always */
} _shr_switch_event_t;

#endif  /* !_SHR_ERROR_H */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值