#ifndef LINUX_26_33_COMPAT_H #define LINUX_26_33_COMPAT_H #include #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) #include #include #if defined(CONFIG_PCCARD) || defined(CONFIG_PCCARD_MODULE) #include #include #include #endif #include #include #if defined(CONFIG_COMPAT_FIRMWARE_CLASS) #define release_firmware compat_release_firmware #define request_firmware compat_request_firmware #define request_firmware_nowait compat_request_firmware_nowait #endif #if defined(CONFIG_FW_LOADER) || defined(CONFIG_FW_LOADER_MODULE) int compat_request_firmware(const struct firmware **fw, const char *name, struct device *device); int compat_request_firmware_nowait( struct module *module, int uevent, const char *name, struct device *device, gfp_t gfp, void *context, void (*cont)(const struct firmware *fw, void *context)); void compat_release_firmware(const struct firmware *fw); #else static inline int compat_request_firmware(const struct firmware **fw, const char *name, struct device *device) { return -EINVAL; } static inline int request_firmware_nowait( struct module *module, int uevent, const char *name, struct device *device, gfp_t gfp, void *context, void (*cont)(const struct firmware *fw, void *context)) { return -EINVAL; } static inline void compat_release_firmware(const struct firmware *fw) { } #endif /* mask KEY_RFKILL as RHEL6 backports this */ #if !defined(KEY_RFKILL) #define KEY_RFKILL 247 /* Key that controls all radios */ #endif #define IFF_DONT_BRIDGE 0x800 /* disallow bridging this ether dev */ /* source: include/linux/if.h */ /* this will never happen on older kernels */ #define NETDEV_POST_INIT 0xffff /* mask netdev_alloc_skb_ip_align as debian squeeze also backports this */ #define netdev_alloc_skb_ip_align(a, b) compat_netdev_alloc_skb_ip_align(a, b) static inline struct sk_buff *netdev_alloc_skb_ip_align(struct net_device *dev, unsigned int length) { struct sk_buff *skb = netdev_alloc_skb(dev, length + NET_IP_ALIGN); if (NET_IP_ALIGN && skb) skb_reserve(skb, NET_IP_ALIGN); return skb; } #if defined(CONFIG_PCCARD) || defined(CONFIG_PCCARD_MODULE) #if defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE) #define pcmcia_request_window(a, b, c) pcmcia_request_window(&a, b, c) #define pcmcia_map_mem_page(a, b, c) pcmcia_map_mem_page(b, c) /* loop over CIS entries */ int pcmcia_loop_tuple(struct pcmcia_device *p_dev, cisdata_t code, int (*loop_tuple) (struct pcmcia_device *p_dev, tuple_t *tuple, void *priv_data), void *priv_data); #endif /* CONFIG_PCMCIA */ /* loop over CIS entries */ int pccard_loop_tuple(struct pcmcia_socket *s, unsigned int function, cisdata_t code, cisparse_t *parse, void *priv_data, int (*loop_tuple) (tuple_t *tuple, cisparse_t *parse, void *priv_data)); #endif /* CONFIG_PCCARD */ /** * list_for_each_entry_continue_rcu - continue iteration over list of given type * @pos: the type * to use as a loop cursor. * @head: the head for your list. * @member: the name of the list_struct within the struct. * * Continue to iterate over list of given type, continuing after * the current position. */ #define list_for_each_entry_continue_rcu(pos, head, member) \ for (pos = list_entry_rcu(pos->member.next, typeof(*pos), member); \ prefetch(pos->member.next), &pos->member != (head); \ pos = list_entry_rcu(pos->member.next, typeof(*pos), member)) #define sock_recv_ts_and_drops(msg, sk, skb) sock_recv_timestamp(msg, sk, skb) /* mask pci_pcie_cap as debian squeeze also backports this */ #define pci_pcie_cap(a) compat_pci_pcie_cap(a) /** * pci_pcie_cap - get the saved PCIe capability offset * @dev: PCI device * * PCIe capability offset is calculated at PCI device initialization * time and saved in the data structure. This function returns saved * PCIe capability offset. Using this instead of pci_find_capability() * reduces unnecessary search in the PCI configuration space. If you * need to calculate PCIe capability offset from raw device for some * reasons, please use pci_find_capability() instead. */ static inline int pci_pcie_cap(struct pci_dev *dev) { return pci_find_capability(dev, PCI_CAP_ID_EXP); } /* mask pci_is_pcie as RHEL6 backports this */ #define pci_is_pcie(a) compat_pci_is_pcie(a) /** * pci_is_pcie - check if the PCI device is PCI Express capable * @dev: PCI device * * Retrun true if the PCI device is PCI Express capable, false otherwise. */ static inline bool pci_is_pcie(struct pci_dev *dev) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) return dev->is_pcie; #else return !!pci_pcie_cap(dev); #endif } #ifdef __GNUC__ #define __always_unused __attribute__((unused)) #else #define __always_unused /* unimplemented */ #endif /* mask IS_ERR_OR_NULL as debian squeeze also backports this */ #define IS_ERR_OR_NULL(a) compat_IS_ERR_OR_NULL(a) static inline long __must_check IS_ERR_OR_NULL(const void *ptr) { return !ptr || IS_ERR_VALUE((unsigned long)ptr); } #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) */ #endif /* LINUX_26_33_COMPAT_H */