pci_enable_device_mem과 pci_enable_device의 차이점은 무엇입니까?pci_enable_device_mem과 pci_enable_device의 차이점은 무엇입니까?
ixgbe에서 pf 드라이버는 pci_enable_device_mem을 사용하고 vf 드라이버는 pci_enable_device를 사용합니다.
pci_enable_device_mem과 pci_enable_device의 차이점은 무엇입니까?pci_enable_device_mem과 pci_enable_device의 차이점은 무엇입니까?
ixgbe에서 pf 드라이버는 pci_enable_device_mem을 사용하고 vf 드라이버는 pci_enable_device를 사용합니다.
pci_enable_device_mem - 메모리 공간을 사용 https://www.kernel.org/doc/htmldocs/kernel-api/API-pci-enable-device-mem.html
pci_enable_device을 장치를 초기화 -이 드라이버가 사용되기 전에 장치를 초기화합니다. https://www.kernel.org/doc/htmldocs/kernel-api/API-pci-enable-device.html
첫번째는 메모리 공간으로 사용할 수 있도록 장치를 초기화한다. 두 번째 장치는 드라이버가 사용하기 전에 장치를 초기화합니다.
글쎄, 두 함수는 내부적으로 pci_enable_device_flags()를 호출합니다. 차이점은 pci_enable_device_mem() 변형은 메모리 매핑 BAR 만 초기화하는 반면 pci_enable_device()는 메모리 매핑 및 IO BAR 모두를 초기화한다는 점입니다.
PCI 장치에 IO 공간이 없으면 (대부분 실제로이 경우) pci_enable_device_mem()을 쉽게 사용할 수 있습니다.
int pci_enable_device_mem(struct pci_dev *dev)
{
return pci_enable_device_flags(dev, IORESOURCE_MEM);
}
int pci_enable_device(struct pci_dev *dev)
{
return pci_enable_device_flags(dev, IORESOURCE_MEM | IORESOURCE_IO);
}
:
이
드라이버/PCI/pci.c에서 코드입니다