Browse Source

Free irqs list

Serj Kalichev 10 years ago
parent
commit
0b18e79f9c
3 changed files with 17 additions and 1 deletions
  1. 1 1
      birq.c
  2. 2 0
      irq.h
  3. 14 0
      irq_parse.c

+ 1 - 1
birq.c

@@ -157,7 +157,7 @@ int main(int argc, char **argv)
 
 end:
 	/* Free data structures */
-	lub_list_free(irqs);
+	irq_list_free(irqs);
 
 	retval = 0;
 err:

+ 2 - 0
irq.h

@@ -14,5 +14,7 @@ int irq_list_compare(const void *first, const void *second);
 
 /* IRQ list functions */
 int irq_list_populate(lub_list_t *irqs);
+int irq_list_free(lub_list_t *irqs);
+
 
 #endif

+ 14 - 0
irq_parse.c

@@ -54,6 +54,20 @@ static irq_t * irq_list_add(lub_list_t *irqs, int num)
 	return new;
 }
 
+int irq_list_free(lub_list_t *irqs)
+{
+	lub_list_node_t *iter;
+	while (iter = lub_list__get_head(irqs)) {
+		irq_t *irq;
+		irq = (irq_t *)lub_list_node__get_data(iter);
+		irq_free(irq);
+		lub_list_del(irqs, iter);
+		lub_list_node_free(iter);
+	}
+	lub_list_free(irqs);
+	return 0;
+}
+
 static int irq_list_show(lub_list_t *irqs)
 {
 	lub_list_node_t *iter;