[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