On Fri, Jan 29, 2016 at 11:51:50PM +0530, Santosh Shukla wrote: > Introducing below api for pci bar region rd/wr. > Api's are: > - rte_eal_pci_read_bar > - rte_eal_pci_write_bar > > Signed-off-by: Santosh Shukla <sshukla at mvista.com> > --- > v5-->v6: > - update api infor in rte_eal_version.map file > suggested by david manchand. > > lib/librte_eal/bsdapp/eal/eal_pci.c | 19 ++++++++++++ > lib/librte_eal/bsdapp/eal/rte_eal_version.map | 3 ++ > lib/librte_eal/common/include/rte_pci.h | 38 > +++++++++++++++++++++++ > lib/librte_eal/linuxapp/eal/eal_pci.c | 34 ++++++++++++++++++++ > lib/librte_eal/linuxapp/eal/eal_pci_init.h | 6 ++++ > lib/librte_eal/linuxapp/eal/eal_pci_vfio.c | 28 +++++++++++++++++ > lib/librte_eal/linuxapp/eal/rte_eal_version.map | 3 ++ > 7 files changed, 131 insertions(+) > > diff --git a/lib/librte_eal/bsdapp/eal/eal_pci.c > b/lib/librte_eal/bsdapp/eal/eal_pci.c > index 95c32c1..2e535ea 100644 > --- a/lib/librte_eal/bsdapp/eal/eal_pci.c > +++ b/lib/librte_eal/bsdapp/eal/eal_pci.c ... > +int rte_eal_pci_read_bar(const struct rte_pci_device *device, > + void *buf, size_t len, off_t offset, > + int bar_idx) > + > +{ > + const struct rte_intr_handle *intr_handle = &device->intr_handle;
I'd suggest to reference this var inside pci_vfio_read/write_bar(), and pass device as the parmater instead. > + > + switch (device->kdrv) { > + case RTE_KDRV_VFIO: > + return pci_vfio_read_bar(intr_handle, buf, len, > + offset, bar_idx); > + default: > + RTE_LOG(ERR, EAL, "write bar not supported by driver\n"); ^^^^^ typo. BTW, I have a question about this API. Obviously, reading/writing bar space is supported with UIO (when memory resource is mmapped). And I know why you introduced such 2 APIs, for reading IO bar. So, here is the question: what are the 2 APIs for, for being gerneric APIs to read/write bar spaces, or just to read IO bar spaces? If it's former, the message is wrong; if it's later, you may better rename it to rte_eal_pci_read/write_io_bar()? David, what do you think of that? > + return -1; > + } > +} > + ... > +int > +pci_vfio_read_bar(const struct rte_intr_handle *intr_handle, > + void *buf, size_t len, off_t offs, int bar_idx) > +{ > + if (bar_idx < VFIO_PCI_BAR0_REGION_INDEX > + || bar_idx > VFIO_PCI_BAR5_REGION_INDEX) { A minor nit: it's more nature to put the '||' at the end of expression, instead of at the front: if (bar_idx < VFIO_PCI_BAR0_REGION_INDEX || bar_idx > VFIO_PCI_BAR5_REGION_INDEX) { --yliu