From 86c6570e6b42ea9cc7d3af35bea74ca0dd8c665c Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Thu, 13 Nov 2025 15:57:50 -0500 Subject: pkev: unused_evs always store, ignore left/right --- pkev.h | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'pkev.h') diff --git a/pkev.h b/pkev.h index d0a18a6..17e04ac 100644 --- a/pkev.h +++ b/pkev.h @@ -299,7 +299,6 @@ pk_ev_register_ev(pk_ev_mgr_id_T evmgr, void *user_ev_data) uint64_t new_size; uint64_t i, ii, flg; pk_ev_id_T id; - bool found = false; struct pk_ev_mgr *mgr = nullptr; mtx_lock(&pk_ev_mstr.mtxs[evmgr]); mgr = pk_ev_mstr.mgrs[evmgr]; @@ -317,26 +316,21 @@ pk_ev_register_ev(pk_ev_mgr_id_T evmgr, void *user_ev_data) pk_ev_mstr.mgrs[evmgr] = mgr; } id = atomic_load(&mgr->left_evs); + flg = atomic_load(&mgr->unused_evs); if (mgr->left_evs != mgr->right_evs) { - i = atomic_load(&mgr->left_evs); + i = atomic_load(&mgr->left_evs) + 1; ii = atomic_load(&mgr->rn_ev); - flg = atomic_load(&mgr->unused_evs); - for (; i < ii; ++i) { + for (; i <= ii; ++i) { if (flg & (1lu << i)) { - if (!found) { - found = true; - flg &= ~(1lu << i); - continue; - } break; } } atomic_store(&mgr->left_evs, i); - atomic_store(&mgr->unused_evs, flg); } else { atomic_store(&mgr->left_evs, atomic_load(&mgr->left_evs) + 1); atomic_store(&mgr->right_evs, atomic_load(&mgr->right_evs) + 1); } + atomic_store(&mgr->unused_evs, flg & ~(1lu << id)); mtx_unlock(&pk_ev_mstr.mtxs[evmgr]); mgr->ev[id].user_ev_data = user_ev_data; return id; -- cgit v1.2.3