summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-11-06 22:09:08 -0500
committerJonathan Bradley <jcb@pikum.xyz>2025-11-06 22:13:33 -0500
commit2ce86d2c4cd2e392d5d0f5d21767776ef524246f (patch)
treec4921a8ee5a11638d3408c36af9a29a3569f86ea
parent6065c56165743116bf9d4a5a4a1a63ec6d01a067 (diff)
pkev: define for hard limits
-rw-r--r--pkev.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/pkev.h b/pkev.h
index 9ae9260..d0a18a6 100644
--- a/pkev.h
+++ b/pkev.h
@@ -60,6 +60,12 @@ void pk_ev_unregister_cb(pk_ev_mgr_id_T evmgr, pk_ev_id_T evid, pk_ev_cb_id_T cb
# define PK_EV_GROW_RATIO 1.5
#endif
+// hard limits
+// PK_EV_MAX_EV_COUNT would require a refactor for keeping track of used slots
+#define PK_EV_MAX_EV_COUNT 64
+// PK_EV_MAX_CB_COUNT could be increased as desired
+#define PK_EV_MAX_CB_COUNT 255
+
#ifndef PK_EV_MEM_ALLOC
# define PK_EV_MEM_ALLOC(sz, alignment, bkt) pk_new(sz, alignment, bkt)
#endif
@@ -298,7 +304,7 @@ pk_ev_register_ev(pk_ev_mgr_id_T evmgr, void *user_ev_data)
mtx_lock(&pk_ev_mstr.mtxs[evmgr]);
mgr = pk_ev_mstr.mgrs[evmgr];
if (mgr->left_evs == mgr->right_evs && mgr->right_evs == mgr->rn_ev) {
- new_size = PK_MAX(2, PK_MIN(255, mgr->rn_ev * PK_EV_GROW_RATIO));
+ new_size = PK_MAX(2, PK_MIN(PK_EV_MAX_EV_COUNT, mgr->rn_ev * PK_EV_GROW_RATIO));
if (new_size == mgr->rn_ev) {
PK_LOG_ERR("[pkev.h] need more room, but failed to grow ev count.\n");
mtx_unlock(&pk_ev_mstr.mtxs[evmgr]);
@@ -339,7 +345,7 @@ pk_ev_register_ev(pk_ev_mgr_id_T evmgr, void *user_ev_data)
pk_ev_cb_id_T
pk_ev_register_cb(pk_ev_mgr_id_T evmgr, pk_ev_id_T evid, pk_ev_cb_fn *cb, void *user_cb_data)
{
- assert(evmgr < 64);
+ assert(evmgr < PK_EV_INIT_MGR_COUNT);
bool found = false;
uint64_t new_size, i;
struct pk_ev_mgr *mgr = nullptr;
@@ -364,7 +370,7 @@ pk_ev_register_cb(pk_ev_mgr_id_T evmgr, pk_ev_id_T evid, pk_ev_cb_fn *cb, void *
mtx_lock(&pk_ev_mstr.mtxs[evmgr]);
if (pk_ev_mstr.mgrs[evmgr]->ev[evid].right_ev_cbs == pk_ev_mstr.mgrs[evmgr]->rn_cb) {
size_t old_sz = pk_ev_inner_calc_sz(pk_ev_mstr.mgrs[evmgr]->rn_ev, pk_ev_mstr.mgrs[evmgr]->rn_cb, NULL, NULL);
- new_size = PK_MAX(2, PK_MIN(255, pk_ev_mstr.mgrs[evmgr]->rn_cb * PK_EV_GROW_RATIO));
+ new_size = PK_MAX(2, PK_MIN(PK_EV_MAX_CB_COUNT, pk_ev_mstr.mgrs[evmgr]->rn_cb * PK_EV_GROW_RATIO));
if (new_size == pk_ev_mstr.mgrs[evmgr]->rn_cb) {
PK_LOG_ERR("[pkev.h] need more room, but failed to grow cb count.\n");
mtx_unlock(&pk_ev_mstr.mtxs[evmgr]);
@@ -390,7 +396,7 @@ pk_ev_register_cb(pk_ev_mgr_id_T evmgr, pk_ev_id_T evid, pk_ev_cb_fn *cb, void *
void
pk_ev_emit(pk_ev_mgr_id_T evmgr, pk_ev_id_T evid, void *user_emit_data)
{
- assert(evmgr < 64);
+ assert(evmgr < PK_EV_INIT_MGR_COUNT);
uint8_t i;
for (i = 0; i < pk_ev_mstr.mgrs[evmgr]->ev[evid].right_ev_cbs; ++i) {
if (pk_ev_mstr.mgrs[evmgr] == nullptr) continue;