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

*** 1099,1120 **** /* * If a session has a reference to a dprov_object_t, * it REFHOLD()s. */ #define DPROV_OBJECT_REFHOLD(object) { \ ! atomic_add_32(&(object)->do_refcnt, 1); \ ASSERT((object)->do_refcnt != 0); \ } /* * Releases a reference to an object. When the last * reference is released, the object is freed. */ #define DPROV_OBJECT_REFRELE(object) { \ ASSERT((object)->do_refcnt != 0); \ membar_exit(); \ ! if (atomic_add_32_nv(&(object)->do_refcnt, -1) == 0) \ dprov_free_object(object); \ } /* * Object attributes are passed to the provider using crypto_object_attribute --- 1099,1120 ---- /* * If a session has a reference to a dprov_object_t, * it REFHOLD()s. */ #define DPROV_OBJECT_REFHOLD(object) { \ ! atomic_inc_32(&(object)->do_refcnt); \ ASSERT((object)->do_refcnt != 0); \ } /* * Releases a reference to an object. When the last * reference is released, the object is freed. */ #define DPROV_OBJECT_REFRELE(object) { \ ASSERT((object)->do_refcnt != 0); \ membar_exit(); \ ! if (atomic_dec_32_nv(&(object)->do_refcnt) == 0) \ dprov_free_object(object); \ } /* * Object attributes are passed to the provider using crypto_object_attribute