[rk_list]: change macro definition for msvs do not support typeof macro

git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@40 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
ChenHengming 2015-08-06 02:52:02 +00:00
parent 1093d3bc52
commit 2f28e8f262

View file

@ -97,15 +97,21 @@ struct list_head
#define list_entry(ptr, type, member) \
((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
#define list_for_each_entry(pos, head, member) \
for (pos = list_entry((head)->next, typeof(*pos), member); \
&pos->member != (head); \
pos = list_entry(pos->member.next, typeof(*pos), member))
#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); \
/*
* due to typeof gcc extension list_for_each_entry and list_for_each_entry_safe
* can not be used on windows platform
* So we add a extra type parameter to the macro
*/
#define list_for_each_entry(pos, head, type, member) \
for (pos = list_entry((head)->next, type, member); \
&pos->member != (head); \
pos = list_entry(pos->member.next, type, member))
#define list_for_each_entry_safe(pos, n, head, type, member) \
for (pos = list_entry((head)->next, type, member), \
n = list_entry(pos->member.next, type, member); \
&pos->member != (head); \
pos = n, n = list_entry(n->member.next, typeof(*n), member))
pos = n, n = list_entry(n->member.next, type, member))
static inline void __list_add(struct list_head * _new,
struct list_head * prev,