summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2022-09-24 14:38:04 +0100
committerAidan MacDonald <amachronic@protonmail.com>2022-10-16 16:10:24 +0100
commitee9679993bddead1341bf7f36a97ef982f25a396 (patch)
treed009889b9e2c7389430f1d859fb214bb4c5c105d
parent8bf80360212358591aa92af1591bddc7abaa47fb (diff)
downloadrockbox-ee9679993b.tar.gz
rockbox-ee9679993b.zip
linked list: inline list init functions
These functions are so trivial it's always cheaper to inline them. Change-Id: Ie0c77c8b6e7a716312105445a22e62ff57a76d90
-rw-r--r--firmware/common/linked_list.c29
-rw-r--r--firmware/include/linked_list.h34
2 files changed, 31 insertions, 32 deletions
diff --git a/firmware/common/linked_list.c b/firmware/common/linked_list.c
index b8f2dd181c..7697a052ca 100644
--- a/firmware/common/linked_list.c
+++ b/firmware/common/linked_list.c
@@ -46,15 +46,6 @@ static struct ll_node * ll_search_prev(struct ll_head *list,
}
/**
- * Initializes the singly-linked list
- */
-void ll_init(struct ll_head *list)
-{
- list->head = NULL;
- list->tail = NULL;
-}
-
-/**
* Adds a node to s singly-linked list using "insert next"
*/
void ll_insert_next(struct ll_head *list, struct ll_node *node,
@@ -143,18 +134,6 @@ void ll_remove(struct ll_head *list, struct ll_node *node)
/** (L)inked (L)ist (D)ouble **/
/**
- * Initializes the doubly-linked list
- */
-void lld_init(struct lld_head *list)
-{
- list->head = NULL;
- list->tail = NULL;
-
- /* tail could be stored in first item's prev pointer but this simplifies
- the routines and maintains the non-circularity */
-}
-
-/**
* Adds a node to a doubly-linked list using "insert first"
*/
void lld_insert_first(struct lld_head *list, struct lld_node *node)
@@ -238,14 +217,6 @@ static inline struct lldc_node * lldc_insert(struct lldc_head *list,
}
/**
- * Initializes the doubly-linked circular list
- */
-void lldc_init(struct lldc_head *list)
-{
- list->head = NULL;
-}
-
-/**
* Adds a node to a doubly-linked circular list using "insert first"
*/
void lldc_insert_first(struct lldc_head *list, struct lldc_node *node)
diff --git a/firmware/include/linked_list.h b/firmware/include/linked_list.h
index c678cfa7eb..b307977f2e 100644
--- a/firmware/include/linked_list.h
+++ b/firmware/include/linked_list.h
@@ -21,6 +21,8 @@
#ifndef LINKED_LIST_H
#define LINKED_LIST_H
+#include <stddef.h>
+
/***
** NOTES:
** Node field order chosen so that one type can alias the other for forward
@@ -51,7 +53,15 @@ struct ll_node
struct ll_node *next; /* Next list item */
};
-void ll_init(struct ll_head *list);
+/**
+ * Initializes the singly-linked list
+ */
+static inline void ll_init(struct ll_head *list)
+{
+ list->head = NULL;
+ list->tail = NULL;
+}
+
void ll_insert_next(struct ll_head *list, struct ll_node *node,
struct ll_node *newnode);
void ll_insert_last(struct ll_head *list, struct ll_node *node);
@@ -81,7 +91,18 @@ struct lld_node
struct lld_node *prev; /* Previous list item */
};
-void lld_init(struct lld_head *list);
+/**
+ * Initializes the doubly-linked list
+ */
+static inline void lld_init(struct lld_head *list)
+{
+ list->head = NULL;
+ list->tail = NULL;
+
+ /* tail could be stored in first item's prev pointer but this simplifies
+ the routines and maintains the non-circularity */
+}
+
void lld_insert_first(struct lld_head *list, struct lld_node *node);
void lld_insert_last(struct lld_head *list, struct lld_node *node);
void lld_remove(struct lld_head *list, struct lld_node *node);
@@ -106,7 +127,14 @@ struct lldc_node
struct lldc_node *prev; /* Previous list item */
};
-void lldc_init(struct lldc_head *list);
+/**
+ * Initializes the doubly-linked circular list
+ */
+static inline void lldc_init(struct lldc_head *list)
+{
+ list->head = NULL;
+}
+
void lldc_insert_first(struct lldc_head *list, struct lldc_node *node);
void lldc_insert_last(struct lldc_head *list, struct lldc_node *node);
void lldc_remove(struct lldc_head *list, struct lldc_node *node);