This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/baseband-devel@lists.osmocom.org/.
Christian Vogel vogelchr at vogel.cxInstead of calling schedule_timer() inside the
callback (which causes list-reshuffling) just call
rearm_timer(self,milliseconds) to have it re-execute
after the specified time.
---
src/target/firmware/comm/timer.c | 6 ++++++
src/target/firmware/include/comm/timer.h | 1 +
2 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/src/target/firmware/comm/timer.c b/src/target/firmware/comm/timer.c
index 6a649ae..d135e24 100644
--- a/src/target/firmware/comm/timer.c
+++ b/src/target/firmware/comm/timer.c
@@ -63,6 +63,12 @@ void schedule_timer(struct osmo_timer_list *timer, int milliseconds)
add_timer(timer);
}
+void rearm_timer(struct osmo_timer_list *timer, int milliseconds)
+{
+ timer->expires = jiffies + ((milliseconds * TIMER_HZ) / 1000);
+ timer->active = 1;
+}
+
void del_timer(struct osmo_timer_list *timer)
{
if (timer->in_list) {
diff --git a/src/target/firmware/include/comm/timer.h b/src/target/firmware/include/comm/timer.h
index db7d1a5..6ca51b5 100644
--- a/src/target/firmware/include/comm/timer.h
+++ b/src/target/firmware/include/comm/timer.h
@@ -60,6 +60,7 @@ extern unsigned long volatile jiffies;
*/
void add_timer(struct osmo_timer_list *timer);
void schedule_timer(struct osmo_timer_list *timer, int miliseconds);
+void rearm_timer(struct osmo_timer_list *timer, int milliseconds);
void del_timer(struct osmo_timer_list *timer);
int timer_pending(struct osmo_timer_list *timer);
--
1.7.0.4