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);