9724fa8f725fa2d16fec816a531ff3af794672d9
[~tnikolova/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 #ifndef VM_DONTDUMP
19 #define VM_DONTDUMP    VM_NODUMP
20 #endif
21
22 #ifndef INIT_DEFERRABLE_WORK
23 #define INIT_DEFERRABLE_WORK(_work, _func) INIT_DELAYED_WORK_DEFERRABLE(_work, _func)
24 #endif
25
26 #ifndef DECLARE_DEFERRABLE_WORK
27 #define DECLARE_DEFERRABLE_WORK(n, f) DECLARE_DEFERRED_WORK(n, f)
28 #endif
29
30 #ifdef CONFIG_USER_NS
31
32 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38))
33 static inline struct user_namespace *seq_user_ns(struct seq_file *seq)
34 {
35         struct file *f = container_of((void *) seq, struct file, private_data);
36
37         return f->f_cred->user_ns;
38 }
39 #else
40 static inline struct user_namespace *seq_user_ns(struct seq_file *seq)
41 {
42         return current_user_ns();
43 }
44 #endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,38)) */
45
46 #else
47 static inline struct user_namespace *seq_user_ns(struct seq_file *seq)
48 {
49         extern struct user_namespace init_user_ns;
50         return &init_user_ns;
51 }
52 #endif /* CONFIG_USER_NS */
53
54 #define mod_delayed_work LINUX_BACKPORT(mod_delayed_work)
55 bool mod_delayed_work(struct workqueue_struct *wq, struct delayed_work *dwork,
56                       unsigned long delay);
57
58 /* Backports tty_lock: Localise the lock */
59 #define tty_lock(__tty) tty_lock()
60 #define tty_unlock(__tty) tty_unlock()
61
62 #define tty_port_register_device(port, driver, index, device) \
63         tty_register_device(driver, index, device)
64
65 #define pcie_capability_read_word LINUX_BACKPORT(pcie_capability_read_word)
66 int pcie_capability_read_word(struct pci_dev *dev, int pos, u16 *val);
67 #define pcie_capability_read_dword LINUX_BACKPORT(pcie_capability_read_dword)
68 int pcie_capability_read_dword(struct pci_dev *dev, int pos, u32 *val);
69 #define pcie_capability_write_word LINUX_BACKPORT(pcie_capability_write_word)
70 int pcie_capability_write_word(struct pci_dev *dev, int pos, u16 val);
71 #define pcie_capability_write_dword LINUX_BACKPORT(pcie_capability_write_dword)
72 int pcie_capability_write_dword(struct pci_dev *dev, int pos, u32 val);
73 #define pcie_capability_clear_and_set_word LINUX_BACKPORT(pcie_capability_clear_and_set_word)
74 int pcie_capability_clear_and_set_word(struct pci_dev *dev, int pos,
75                                        u16 clear, u16 set);
76 #define pcie_capability_clear_and_set_dword LINUX_BACKPORT(pcie_capability_clear_and_set_dword)
77 int pcie_capability_clear_and_set_dword(struct pci_dev *dev, int pos,
78                                         u32 clear, u32 set);
79 #define pcie_capability_set_word LINUX_BACKPORT(pcie_capability_set_word)
80 static inline int pcie_capability_set_word(struct pci_dev *dev, int pos,
81                                            u16 set)
82 {
83         return pcie_capability_clear_and_set_word(dev, pos, 0, set);
84 }
85
86 #define pcie_capability_set_dword LINUX_BACKPORT(pcie_capability_set_dword)
87 static inline int pcie_capability_set_dword(struct pci_dev *dev, int pos,
88                                             u32 set)
89 {
90         return pcie_capability_clear_and_set_dword(dev, pos, 0, set);
91 }
92
93 #define pcie_capability_clear_word LINUX_BACKPORT(pcie_capability_clear_word)
94 static inline int pcie_capability_clear_word(struct pci_dev *dev, int pos,
95                                              u16 clear)
96 {
97         return pcie_capability_clear_and_set_word(dev, pos, clear, 0);
98 }
99
100 #define pcie_capability_clear_dword LINUX_BACKPORT(pcie_capability_clear_dword)
101 static inline int pcie_capability_clear_dword(struct pci_dev *dev, int pos,
102                                               u32 clear)
103 {
104         return pcie_capability_clear_and_set_dword(dev, pos, clear, 0);
105 }
106
107 #define PCI_EXP_LNKSTA2                 50      /* Link Status 2 */
108
109 #define MAX_IDR_SHIFT (sizeof(int)*8 - 1)
110 #define MAX_IDR_BIT (1U << MAX_IDR_SHIFT)
111 #define MAX_IDR_MASK (MAX_IDR_BIT - 1)
112
113 /* IPoIB section */
114 #ifndef IFLA_IPOIB_MAX
115 enum {
116         IFLA_IPOIB_UNSPEC,
117         IFLA_IPOIB_PKEY,
118         IFLA_IPOIB_MODE,
119         IFLA_IPOIB_UMCAST,
120         __IFLA_IPOIB_MAX
121 };
122
123 enum {
124         IPOIB_MODE_DATAGRAM  = 0, /* using unreliable datagram QPs */
125         IPOIB_MODE_CONNECTED = 1, /* using connected QPs */
126 };
127
128 #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
129 #endif
130
131 #define FMODE_PATH              ((__force fmode_t)0x4000)
132
133 #define fget_light LINUX_BACKPORT(fget_light)
134 extern struct file *fget_light(unsigned int fd, int *fput_needed);
135
136 #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) */
137
138 #endif /* LINUX_3_7_COMPAT_H */