summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRaul E Rangel <rrangel@chromium.org>2021-11-01 13:40:14 -0600
committerPatrick Georgi <pgeorgi@google.com>2021-11-03 08:29:16 +0000
commit4c8c8442ab6d3b0cdc267f5c479dc5d54bf87525 (patch)
tree29b2dde483588e9db54b5093d2b18cbd75e36d40 /src
parent74a06296608e4c868e101ea47c0a1389977ecd91 (diff)
lib/list: Add list_append
This method will add a node to the end of the list. BUG=b:179699789 TEST=Boot guybrush to the OS Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: I1792e40f789e3ef16ceca65ce4cae946e08583d1 Reviewed-on: https://review.coreboot.org/c/coreboot/+/58805 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'src')
-rw-r--r--src/include/list.h2
-rw-r--r--src/lib/list.c8
2 files changed, 10 insertions, 0 deletions
diff --git a/src/include/list.h b/src/include/list.h
index 6f0b54d818..bfd92a747b 100644
--- a/src/include/list.h
+++ b/src/include/list.h
@@ -15,6 +15,8 @@ void list_remove(struct list_node *node);
void list_insert_after(struct list_node *node, struct list_node *after);
// Insert list_node node before list_node before in a doubly linked list.
void list_insert_before(struct list_node *node, struct list_node *before);
+// Appends the node to the end of the list.
+void list_append(struct list_node *node, struct list_node *head);
#define list_for_each(ptr, head, member) \
for ((ptr) = container_of((head).next, typeof(*(ptr)), member); \
diff --git a/src/lib/list.c b/src/lib/list.c
index 01d5c8914e..c3f8ee42c8 100644
--- a/src/lib/list.c
+++ b/src/lib/list.c
@@ -28,3 +28,11 @@ void list_insert_before(struct list_node *node, struct list_node *before)
if (node->prev)
node->prev->next = node;
}
+
+void list_append(struct list_node *node, struct list_node *head)
+{
+ while (head->next)
+ head = head->next;
+
+ list_insert_after(node, head);
+}