|
|
|
@ -1,11 +1,10 @@
|
|
|
|
|
#ifndef LIST_H |
|
|
|
|
#define LIST_H |
|
|
|
|
|
|
|
|
|
/* from linux kernel */ |
|
|
|
|
/* from linux kernel (with some changes for "iso" c) */ |
|
|
|
|
|
|
|
|
|
#define container_of(ptr, type, member) ({ \ |
|
|
|
|
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
|
|
|
|
|
(type *)( (char *)__mptr - offsetof(type,member) );}) |
|
|
|
|
#define container_of(ptr, type, member) \ |
|
|
|
|
((type *)( (char *)(__typeof__( ((type *)0)->member ) *)(ptr) - offsetof(type,member))) |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* list_entry - get the struct for this entry |
|
|
|
@ -38,10 +37,10 @@ void things_list_clear(listhead *head); /* listhead member must be the first mem
|
|
|
|
|
* @member: the name of the list_struct within the struct. |
|
|
|
|
*/ |
|
|
|
|
#define list_for_each_entry(pos, head, member) \ |
|
|
|
|
for (pos = list_entry((head)->next, typeof(*pos), member); \
|
|
|
|
|
for (pos = list_entry((head)->next, __typeof__(*pos), member); \
|
|
|
|
|
/* prefetch(pos->member.next), */ \
|
|
|
|
|
&pos->member != (head); \
|
|
|
|
|
pos = list_entry(pos->member.next, typeof(*pos), member)) |
|
|
|
|
pos = list_entry(pos->member.next, __typeof__(*pos), member)) |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* list_for_each_entry_safe - iterate over list of given type safe against removal of list entry |
|
|
|
@ -51,10 +50,10 @@ void things_list_clear(listhead *head); /* listhead member must be the first mem
|
|
|
|
|
* @member:>the name of the list_struct within the struct. |
|
|
|
|
*/ |
|
|
|
|
#define list_for_each_entry_safe(pos, n, head, member) \ |
|
|
|
|
for (pos = list_entry((head)->next, typeof(*pos), member), \
|
|
|
|
|
n = list_entry(pos->member.next, typeof(*pos), member); \
|
|
|
|
|
for (pos = list_entry((head)->next, __typeof__(*pos), member), \
|
|
|
|
|
n = list_entry(pos->member.next, __typeof__(*pos), member); \
|
|
|
|
|
&pos->member != (head); \
|
|
|
|
|
pos = n, n = list_entry(n->member.next, typeof(*n), member)) |
|
|
|
|
pos = n, n = list_entry(n->member.next, __typeof__(*n), member)) |
|
|
|
|
|
|
|
|
|
#define list_empty(head) ((head) == (head)->next) |
|
|
|
|
|
|
|
|
|