~james-page/ubuntu/saucy/openvswitch/1.12-snapshot

« back to all changes in this revision

Viewing changes to datapath/linux/compat/include/linux/list.h

  • Committer: James Page
  • Date: 2013-08-21 10:16:57 UTC
  • mfrom: (1.1.20)
  • Revision ID: james.page@canonical.com-20130821101657-3o0z0qeiv5zkwlzi
New upstream snapshot

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __LINUX_LIST_WRAPPER_H
 
2
#define __LINUX_LIST_WRAPPER_H 1
 
3
 
 
4
#include_next <linux/list.h>
 
5
 
 
6
#ifndef hlist_entry_safe
 
7
#define hlist_entry_safe(ptr, type, member) \
 
8
        ({ typeof(ptr) ____ptr = (ptr); \
 
9
         ____ptr ? hlist_entry(____ptr, type, member) : NULL; \
 
10
         })
 
11
 
 
12
#undef hlist_for_each_entry
 
13
#define hlist_for_each_entry(pos, head, member)                         \
 
14
        for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\
 
15
             pos;                                                       \
 
16
             pos = hlist_entry_safe((pos)->member.next, typeof(*(pos)), member))
 
17
 
 
18
#undef hlist_for_each_entry_safe
 
19
#define hlist_for_each_entry_safe(pos, n, head, member)                 \
 
20
        for (pos = hlist_entry_safe((head)->first, typeof(*pos), member);\
 
21
             pos && ({ n = pos->member.next; 1; });                     \
 
22
             pos = hlist_entry_safe(n, typeof(*pos), member))
 
23
 
 
24
#endif
 
25
 
 
26
#endif