This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new dc096f951e list: update list.h
dc096f951e is described below

commit dc096f951e482a7c3061288213ff0b3209afffcd
Author: ligd <[email protected]>
AuthorDate: Fri Aug 11 18:28:10 2023 +0800

    list: update list.h
    
    The function name comes from list.h inside Linux,
    but rewrite from scratch to avoid the copyright issue.
    Since many developers are familiar with Linux list API.
    
    Signed-off-by: ligd <[email protected]>
---
 include/nuttx/list.h | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/include/nuttx/list.h b/include/nuttx/list.h
index 972db0fc27..ea03ce9c70 100644
--- a/include/nuttx/list.h
+++ b/include/nuttx/list.h
@@ -92,6 +92,8 @@
 #define list_entry(ptr, type, member) container_of(ptr, type, member)
 #define list_first_entry(list, type, member) container_of((list)->next, type, 
member)
 #define list_last_entry(list, type, member) container_of((list)->prev, type, 
member)
+#define list_next_entry(list, type, member) container_of((list)->member.next, 
type, member)
+#define list_prev_entry(list, type, member) container_of((list)->member.prev, 
type, member)
 
 #define list_add_after(entry, new_entry) list_add_head(entry, new_entry)
 #define list_add_head(list, item) \
@@ -129,6 +131,14 @@
     } \
   while (0)
 
+#define list_delete_init(item) \
+  do \
+    { \
+      list_delete(item); \
+      list_initialize(item); \
+    } \
+  while (0)
+
 #define list_remove_head_type(list, type, member) \
   ({ \
     FAR struct list_node *__node = list_remove_head(list); \
@@ -247,6 +257,11 @@
       &entry->member != (list); entry = temp, \
       temp = container_of(temp->member.next, type, member))
 
+#define list_for_every_entry_continue(list, head, type, member)    \
+  for ((list) = list_next_entry(list, type, member); \
+       &(list)->member != (head); \
+       (list) = list_next_entry(list, type, member))
+
 /* iterates over the list in reverse order, entry should be the container
  * structure type
  */

Reply via email to