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

*** 377,387 **** static void evch_gevent_free(evch_gevent_t *evp) { int32_t refcnt; ! refcnt = (int32_t)atomic_add_32_nv(&evp->ge_refcount, -1); if (refcnt <= 0) { if (evp->ge_destruct != NULL) { evp->ge_destruct((void *)&(evp->ge_payload), evp->ge_dstcookie); } --- 377,387 ---- static void evch_gevent_free(evch_gevent_t *evp) { int32_t refcnt; ! refcnt = (int32_t)atomic_dec_32_nv(&evp->ge_refcount); if (refcnt <= 0) { if (evp->ge_destruct != NULL) { evp->ge_destruct((void *)&(evp->ge_payload), evp->ge_dstcookie); }
*** 645,655 **** if (qep == NULL) { return (-1); } qep->q_objref = (void *)evp; qep->q_objsize = size; ! atomic_add_32(&evp->ge_refcount, 1); mutex_enter(&eqp->eq_queuemx); evch_q_in(&eqp->eq_eventq, qep); /* Wakeup delivery thread */ cv_signal(&eqp->eq_thrsleepcv); --- 645,655 ---- if (qep == NULL) { return (-1); } qep->q_objref = (void *)evp; qep->q_objsize = size; ! atomic_inc_32(&evp->ge_refcount); mutex_enter(&eqp->eq_queuemx); evch_q_in(&eqp->eq_eventq, qep); /* Wakeup delivery thread */ cv_signal(&eqp->eq_thrsleepcv);