keygen_error.h (3247B)
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 #ifndef _BCM_INT_FIELD_KEYGEN_ERROR_H 8 #define _BCM_INT_FIELD_KEYGEN_ERROR_H 9 10 #include <shared/bsl.h> 11 #include <bcm/error.h> 12 13 #define BCMI_KEYGEN_FUNC_ENTER(_unit) bcm_error_t _func_rv = BCM_E_NONE 14 15 #define BCMI_KEYGEN_FUNC_EXIT() return _func_rv 16 17 #define BCMI_KEYGEN_EXIT() goto exit 18 19 #define BCMI_KEYGEN_FUNC_VAL_IS(_rv) (_func_rv == (_rv)) 20 21 #define BCMI_KEYGEN_FUNC_ERR() BCMI_KEYGEN_FAILURE(_func_rv) 22 23 #define BCMI_KEYGEN_SUCCESS(_expr) ((_expr) >= 0) 24 25 #define BCMI_KEYGEN_FAILURE(_expr) ((_expr) < 0) 26 27 #define BCMI_KEYGEN_IF_ERR_EXIT(_expr) \ 28 do { \ 29 bcm_error_t _rv = _expr; \ 30 if (BCMI_KEYGEN_FAILURE(_rv)) { \ 31 _func_rv = (_rv); \ 32 BCMI_KEYGEN_EXIT(); \ 33 } \ 34 } while(0) 35 36 #define BCMI_KEYGEN_IF_ERR_VERBOSE_EXIT(_expr) \ 37 do { \ 38 bcm_error_t _rv = _expr; \ 39 if (BCMI_KEYGEN_FAILURE(_rv)) { \ 40 _func_rv = _rv; \ 41 BCMI_KEYGEN_EXIT(); \ 42 } \ 43 } while(0) 44 45 46 #define BCMI_KEYGEN_RETURN_VAL_EXIT(_expr) \ 47 do { \ 48 _func_rv = _expr; \ 49 BCMI_KEYGEN_EXIT(); \ 50 } while (0) 51 52 #define BCMI_KEYGEN_NULL_CHECK(_ptr, _rv) \ 53 do { \ 54 if ((_ptr) == NULL) { \ 55 _func_rv = _rv; \ 56 BCMI_KEYGEN_EXIT(); \ 57 } \ 58 } while (0) 59 60 #define BCMI_KEYGEN_ALLOC(_ptr, _sz, _str) \ 61 do \ 62 { \ 63 if ((_ptr) == NULL) { \ 64 (_ptr) = sal_alloc(_sz, _str); \ 65 } else { \ 66 BCMI_KEYGEN_EXIT(); \ 67 } \ 68 BCMI_KEYGEN_NULL_CHECK(_ptr, BCM_E_MEMORY); \ 69 sal_memset(_ptr, 0, _sz); \ 70 } while(0) 71 72 #define BCMI_KEYGEN_FREE(_ptr) \ 73 do { \ 74 if ((_ptr) != NULL) { \ 75 sal_free((void *)(_ptr)); \ 76 (_ptr) = NULL; \ 77 } \ 78 } while (0) 79 80 #define BCMI_KEYGEN_IF_ERR_EXIT_EXCEPT_IF(_expr, _rv_except) \ 81 do { \ 82 int _rv = _expr; \ 83 if (BCMI_KEYGEN_FAILURE(_rv) && _rv != _rv_except) { \ 84 _func_rv = _rv; \ 85 BCMI_KEYGEN_EXIT(); \ 86 } \ 87 } while(0) 88 89 #endif 90