一、__pci_set_master
static void __pci_set_master(struct pci_dev *dev, bool enable)
{
u16 old_cmd, cmd;
pci_read_config_word(dev, PCI_COMMAND, &old_cmd); // 读取设备的PCI命令寄存器的当前值
if (enable)
cmd = old_cmd | PCI_COMMAND_MASTER; // 如果要启用总线主控,设置命令字相应的位
else
cmd = old_cmd & ~PCI_COMMAND_MASTER; // 如果要禁用总线主控,清除命令字相应的位
if (cmd != old_cmd) { // 如果命令字有变化,更新PCI命令寄存器
pci_dbg(dev, "%s bus mastering\n",
enable ? "enabling" : "disabling");
pci_write_config_word(dev, PCI_COMMAND, cmd);
}
dev->is_busmaster = enable; // 更新设备的状态,表示总线主控是否被启用
}
这个函数专注于设置或清除PCI命令寄存器中控制总线主控的位。如果启用,它会设