From fed176ab90fe51ba503e2b863fed48dff0b7c4e7 Mon Sep 17 00:00:00 2001 From: "Harald Welte (local)" Date: Fri, 14 Aug 2009 14:30:00 +0200 Subject: [PATCH] implement a timer_list check before we return into the select() loop this helps us to debug timer_list corruption --- openbsc/src/select.c | 2 ++ openbsc/src/timer.c | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/openbsc/src/select.c b/openbsc/src/select.c index 7f45426d0..c11f3a511 100644 --- a/openbsc/src/select.c +++ b/openbsc/src/select.c @@ -78,6 +78,8 @@ int bsc_select_main(int polling) FD_SET(ufd->fd, &exceptset); } + bsc_timer_check(); + if (!polling) bsc_prepare_timers(); rc = select(maxfd+1, &readset, &writeset, &exceptset, polling ? &no_time : bsc_nearest_timer()); diff --git a/openbsc/src/timer.c b/openbsc/src/timer.c index a942ffd6d..6f974a2c3 100644 --- a/openbsc/src/timer.c +++ b/openbsc/src/timer.c @@ -172,3 +172,14 @@ restart: return work; } + +int bsc_timer_check(void) +{ + struct timer_list *timer; + int i; + + llist_for_each_entry(timer, &timer_list, entry) { + i++; + } + return i; +}