mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-11-24 02:25:28 +00:00
30 lines
791 B
C
30 lines
791 B
C
|
/* list.h - Double link list implementation
|
||
|
*/
|
||
|
|
||
|
#ifndef _LIST_H_
|
||
|
#define _LIST_H_
|
||
|
|
||
|
#include <stddef.h>
|
||
|
|
||
|
struct list_head {
|
||
|
struct list_head *next;
|
||
|
struct list_head *prev;
|
||
|
};
|
||
|
|
||
|
void init_list_head(struct list_head *head);
|
||
|
void list_insert(struct list_head *pos, struct list_head *node);
|
||
|
void list_insert_end(struct list_head *head, struct list_head *node);
|
||
|
void list_pop(struct list_head *pos);
|
||
|
void list_pop_end(struct list_head *head);
|
||
|
|
||
|
#define list_entry(ptr, type, member) ({ \
|
||
|
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
|
||
|
(type *)( (char *)__mptr - offsetof(type,member) );})
|
||
|
|
||
|
#define list_for_each(pos, head) \
|
||
|
for (pos = (head)->next; pos != (head); pos = pos->next)
|
||
|
|
||
|
#define list_for_each_r(pos, head) \
|
||
|
for (pos = (head)->prev; pos != (head); pos = pos->prev)
|
||
|
|
||
|
#endif
|