[dpdk-dev] [PATCHv4 2/5] drivers: Update driver registration macro usage
Thomas Monjalon
thomas.monjalon at 6wind.com
Wed May 25 18:20:06 CEST 2016
2016-05-24 15:41, Neil Horman:
> Modify the PMD_REGISTER_DRIVER macro, adding a name argument to it. The
> addition of a name argument creates a token that can be used for subsequent
> macros in the creation of unique symbol names to export additional bits of
> information for use by the pmdinfogen tool. For example:
>
> PMD_REGISTER_DRIVER(ena_driver, ena);
>
> registers the ena_driver struct as it always did, and creates a symbol
> const char this_pmd_name0[] __attribute__((used)) = "ena";
>
> which pmdinfogen can search for and extract.
The EAL rework (http://dpdk.org/ml/archives/dev/2016-April/037691.html)
integrates already a name:
+#define RTE_EAL_PCI_REGISTER(name, d) \
+RTE_INIT(pciinitfn_ ##name); \
+static void pciinitfn_ ##name(void) \
+{ \
+ rte_eal_pci_register(&d); \
+}
I think it would be better to rebase on top of it.
> The subsequent macro
>
> DRIVER_REGISTER_PCI_TABLE(ena, ena_pci_id_map);
>
> creates a symbol
> const char ena_pci_tbl_export[] __attribute__((used)) = "ena_pci_id_map";
>
> Which allows pmdinfogen to find the pci table of this driver
>
> Using this pattern, we can export arbitrary bits of information.
>
> pmdinfo uses this information to extract hardware support from an object file
> and create a json string to make hardware support info discoverable later.
> --- a/drivers/Makefile
> +++ b/drivers/Makefile
> @@ -34,4 +34,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
> DIRS-y += net
> DIRS-$(CONFIG_RTE_LIBRTE_CRYPTODEV) += crypto
>
> +DEPDIRS-y += buildtools/pmdinfo
Why pmdinfo is a build dependency?
> --- a/lib/librte_eal/common/include/rte_dev.h
> +++ b/lib/librte_eal/common/include/rte_dev.h
> @@ -48,7 +48,7 @@ extern "C" {
>
> #include <stdio.h>
> #include <sys/queue.h>
> -
> +#include <rte_pci.h>
Why not keep PCI stuff in rte_pci.h?
> +#define DRV_EXP_TAG(n, t) __##n##_##t
> +
> +#define DRIVER_REGISTER_PCI_TABLE(n, t) \
> +static const char DRV_EXP_TAG(n, pci_tbl_export)[] __attribute__((used)) = RTE_STR(t)
I really dislike one-char variables, especially when there is no comment.
Please choose comments or explicit variables.
More information about the dev
mailing list