[dpdk-dev] [PATCH 2/6] eal: Close file descriptor of uio configuration
Tetsuya Mukawa
mukawa at igel.co.jp
Fri Mar 20 02:54:37 CET 2015
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
More information about the dev
mailing list