compat: Add support for 3.12
[~emulex/for-vlad/old/compat.git] / include / linux / compat-3.7.h
1 #ifndef LINUX_3_7_COMPAT_H
2 #define LINUX_3_7_COMPAT_H
3
4 #include <linux/version.h>
5
6 #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
7
8 #include <linux/workqueue.h>
9 #include <linux/timer.h>
10 #include <linux/pci.h>
11 #include <linux/pci_regs.h>
12 #include <linux/mm.h>
13 #include <linux/user_namespace.h>
14 #include <linux/file.h>
15 #include <linux/fdtable.h>
16 #include <linux/seq_file.h>
17
18 #define VM_DONTDUMP    VM_NODUMP
19
20 #ifdef CONFIG_USER_NS
21
22 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
23 static inline struct user_namespace *seq_user_ns(struct seq_file *seq)
24 {
25         struct file *f = container_of((void *) seq, struct file, private_data);
26
27         return f->f_cred->user_ns;
28 }
29 #else
30 static inline struct user_namespace *seq_user_ns(struct seq_file *seq)
31 {
32         return current_user_ns();
33 }
34 #endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38)) */
35
36 #else
37 static inline struct user_namespace *seq_user_ns(struct seq_file *seq)
38 {
39         extern struct user_namespace init_user_ns;
40         return &init_user_ns;
41 }
42 #endif /* CONFIG_USER_NS */
43
44 #define netlink_notify_portid(__notify) (__notify->pid)
45 #define genl_info_snd_portid(__genl_info) (__genl_info->snd_pid)
46 #define NETLINK_CB_PORTID(__skb) NETLINK_CB(cb->skb).pid
47
48 #define mod_delayed_work LINUX_BACKPORT(mod_delayed_work)
49 bool mod_delayed_work(struct workqueue_struct *wq, struct delayed_work *dwork,
50                       unsigned long delay);
51
52 /* Backports tty_lock: Localise the lock */
53 #define tty_lock(__tty) tty_lock()
54 #define tty_unlock(__tty) tty_unlock()
55
56 #define tty_port_register_device(port, driver, index, device) \
57         tty_register_device(driver, index, device)
58
59 #define pcie_capability_read_word LINUX_BACKPORT(pcie_capability_read_word)
60 int pcie_capability_read_word(struct pci_dev *dev, int pos, u16 *val);
61 #define pcie_capability_read_dword LINUX_BACKPORT(pcie_capability_read_dword)
62 int pcie_capability_read_dword(struct pci_dev *dev, int pos, u32 *val);
63 #define pcie_capability_write_word LINUX_BACKPORT(pcie_capability_write_word)
64 int pcie_capability_write_word(struct pci_dev *dev, int pos, u16 val);
65 #define pcie_capability_write_dword LINUX_BACKPORT(pcie_capability_write_dword)
66 int pcie_capability_write_dword(struct pci_dev *dev, int pos, u32 val);
67 #define pcie_capability_clear_and_set_word LINUX_BACKPORT(pcie_capability_clear_and_set_word)
68 int pcie_capability_clear_and_set_word(struct pci_dev *dev, int pos,
69                                        u16 clear, u16 set);
70 #define pcie_capability_clear_and_set_dword LINUX_BACKPORT(pcie_capability_clear_and_set_dword)
71 int pcie_capability_clear_and_set_dword(struct pci_dev *dev, int pos,
72                                         u32 clear, u32 set);
73 #define pcie_capability_set_word LINUX_BACKPORT(pcie_capability_set_word)
74 static inline int pcie_capability_set_word(struct pci_dev *dev, int pos,
75                                            u16 set)
76 {
77         return pcie_capability_clear_and_set_word(dev, pos, 0, set);
78 }
79
80 #define pcie_capability_set_dword LINUX_BACKPORT(pcie_capability_set_dword)
81 static inline int pcie_capability_set_dword(struct pci_dev *dev, int pos,
82                                             u32 set)
83 {
84         return pcie_capability_clear_and_set_dword(dev, pos, 0, set);
85 }
86
87 #define pcie_capability_clear_word LINUX_BACKPORT(pcie_capability_clear_word)
88 static inline int pcie_capability_clear_word(struct pci_dev *dev, int pos,
89                                              u16 clear)
90 {
91         return pcie_capability_clear_and_set_word(dev, pos, clear, 0);
92 }
93
94 #define pcie_capability_clear_dword LINUX_BACKPORT(pcie_capability_clear_dword)
95 static inline int pcie_capability_clear_dword(struct pci_dev *dev, int pos,
96                                               u32 clear)
97 {
98         return pcie_capability_clear_and_set_dword(dev, pos, clear, 0);
99 }
100
101 #define PCI_EXP_LNKSTA2                 50      /* Link Status 2 */
102
103 #define MAX_IDR_SHIFT (sizeof(int)*8 - 1)
104 #define MAX_IDR_BIT (1U << MAX_IDR_SHIFT)
105 #define MAX_IDR_MASK (MAX_IDR_BIT - 1)
106
107 /* IPoIB section */
108
109 enum {
110         IFLA_IPOIB_UNSPEC,
111         IFLA_IPOIB_PKEY,
112         IFLA_IPOIB_MODE,
113         IFLA_IPOIB_UMCAST,
114         __IFLA_IPOIB_MAX
115 };
116
117 enum {
118         IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
119         IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
120 };
121
122 #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
123
124 #define FMODE_PATH              ((__force fmode_t)0x4000)
125
126 #define fget_light LINUX_BACKPORT(fget_light)
127 extern struct file *fget_light(unsigned int fd, int *fput_needed);
128
129 #else /* (LINUX_VERSION_CODE > KERNEL_VERSION(3,7,0)) */
130 #define netlink_notify_portid(__notify) (__notify->portid)
131 #define genl_info_snd_portid(__genl_info) (__genl_info->snd_portid)
132 #define NETLINK_CB_PORTID(__skb) NETLINK_CB(cb->skb).portid
133 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) */
134
135 #endif /* LINUX_3_7_COMPAT_H */