⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 access.c

📁 Linux Kernel 2.6.9 for OMAP1710
💻 C
字号:
#include <linux/pci.h>#include <linux/module.h>#include <linux/ioport.h>/* * This interrupt-safe spinlock protects all accesses to PCI * configuration space. */static spinlock_t pci_lock = SPIN_LOCK_UNLOCKED;/* *  Wrappers for all PCI configuration access functions.  They just check *  alignment, do locking and call the low-level functions pointed to *  by pci_dev->ops. */#define PCI_byte_BAD 0#define PCI_word_BAD (pos & 1)#define PCI_dword_BAD (pos & 3)#define PCI_OP_READ(size,type,len) \int pci_bus_read_config_##size \	(struct pci_bus *bus, unsigned int devfn, int pos, type *value)	\{									\	int res;							\	unsigned long flags;						\	u32 data = 0;							\	if (PCI_##size##_BAD) return PCIBIOS_BAD_REGISTER_NUMBER;	\	spin_lock_irqsave(&pci_lock, flags);				\	res = bus->ops->read(bus, devfn, pos, len, &data);		\	*value = (type)data;						\	spin_unlock_irqrestore(&pci_lock, flags);			\	return res;							\}#define PCI_OP_WRITE(size,type,len) \int pci_bus_write_config_##size \	(struct pci_bus *bus, unsigned int devfn, int pos, type value)	\{									\	int res;							\	unsigned long flags;						\	if (PCI_##size##_BAD) return PCIBIOS_BAD_REGISTER_NUMBER;	\	spin_lock_irqsave(&pci_lock, flags);				\	res = bus->ops->write(bus, devfn, pos, len, value);		\	spin_unlock_irqrestore(&pci_lock, flags);			\	return res;							\}PCI_OP_READ(byte, u8, 1)PCI_OP_READ(word, u16, 2)PCI_OP_READ(dword, u32, 4)PCI_OP_WRITE(byte, u8, 1)PCI_OP_WRITE(word, u16, 2)PCI_OP_WRITE(dword, u32, 4)EXPORT_SYMBOL(pci_bus_read_config_byte);EXPORT_SYMBOL(pci_bus_read_config_word);EXPORT_SYMBOL(pci_bus_read_config_dword);EXPORT_SYMBOL(pci_bus_write_config_byte);EXPORT_SYMBOL(pci_bus_write_config_word);EXPORT_SYMBOL(pci_bus_write_config_dword);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -