Convert olsr_timer_entry from avl to list (no lookup necessary at all)
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Tue, 15 Feb 2011 09:03:19 +0000 (10:03 +0100)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Tue, 15 Feb 2011 09:03:19 +0000 (10:03 +0100)
src/olsr_timer.c
src/olsr_timer.h

index 1e5e7b5..8891409 100644 (file)
@@ -28,7 +28,7 @@ static struct list_entity timer_wheel[TIMER_WHEEL_SLOTS];
 static uint32_t timer_last_run;        /* remember the last timeslot walk */
 
 /* Memory cookie for the timer manager */
-struct avl_tree timerinfo_tree;
+struct list_entity timerinfo_list;
 static struct olsr_memcookie_info *timer_mem_cookie = NULL;
 static struct olsr_memcookie_info *timerinfo_cookie = NULL;
 
@@ -56,7 +56,6 @@ olsr_timer_init(void)
   olsr_timer_updateClock();
 
   /* init lists */
-  list_init_head(&socket_head);
   for (idx = 0; idx < TIMER_WHEEL_SLOTS; idx++) {
     list_init_head(&timer_wheel[idx]);
   }
@@ -69,7 +68,7 @@ olsr_timer_init(void)
   /* Allocate a cookie for the block based memory manager. */
   timer_mem_cookie = olsr_memcookie_add("timer_entry", sizeof(struct olsr_timer_entry));
 
-  avl_init(&timerinfo_tree, avl_comp_strcasecmp, false, NULL);
+  list_init_head(&timerinfo_list);
   timerinfo_cookie = olsr_memcookie_add("timerinfo", sizeof(struct olsr_timer_info));
 }
 
@@ -98,7 +97,7 @@ olsr_timer_cleanup(void)
 
   /* free all timerinfos */
   OLSR_FOR_ALL_TIMERS(ti, iterator) {
-    avl_delete(&timerinfo_tree, &ti->node);
+    list_remove(&ti->node);
     free(ti->name);
     olsr_memcookie_free(timerinfo_cookie, ti);
   }
@@ -212,11 +211,10 @@ olsr_timer_add(const char *name, timer_cb_func callback, bool periodic) {
 
   ti = olsr_memcookie_malloc(timerinfo_cookie);
   ti->name = strdup(name);
-  ti->node.key = ti->name;
   ti->callback = callback;
   ti->periodic = periodic;
 
-  avl_insert(&timerinfo_tree, &ti->node);
+  list_add_tail(&timerinfo_list, &ti->node);
   return ti;
 }
 
index 3a27265..e40d713 100644 (file)
@@ -25,8 +25,8 @@ typedef void (*timer_cb_func) (void *);
  * type (periodic/non-periodic) and callback.
  */
 struct olsr_timer_info {
-  /* node of timerinfo tree */
-  struct avl_node node;
+  /* node of timerinfo list */
+  struct list_entity node;
 
   /* name of this timer class */
   char *name;
@@ -87,8 +87,8 @@ struct timeval_buf {
 };
 
 /* Timers */
-extern struct avl_tree EXPORT(timerinfo_tree);
-#define OLSR_FOR_ALL_TIMERS(ti, iterator) avl_for_each_element_safe(&timerinfo_tree, ti, node, iterator)
+extern struct list_entity EXPORT(timerinfo_list);
+#define OLSR_FOR_ALL_TIMERS(ti, iterator) list_for_each_element_safe(&timerinfo_list, ti, node, iterator)
 
 void olsr_timer_init(void);
 void olsr_timer_cleanup(void);