On 2015/03/20 1:04, Iremonger, Bernard wrote: >> -----Original Message----- >> From: Tetsuya Mukawa [mailto:mukawa at igel.co.jp] >> Sent: Tuesday, March 17, 2015 9:31 AM >> To: dev at dpdk.org >> Cc: Iremonger, Bernard; Richardson, Bruce; Tetsuya Mukawa >> Subject: [PATCH 2/6] eal: Close file descriptor of uio configuration >> >> When pci_uio_unmap_resource() is called, a file descriptor that is used for >> uio configuration should be >> closed. >> >> Signed-off-by: Tetsuya Mukawa <mukawa at igel.co.jp> >> --- >> lib/librte_eal/linuxapp/eal/eal_pci_uio.c | 8 +++++++- >> 1 file changed, 7 insertions(+), 1 deletion(-) >> >> diff --git a/lib/librte_eal/linuxapp/eal/eal_pci_uio.c >> b/lib/librte_eal/linuxapp/eal/eal_pci_uio.c >> index 9cdf24f..b971ec9 100644 >> --- a/lib/librte_eal/linuxapp/eal/eal_pci_uio.c >> +++ b/lib/librte_eal/linuxapp/eal/eal_pci_uio.c >> @@ -459,8 +459,14 @@ pci_uio_unmap_resource(struct rte_pci_device *dev) >> >> /* close fd if in primary process */ > Hi Tetsuya, > > Should there be a check for the primary process before closing both of the > these files?
Hi Bernard, Yes, the check is done like below. (But it doesn't appear in this patch.) void pci_uio_unmap_resource(struct rte_pci_device *dev) { struct mapped_pci_resource *uio_res; struct mapped_pci_res_list *uio_res_list = RTE_TAILQ_CAST(rte_uio_tailq.head, mapped_pci_res_list); if (dev == NULL) return; /* find an entry for the device */ uio_res = pci_uio_find_resource(dev); if (uio_res == NULL) return; /* secondary processes - just free maps */ if (rte_eal_process_type() != RTE_PROC_PRIMARY) return pci_uio_unmap(uio_res); TAILQ_REMOVE(uio_res_list, uio_res, next); (snip) /* close fd if in primary process */ close(dev->intr_handle.fd); dev->intr_handle.fd = -1; (snip) } Regards, Tetsuya > Regards, > > Bernard. > >> close(dev->intr_handle.fd); >> - >> dev->intr_handle.fd = -1; >> + >> + /* close cfg_fd if in primary process */ >> + if (dev->intr_handle.uio_cfg_fd >= 0) { >> + close(dev->intr_handle.uio_cfg_fd); >> + dev->intr_handle.uio_cfg_fd = -1; >> + } >> + >> dev->intr_handle.type = RTE_INTR_HANDLE_UNKNOWN; } #endif /* >> RTE_LIBRTE_EAL_HOTPLUG */ >> -- >> 1.9.1