Add a backport for flush_delayed_work()
[~emulex/for-vlad/old/compat.git] / include / linux / compat-2.6.22.h
1 #ifndef LINUX_26_22_COMPAT_H
2 #define LINUX_26_22_COMPAT_H
3
4 #include <linux/autoconf.h>
5 #include <linux/version.h>
6
7 /* Compat work for 2.6.21 */
8 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
9
10 #include <linux/pci.h>
11 #include <linux/skbuff.h>
12
13 /* reuse ax25_ptr */
14 #define ieee80211_ptr ax25_ptr
15
16 #ifdef CONFIG_AX25
17 #error Compat reuses the AX.25 pointer so that may not be enabled!
18 #endif
19
20 static inline unsigned char *skb_mac_header(const struct sk_buff *skb)
21 {
22         return skb->mac.raw;
23 }
24
25 static inline void skb_set_mac_header(struct sk_buff *skb, int offset)
26 {
27         skb->mac.raw = skb->data + offset;
28 }
29
30 static inline void skb_reset_mac_header(struct sk_buff *skb)
31 {
32         skb->mac.raw = skb->data;
33 }
34
35 static inline void skb_reset_network_header(struct sk_buff *skb)
36 {
37         skb->nh.raw = skb->data;
38 }
39
40 static inline void skb_set_network_header(struct sk_buff *skb, int offset)
41 {
42         skb->nh.raw = skb->data + offset;
43 }
44
45 static inline void skb_set_transport_header(struct sk_buff *skb, int offset)
46 {
47         skb->h.raw = skb->data + offset;
48 }
49
50 static inline unsigned char *skb_transport_header(struct sk_buff *skb)
51 {
52         return skb->h.raw;
53 }
54
55 static inline unsigned char *skb_network_header(const struct sk_buff *skb)
56 {
57         return skb->nh.raw;
58 }
59
60 static inline unsigned char *skb_tail_pointer(const struct sk_buff *skb)
61 {
62         return skb->tail;
63 }
64
65 static inline struct iphdr *ip_hdr(const struct sk_buff *skb)
66 {
67         return (struct iphdr *)skb_network_header(skb);
68 }
69
70 static inline void skb_copy_from_linear_data(const struct sk_buff *skb,
71                                              void *to,
72                                              const unsigned int len)
73 {
74         memcpy(to, skb->data, len);
75 }
76
77 static inline void skb_copy_from_linear_data_offset(const struct sk_buff *skb,
78                                                     const int offset, void *to,
79                                                     const unsigned int len)
80 {
81         memcpy(to, skb->data + offset, len);
82 }
83
84 #define __maybe_unused  __attribute__((unused))
85
86 #define uninitialized_var(x) x = x
87
88 /* This will lead to very weird behaviour... */
89 #define NLA_BINARY NLA_STRING
90
91 static inline int pci_set_mwi(struct pci_dev *dev)
92 {
93         return -ENOSYS;
94 }
95
96 static inline void pci_clear_mwi(struct pci_dev *dev)
97 {
98 }
99
100 #define list_first_entry(ptr, type, member) \
101         list_entry((ptr)->next, type, member)
102
103 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)) */
104
105 #endif /* LINUX_26_22_COMPAT_H */