X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/ea77b9c3fc7fb9bf9d7f9604fc187c8049212a2a..b60166b327a9108b07e3069fa6568a451529ffd9:/lunaix-os/includes/lunaix/ds/llist.h diff --git a/lunaix-os/includes/lunaix/ds/llist.h b/lunaix-os/includes/lunaix/ds/llist.h index a4797c3..1eec54b 100644 --- a/lunaix-os/includes/lunaix/ds/llist.h +++ b/lunaix-os/includes/lunaix/ds/llist.h @@ -12,7 +12,7 @@ #ifndef __LUNAIX_LLIST_H #define __LUNAIX_LLIST_H -#include +#include struct llist_header { @@ -50,6 +50,12 @@ llist_prepend(struct llist_header* head, struct llist_header* elem) __llist_add(elem, head, head->next); } +static inline void +llist_insert_after(struct llist_header* head, struct llist_header* elem) +{ + __llist_add(elem, head, head->next); +} + static inline void llist_delete(struct llist_header* elem) { @@ -81,6 +87,22 @@ llist_empty(struct llist_header* elem) */ #define list_entry(ptr, type, member) container_of(ptr, type, member) +/** + * list_next - get the struct for next entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_struct within the struct. + */ +#define list_next(current, type, member) container_of(current->member.next, type, member) + +/** + * list_prev - get the struct for prev entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_struct within the struct. + */ +#define list_prev(current, type, member) container_of(current->member.prev, type, member) + /** * list_for_each_entry - iterate over list of given type * @pos: the type * to use as a loop counter.