From 4f398f6126c20f40a277abb5e554e3f532cdddef Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 25 May 2026 06:48:13 +0900 Subject: [PATCH] mruby-task: prefix queue helpers with `mrb_task_` `q_insert_task` and `q_delete_task` were exporting bare `q_*` names from libmruby.a -- single-letter prefixes don't belong to the gem's namespace and risk colliding with anything else linked in. Rename to `mrb_task_q_insert` / `mrb_task_q_delete`, matching the `mrb_task_*` convention already used for the rest of the gem's externally visible symbols. Callers in task.c and task_queue.c are updated to the new names. Closes #6858. Co-authored-by: Claude --- mrbgems/mruby-task/include/task.h | 4 +-- mrbgems/mruby-task/src/task.c | 50 ++++++++++++++--------------- mrbgems/mruby-task/src/task_queue.c | 12 +++---- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/mrbgems/mruby-task/include/task.h b/mrbgems/mruby-task/include/task.h index db5e8b7c5..0719fe018 100644 --- a/mrbgems/mruby-task/include/task.h +++ b/mrbgems/mruby-task/include/task.h @@ -166,8 +166,8 @@ task_check_scheduler_lock(mrb_state *mrb) } /* Priority-queue insert/delete - defined in task.c */ -void q_insert_task(mrb_state *mrb, mrb_task *t); -void q_delete_task(mrb_state *mrb, mrb_task *t); +void mrb_task_q_insert(mrb_state *mrb, mrb_task *t); +void mrb_task_q_delete(mrb_state *mrb, mrb_task *t); /* Task::Queue class registration - defined in task_queue.c */ void mrb_init_task_queue(mrb_state *mrb, struct RClass *task_class); diff --git a/mrbgems/mruby-task/src/task.c b/mrbgems/mruby-task/src/task.c index e6fdfc4fb..70f9e6233 100644 --- a/mrbgems/mruby-task/src/task.c +++ b/mrbgems/mruby-task/src/task.c @@ -148,7 +148,7 @@ q_get_queue(mrb_state *mrb, mrb_task *t) /* Insert task into queue based on priority (higher priority = lower number = earlier in queue) */ void -q_insert_task(mrb_state *mrb, mrb_task *t) +mrb_task_q_insert(mrb_state *mrb, mrb_task *t) { mrb_task **q = q_get_queue(mrb, t); mrb_task *curr = *q; @@ -172,7 +172,7 @@ q_insert_task(mrb_state *mrb, mrb_task *t) /* Delete task from its current queue */ void -q_delete_task(mrb_state *mrb, mrb_task *t) +mrb_task_q_delete(mrb_state *mrb, mrb_task *t) { mrb_task **q = q_get_queue(mrb, t); mrb_task *curr = *q; @@ -202,10 +202,10 @@ task_cleanup_if_stopped(mrb_state *mrb, mrb_task *t) if (t->status == MRB_TASK_STATUS_DORMANT || t->c.status == MRB_TASK_STOPPED) { /* Task is terminated but still in queue - remove it */ mrb_task_disable_irq(); - q_delete_task(mrb, t); + mrb_task_q_delete(mrb, t); if (t->status != MRB_TASK_STATUS_DORMANT) { t->status = MRB_TASK_STATUS_DORMANT; - q_insert_task(mrb, t); + mrb_task_q_insert(mrb, t); } mrb_task_enable_irq(); return TRUE; @@ -286,11 +286,11 @@ wake_up_join_waiters(mrb_state *mrb, mrb_task *completed_task) while (curr != NULL) { mrb_task *next = curr->next; if (curr->reason == MRB_TASK_REASON_JOIN && curr->wait.join == completed_task) { - q_delete_task(mrb, curr); + mrb_task_q_delete(mrb, curr); curr->status = MRB_TASK_STATUS_READY; curr->reason = MRB_TASK_REASON_NONE; curr->wait.join = NULL; - q_insert_task(mrb, curr); + mrb_task_q_insert(mrb, curr); /* If a higher-priority waiter is resumed from task context, * request a context switch after leaving the critical section. */ if (mrb->c != mrb->root_c && !switching_) { @@ -310,9 +310,9 @@ static void task_change_state(mrb_state *mrb, mrb_task *t, uint8_t new_status) { mrb_task_disable_irq(); - q_delete_task(mrb, t); + mrb_task_q_delete(mrb, t); t->status = new_status; - q_insert_task(mrb, t); + mrb_task_q_insert(mrb, t); mrb_task_enable_irq(); } @@ -369,9 +369,9 @@ execute_task(mrb_state *mrb, mrb_task *t) if (t->c.status == MRB_TASK_STOPPED) { switching_ = FALSE; mrb_task_disable_irq(); - q_delete_task(mrb, t); + mrb_task_q_delete(mrb, t); t->status = MRB_TASK_STATUS_DORMANT; - q_insert_task(mrb, t); + mrb_task_q_insert(mrb, t); mrb_task_enable_irq(); /* Wake up tasks waiting on join */ @@ -421,10 +421,10 @@ mrb_tick(mrb_state *mrb) if (curr->reason == MRB_TASK_REASON_SLEEP) { if ((int32_t)(curr->wait.wakeup_tick - tick_) <= 0) { /* Time to wake up */ - q_delete_task(mrb, curr); + mrb_task_q_delete(mrb, curr); curr->status = MRB_TASK_STATUS_READY; curr->reason = MRB_TASK_REASON_NONE; - q_insert_task(mrb, curr); + mrb_task_q_insert(mrb, curr); switching_ = TRUE; } else if (curr->wait.wakeup_tick < next_wakeup) { @@ -551,7 +551,7 @@ sleep_us_impl(mrb_state *mrb, uint32_t usec) mrb_task_disable_irq(); /* Remove from ready queue */ - q_delete_task(mrb, t); + mrb_task_q_delete(mrb, t); /* Move to waiting queue */ t->status = MRB_TASK_STATUS_WAITING; @@ -572,7 +572,7 @@ sleep_us_impl(mrb_state *mrb, uint32_t usec) (int32_t)(t->wait.wakeup_tick - wakeup_tick_) < 0) { wakeup_tick_ = t->wait.wakeup_tick; } - q_insert_task(mrb, t); + mrb_task_q_insert(mrb, t); mrb_task_enable_irq(); @@ -597,9 +597,9 @@ mrb_f_sleep(mrb_state *mrb, mrb_value self) mrb_task *t = q_ready_; if (t) { mrb_task_disable_irq(); - q_delete_task(mrb, t); + mrb_task_q_delete(mrb, t); t->status = MRB_TASK_STATUS_SUSPENDED; - q_insert_task(mrb, t); + mrb_task_q_insert(mrb, t); mrb_task_enable_irq(); switching_ = TRUE; } @@ -666,7 +666,7 @@ task_create_common(mrb_state *mrb, const struct RProc *proc, task_init_context(mrb, t, proc); mrb_task_disable_irq(); - q_insert_task(mrb, t); + mrb_task_q_insert(mrb, t); mrb_task_enable_irq(); if (q_ready_ && q_ready_->status == MRB_TASK_STATUS_RUNNING) { @@ -1024,8 +1024,8 @@ mrb_task_set_priority(mrb_state *mrb, mrb_value self) /* Re-sort in queue if task is ready */ if (t->status == MRB_TASK_STATUS_READY || t->status == MRB_TASK_STATUS_RUNNING) { - q_delete_task(mrb, t); - q_insert_task(mrb, t); + mrb_task_q_delete(mrb, t); + mrb_task_q_insert(mrb, t); } mrb_task_enable_irq(); @@ -1100,11 +1100,11 @@ mrb_task_join(mrb_state *mrb, mrb_value self) /* Wait for task to complete */ mrb_task_disable_irq(); - q_delete_task(mrb, current); + mrb_task_q_delete(mrb, current); current->status = MRB_TASK_STATUS_WAITING; current->reason = MRB_TASK_REASON_JOIN; current->wait.join = t; - q_insert_task(mrb, current); + mrb_task_q_insert(mrb, current); mrb_task_enable_irq(); /* Trigger context switch */ @@ -1162,7 +1162,7 @@ mrb_execute_proc_synchronously(mrb_state *mrb, mrb_value proc_val, mrb_int argc, /* 3. Move task from DORMANT to READY */ mrb_task_disable_irq(); t->status = MRB_TASK_STATUS_READY; - q_insert_task(mrb, t); + mrb_task_q_insert(mrb, t); mrb_task_enable_irq(); /* 4. Execute the task in a dedicated loop (no context switching) */ @@ -1186,7 +1186,7 @@ mrb_execute_proc_synchronously(mrb_state *mrb, mrb_value proc_val, mrb_int argc, /* 6. Free the temporary task's resources */ mrb_task_disable_irq(); - q_delete_task(mrb, t); + mrb_task_q_delete(mrb, t); mrb_task_enable_irq(); /* Prevent double-free: clear Data object's type before freeing task */ @@ -1362,10 +1362,10 @@ terminate_task_internal(mrb_state *mrb, mrb_task *t) if (t->status == MRB_TASK_STATUS_DORMANT) return; mrb_task_disable_irq(); - q_delete_task(mrb, t); + mrb_task_q_delete(mrb, t); t->status = MRB_TASK_STATUS_DORMANT; t->c.status = MRB_TASK_STOPPED; - q_insert_task(mrb, t); + mrb_task_q_insert(mrb, t); mrb_task_enable_irq(); wake_up_join_waiters(mrb, t); diff --git a/mrbgems/mruby-task/src/task_queue.c b/mrbgems/mruby-task/src/task_queue.c index bf1884c38..11175ff6f 100644 --- a/mrbgems/mruby-task/src/task_queue.c +++ b/mrbgems/mruby-task/src/task_queue.c @@ -36,11 +36,11 @@ queue_wake_one_waiter(mrb_state *mrb, mrb_task_queue *q) while (curr) { mrb_task *next = curr->next; if (curr->reason == MRB_TASK_REASON_QUEUE && curr->wait.queue == q) { - q_delete_task(mrb, curr); + mrb_task_q_delete(mrb, curr); curr->status = MRB_TASK_STATUS_READY; curr->reason = MRB_TASK_REASON_NONE; curr->wait.queue = NULL; - q_insert_task(mrb, curr); + mrb_task_q_insert(mrb, curr); switching_ = TRUE; break; } @@ -59,11 +59,11 @@ queue_wake_all_waiters(mrb_state *mrb, mrb_task_queue *q) while (curr) { mrb_task *next = curr->next; if (curr->reason == MRB_TASK_REASON_QUEUE && curr->wait.queue == q) { - q_delete_task(mrb, curr); + mrb_task_q_delete(mrb, curr); curr->status = MRB_TASK_STATUS_READY; curr->reason = MRB_TASK_REASON_NONE; curr->wait.queue = NULL; - q_insert_task(mrb, curr); + mrb_task_q_insert(mrb, curr); woke_any = TRUE; } curr = next; @@ -154,11 +154,11 @@ queue_pop_try(mrb_state *mrb, mrb_value self) /* Move current task to WAITING */ mrb_task *current = MRB2TASK(mrb); mrb_task_disable_irq(); - q_delete_task(mrb, current); + mrb_task_q_delete(mrb, current); current->status = MRB_TASK_STATUS_WAITING; current->reason = MRB_TASK_REASON_QUEUE; current->wait.queue = q; - q_insert_task(mrb, current); + mrb_task_q_insert(mrb, current); mrb_task_enable_irq(); switching_ = TRUE;