From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wg0-f43.google.com (mail-wg0-f43.google.com [74.125.82.43]) by dpdk.org (Postfix) with ESMTP id AED776AB0 for ; Fri, 28 Feb 2014 18:24:51 +0100 (CET) Received: by mail-wg0-f43.google.com with SMTP id k14so803362wgh.2 for ; Fri, 28 Feb 2014 09:26:18 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=zqxKJQZ+Ve4yQchaAGS0x6sqclvs/eVFZNS3lHSmm20=; b=WipMOpZRGANK1zR6kbjUkg1bHersE9tJNfEt75MbDkUEpDPSzeNVhBojMeuh7VmYVc aXrkut7MMYG6kGgfwMD2vbp1eXS8AtlS3ALU6O5g/bWxblzqdnWt+llVzVKZqNI5vsqW TDkkArpzpolKRNcuSXB8xPCYx7piu6NlPiswzuRJ5c28h1SHLCGia/I4mICg2hNga/Tg xWwQqxdwWjd7tkNfaLc6HS9TsY5Zum49K9CVzWo72Jq7hTA7cbXfre78V9KYuryaO6yP oA54FJjnvcCttnh94O47tm8SFC0TeIehPRD8MAp1Ey6Cyu7jkPPJ+rOPJoEBpDJdJdL5 AhAw== X-Gm-Message-State: ALoCoQmmpMi23wMUH4KUP+88wW9H0ybeP9v/ksZYUjqgPtENtbeNzeqRxqKbEwhISD8WLpASmwKV X-Received: by 10.181.13.11 with SMTP id eu11mr4382950wid.30.1393608378667; Fri, 28 Feb 2014 09:26:18 -0800 (PST) Received: from glumotte.dev.6wind.com (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by mx.google.com with ESMTPSA id hy8sm5908439wjb.2.2014.02.28.09.26.17 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 28 Feb 2014 09:26:18 -0800 (PST) From: Olivier Matz To: dev@dpdk.org Date: Fri, 28 Feb 2014 18:25:45 +0100 Message-Id: <1393608350-4431-7-git-send-email-olivier.matz@6wind.com> X-Mailer: git-send-email 1.8.5.3 In-Reply-To: <1393608350-4431-1-git-send-email-olivier.matz@6wind.com> References: <1393608350-4431-1-git-send-email-olivier.matz@6wind.com> Subject: [dpdk-dev] [PATCH 06/11] vdev: rename eal_common_nonpci_devs.c as eal_common_vdev.c X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Feb 2014 17:24:52 -0000 The name "nonpci" for virtual devices is ambiguous. A physical device can be non-PCI (ex: usb, sata, ...). This file only deal with virtual devices so rename it to avoid confusion. Signed-off-by: Olivier Matz --- lib/librte_eal/common/Makefile | 2 +- lib/librte_eal/common/eal_common_nonpci_devs.c | 111 ------------------------- lib/librte_eal/common/eal_common_vdev.c | 111 +++++++++++++++++++++++++ lib/librte_eal/common/include/eal_private.h | 4 +- lib/librte_eal/common/include/rte_vdev.h | 90 ++++++++++++++++++++ lib/librte_eal/linuxapp/eal/Makefile | 2 +- lib/librte_eal/linuxapp/eal/eal.c | 4 +- 7 files changed, 207 insertions(+), 117 deletions(-) delete mode 100644 lib/librte_eal/common/eal_common_nonpci_devs.c create mode 100644 lib/librte_eal/common/eal_common_vdev.c create mode 100644 lib/librte_eal/common/include/rte_vdev.h diff --git a/lib/librte_eal/common/Makefile b/lib/librte_eal/common/Makefile index b9f3b88..2f99bf4 100644 --- a/lib/librte_eal/common/Makefile +++ b/lib/librte_eal/common/Makefile @@ -38,7 +38,7 @@ INC += rte_pci_dev_ids.h rte_per_lcore.h rte_prefetch.h rte_random.h INC += rte_rwlock.h rte_spinlock.h rte_tailq.h rte_interrupts.h rte_alarm.h INC += rte_string_fns.h rte_cpuflags.h rte_version.h rte_tailq_elem.h INC += rte_eal_memconfig.h rte_malloc_heap.h -INC += rte_hexdump.h rte_devargs.h +INC += rte_hexdump.h rte_devargs.h rte_vdev.h ifeq ($(CONFIG_RTE_INSECURE_FUNCTION_WARNING),y) INC += rte_warnings.h diff --git a/lib/librte_eal/common/eal_common_nonpci_devs.c b/lib/librte_eal/common/eal_common_nonpci_devs.c deleted file mode 100644 index 71cbb1e..0000000 --- a/lib/librte_eal/common/eal_common_nonpci_devs.c +++ /dev/null @@ -1,111 +0,0 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. - * Copyright(c) 2014 6WIND S.A. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#ifdef RTE_LIBRTE_PMD_RING -#include -#endif -#ifdef RTE_LIBRTE_PMD_PCAP -#include -#endif -#ifdef RTE_LIBRTE_PMD_XENVIRT -#include -#endif -#include -#include -#include "eal_private.h" - -struct device_init { - const char *dev_prefix; - int (*init_fn)(const char*, const char *); -}; - -#define NUM_DEV_TYPES (sizeof(dev_types)/sizeof(dev_types[0])) -struct device_init dev_types[] = { -#ifdef RTE_LIBRTE_PMD_RING - { - .dev_prefix = RTE_ETH_RING_PARAM_NAME, - .init_fn = rte_pmd_ring_init - }, -#endif -#ifdef RTE_LIBRTE_PMD_PCAP - { - .dev_prefix = RTE_ETH_PCAP_PARAM_NAME, - .init_fn = rte_pmd_pcap_init - }, -#endif -#ifdef RTE_LIBRTE_PMD_XENVIRT - { - .dev_prefix = RTE_ETH_XENVIRT_PARAM_NAME, - .init_fn = rte_pmd_xenvirt_init - }, -#endif - { - .dev_prefix = "-nodev-", - .init_fn = NULL - } -}; - -int -rte_eal_non_pci_ethdev_init(void) -{ - struct rte_devargs *devargs; - uint8_t i; - - /* call the init function for each virtual device */ - TAILQ_FOREACH(devargs, &devargs_list, next) { - - if (devargs->type != RTE_DEVTYPE_VIRTUAL) - continue; - - for (i = 0; i < NUM_DEV_TYPES; i++) { - /* search a driver prefix in virtual device name */ - if (!strncmp(dev_types[i].dev_prefix, - devargs->virtual.drv_name, - sizeof(dev_types[i].dev_prefix) - 1)) { - dev_types[i].init_fn(devargs->virtual.drv_name, - devargs->args); - break; - } - } - - if (i == NUM_DEV_TYPES) { - rte_panic("no driver found for %s\n", - devargs->virtual.drv_name); - } - } - return 0; -} diff --git a/lib/librte_eal/common/eal_common_vdev.c b/lib/librte_eal/common/eal_common_vdev.c new file mode 100644 index 0000000..02d3fd6 --- /dev/null +++ b/lib/librte_eal/common/eal_common_vdev.c @@ -0,0 +1,111 @@ +/*- + * BSD LICENSE + * + * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + * Copyright(c) 2014 6WIND S.A. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#ifdef RTE_LIBRTE_PMD_RING +#include +#endif +#ifdef RTE_LIBRTE_PMD_PCAP +#include +#endif +#ifdef RTE_LIBRTE_PMD_XENVIRT +#include +#endif +#include +#include +#include "eal_private.h" + +struct device_init { + const char *dev_prefix; + int (*init_fn)(const char*, const char *); +}; + +#define NUM_DEV_TYPES (sizeof(dev_types)/sizeof(dev_types[0])) +struct device_init dev_types[] = { +#ifdef RTE_LIBRTE_PMD_RING + { + .dev_prefix = RTE_ETH_RING_PARAM_NAME, + .init_fn = rte_pmd_ring_init + }, +#endif +#ifdef RTE_LIBRTE_PMD_PCAP + { + .dev_prefix = RTE_ETH_PCAP_PARAM_NAME, + .init_fn = rte_pmd_pcap_init + }, +#endif +#ifdef RTE_LIBRTE_PMD_XENVIRT + { + .dev_prefix = RTE_ETH_XENVIRT_PARAM_NAME, + .init_fn = rte_pmd_xenvirt_init + }, +#endif + { + .dev_prefix = "-nodev-", + .init_fn = NULL + } +}; + +int +rte_eal_vdev_init(void) +{ + struct rte_devargs *devargs; + uint8_t i; + + /* call the init function for each virtual device */ + TAILQ_FOREACH(devargs, &devargs_list, next) { + + if (devargs->type != RTE_DEVTYPE_VIRTUAL) + continue; + + for (i = 0; i < NUM_DEV_TYPES; i++) { + /* search a driver prefix in virtual device name */ + if (!strncmp(dev_types[i].dev_prefix, + devargs->virtual.drv_name, + sizeof(dev_types[i].dev_prefix) - 1)) { + dev_types[i].init_fn(devargs->virtual.drv_name, + devargs->args); + break; + } + } + + if (i == NUM_DEV_TYPES) { + rte_panic("no driver found for %s\n", + devargs->virtual.drv_name); + } + } + return 0; +} diff --git a/lib/librte_eal/common/include/eal_private.h b/lib/librte_eal/common/include/eal_private.h index f9a019b..22d8b08 100644 --- a/lib/librte_eal/common/include/eal_private.h +++ b/lib/librte_eal/common/include/eal_private.h @@ -197,10 +197,10 @@ int rte_eal_intr_init(void); int rte_eal_alarm_init(void); /** - * This function initialises any non-PCI i.e. dummy ethernet devices + * This function initialises any virtual devices * * This function is private to the EAL. */ -int rte_eal_non_pci_ethdev_init(void); +int rte_eal_vdev_init(void); #endif /* _EAL_PRIVATE_H_ */ diff --git a/lib/librte_eal/common/include/rte_vdev.h b/lib/librte_eal/common/include/rte_vdev.h new file mode 100644 index 0000000..48f71b7 --- /dev/null +++ b/lib/librte_eal/common/include/rte_vdev.h @@ -0,0 +1,90 @@ +/*- + * BSD LICENSE + * + * Copyright(c) 2014 6WIND S.A. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of 6WIND S.A. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _RTE_VDEV_H_ +#define _RTE_VDEV_H_ + +/** + * @file + * + * RTE Virtual Devices Interface + * + * This file manages the list of the virtual device drivers. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/** Double linked list of virtual device drivers. */ +TAILQ_HEAD(rte_vdev_driver_list, rte_vdev_driver); + +/** + * Initialization function called for each virtual device probing. + */ +typedef int (rte_vdev_init_t)(const char *name, const char *args); + +/** + * A structure describing a virtual device driver. + */ +struct rte_vdev_driver { + TAILQ_ENTRY(rte_vdev_driver) next; /**< Next in list. */ + const char *name; /**< Driver name. */ + rte_vdev_init_t *init; /**< Device init. function. */ +}; + +/** + * Register a virtual device driver. + * + * @param driver + * A pointer to a rte_vdev structure describing the driver + * to be registered. + */ +void rte_eal_vdev_driver_register(struct rte_vdev_driver *driver); + +/** + * Unregister a virtual device driver. + * + * @param driver + * A pointer to a rte_vdev structure describing the driver + * to be unregistered. + */ +void rte_eal_vdev_driver_unregister(struct rte_vdev_driver *driver); + +#ifdef __cplusplus +} +#endif + +#endif /* _RTE_VDEV_H_ */ diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile index bdd940d..00f7367 100644 --- a/lib/librte_eal/linuxapp/eal/Makefile +++ b/lib/librte_eal/linuxapp/eal/Makefile @@ -77,7 +77,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_errno.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_cpuflags.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_hexdump.c SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_devargs.c -SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_nonpci_devs.c +SRCS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += eal_common_vdev.c CFLAGS_eal.o := -D_GNU_SOURCE CFLAGS_eal_thread.o := -D_GNU_SOURCE diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c index 4c23614..2f3222d 100644 --- a/lib/librte_eal/linuxapp/eal/eal.c +++ b/lib/librte_eal/linuxapp/eal/eal.c @@ -1039,8 +1039,8 @@ rte_eal_init(int argc, char **argv) rte_eal_mcfg_complete(); - if (rte_eal_non_pci_ethdev_init() < 0) - rte_panic("Cannot init non-PCI eth_devs\n"); + if (rte_eal_vdev_init() < 0) + rte_panic("Cannot init virtual devices\n"); TAILQ_FOREACH(solib, &solib_list, next) { solib->lib_handle = dlopen(solib->name, RTLD_NOW); -- 1.8.5.3