Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*


 106         boolean_t               ke_is_nxkey;
 107         kssl_session_info_t     *ke_sessinfo;
 108 
 109         crypto_key_t            *ke_private_key; /* instance's private key */
 110         Certificate_t           *ke_server_certificate;
 111 
 112         Certificate_t           **ke_cacert_chain;
 113 
 114         kssl_proxy_t    *ke_proxy_head;         /* Proxies chain */
 115         kssl_fallback_t *ke_fallback_head;      /* Fall-back endpoints chain */
 116 
 117 } kssl_entry_t;
 118 
 119 typedef struct mech_to_cipher_s {
 120         crypto_mech_type_t mech;
 121         char *name;
 122         uint16_t kssl_suites[CIPHER_SUITE_COUNT];
 123 } mech_to_cipher_t;
 124 
 125 #define KSSL_ENTRY_REFHOLD(kssl_entry) {                                \
 126         atomic_add_32(&(kssl_entry)->ke_refcnt, 1);                      \
 127         ASSERT((kssl_entry)->ke_refcnt != 0);                                \
 128 }
 129 
 130 #define KSSL_ENTRY_REFRELE(kssl_entry) {                                \
 131         ASSERT((kssl_entry)->ke_refcnt != 0);                                \
 132         membar_exit();                                                  \
 133         if (atomic_add_32_nv(&(kssl_entry)->ke_refcnt, -1) == 0) {       \
 134                 kssl_free_entry((kssl_entry));                          \
 135         }                                                               \
 136 }
 137 
 138 #define CRYPTO_ERR(r) ((r) != CRYPTO_SUCCESS && (r) != CRYPTO_QUEUED)
 139 
 140 /*
 141  * Enqueue mblk into KSSL input queue. Watch for mblk b_cont chains
 142  * returned by tcp_reass() and enqueue them properly. Caller should
 143  * be aware that mp is modified by this macro.
 144  */
 145 #define KSSL_ENQUEUE_MP(ssl, mp) {                                      \
 146         DTRACE_PROBE1(kssl_mblk__enqueue_mp, mblk_t *, mp);             \
 147         if ((ssl)->rec_ass_tail == NULL) {                           \
 148                 (ssl)->rec_ass_head = (mp);                          \
 149                 while (mp->b_cont)                                   \
 150                         mp = mp->b_cont;                             \
 151                 (ssl)->rec_ass_tail = (mp);                          \
 152         } else {                                                        \
 153                 (ssl)->rec_ass_tail->b_cont = (mp);                       \




 106         boolean_t               ke_is_nxkey;
 107         kssl_session_info_t     *ke_sessinfo;
 108 
 109         crypto_key_t            *ke_private_key; /* instance's private key */
 110         Certificate_t           *ke_server_certificate;
 111 
 112         Certificate_t           **ke_cacert_chain;
 113 
 114         kssl_proxy_t    *ke_proxy_head;         /* Proxies chain */
 115         kssl_fallback_t *ke_fallback_head;      /* Fall-back endpoints chain */
 116 
 117 } kssl_entry_t;
 118 
 119 typedef struct mech_to_cipher_s {
 120         crypto_mech_type_t mech;
 121         char *name;
 122         uint16_t kssl_suites[CIPHER_SUITE_COUNT];
 123 } mech_to_cipher_t;
 124 
 125 #define KSSL_ENTRY_REFHOLD(kssl_entry) {                                \
 126         atomic_inc_32(&(kssl_entry)->ke_refcnt);                 \
 127         ASSERT((kssl_entry)->ke_refcnt != 0);                                \
 128 }
 129 
 130 #define KSSL_ENTRY_REFRELE(kssl_entry) {                                \
 131         ASSERT((kssl_entry)->ke_refcnt != 0);                                \
 132         membar_exit();                                                  \
 133         if (atomic_dec_32_nv(&(kssl_entry)->ke_refcnt) == 0) {   \
 134                 kssl_free_entry((kssl_entry));                          \
 135         }                                                               \
 136 }
 137 
 138 #define CRYPTO_ERR(r) ((r) != CRYPTO_SUCCESS && (r) != CRYPTO_QUEUED)
 139 
 140 /*
 141  * Enqueue mblk into KSSL input queue. Watch for mblk b_cont chains
 142  * returned by tcp_reass() and enqueue them properly. Caller should
 143  * be aware that mp is modified by this macro.
 144  */
 145 #define KSSL_ENQUEUE_MP(ssl, mp) {                                      \
 146         DTRACE_PROBE1(kssl_mblk__enqueue_mp, mblk_t *, mp);             \
 147         if ((ssl)->rec_ass_tail == NULL) {                           \
 148                 (ssl)->rec_ass_head = (mp);                          \
 149                 while (mp->b_cont)                                   \
 150                         mp = mp->b_cont;                             \
 151                 (ssl)->rec_ass_tail = (mp);                          \
 152         } else {                                                        \
 153                 (ssl)->rec_ass_tail->b_cont = (mp);                       \