Global Priorities
cover Global Priorities
These patches are extracted from the device querying series [1] for earlier integration.
[1]: https://dpdk.org/ml/archives/dev/2018-March/092891.html
Gaetan Rivet (2):
eal: list acceptable init priorities
eal: add last init priority
lib/librte_eal/common/eal_common_log.c | 2 +- lib/librte_eal/common/include/rte_bus.h | 2 +- lib/librte_eal/common/include/rte_common.h | 29 ++++++++++++++++++----------- 3 files changed, 20 insertions(+), 13 deletions(-)
Signature · 1 line
2.11.0
PATCH 1/2 eal: list acceptable init priorities
Build a central list to quickly see each used priorities for constructors, allowing to verify that they are both above 100 and in the proper order.
--- lib/librte_eal/common/eal_common_log.c | 2 +- lib/librte_eal/common/include/rte_bus.h | 2 +- lib/librte_eal/common/include/rte_common.h | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-)
lib/librte_eal/common/eal_common_log.c +1 -1
@@ -260,7 +260,7 @@ static const struct logtype logtype_strings[] = { };/* Logging should be first initializer (before drivers and bus) */ -RTE_INIT_PRIO (rte_log_init,101 ); +RTE_INIT_PRIO (rte_log_init,LOG );static void rte_log_init (void ) {
lib/librte_eal/common/include/rte_bus.h +1 -1
@@ -325,7 +325,7 @@ enum rte_iova_mode rte_bus_get_iommu_class(void);* The constructor has higher priority than PMD constructors. */ #define RTE_REGISTER_BUS (nm, bus) \ -RTE_INIT_PRIO(businitfn_ ##nm, 110); \ +RTE_INIT_PRIO(businitfn_ ##nm, BUS); \ static void businitfn_ ##nm(void) \ {\ (bus).name = RTE_STR(nm);\
lib/librte_eal/common/include/rte_common.h +7 -1
@@ -81,6 +81,12 @@ typedef uint16_t unaligned_uint16_t;*/ #define RTE_SET_USED (x) (void)(x) +#define RTE_PRIORITY_LOG 101 +#define RTE_PRIORITY_BUS 110 + +#define RTE_PRIO (prio) \ + RTE_PRIORITY_ ## prio +/** * Run function before main() with low priority. *
@@ -102,7 +108,7 @@ static void __attribute__((constructor, used)) func(void)* Lowest number is the first to run. */ #define RTE_INIT_PRIO (func, prio) \ -static void __attribute__((constructor(prio), used)) func(void) +static void __attribute__((constructor(RTE_PRIO(prio)), used)) func(void)/** * Force a function to be inlined
Signature · 1 line
2.11.0
PATCH 2/2 eal: add last init priority
In reply to Gaetan RivetAdd the priority RTE_PRIORITY_LAST, used for initialization routines meant to be run after all other constructors.
This priority becomes the default priority for all DPDK constructors.
--- lib/librte_eal/common/include/rte_common.h | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-)
lib/librte_eal/common/include/rte_common.h +12 -11
@@ -83,22 +83,12 @@ typedef uint16_t unaligned_uint16_t;#define RTE_PRIORITY_LOG 101#define RTE_PRIORITY_BUS 110 +#define RTE_PRIORITY_LAST 65535#define RTE_PRIO (prio) \ RTE_PRIORITY_ ## prio/** -* Run function before main() with low priority. -* -* The constructor will be run after prioritized constructors. -* -* @param func -* Constructor function. -*/ -#define RTE_INIT (func) \ -static void __attribute__((constructor, used)) func(void) - -/** * Run function before main() with high priority. * * @param func
@@ -111,6 +101,17 @@ static void __attribute__((constructor, used)) func(void)static void __attribute__((constructor (RTE_PRIO (prio)), used))func (void )/** +* Run function before main() with low priority. +* +* The constructor will be run after prioritized constructors. +* +* @param func +* Constructor function. + */ +#define RTE_INIT (func) \ + RTE_INIT_PRIO(func, LAST) + +/** * Force a function to be inlined */ #define __rte_always_inline inline __attribute__((always_inline))
Signature · 1 line
2.11.0
Re: [PATCH v1 2/2] eal: add last init priority
Quoted 7 lines
-----Original Message-----
From: dev [mailto:[email protected]] On Behalf Of Gaetan Rivet
Sent: Tuesday, April 24, 2018 4:59 PM
To: [email protected]
Cc: Gaetan Rivet <[email protected]>
Subject: [dpdk-dev] [PATCH v1 2/2] eal: add last init priority
Quoted 7 lines
Add the priority
RTE_PRIORITY_LAST, used for initialization routines meant to be run after all other constructors.This priority becomes the default priority for all DPDK constructors.
Signed-off-by Gaetan Rivet <[email protected]>---
Thomas Monjalon
AppliedRe: [PATCH v1 2/2] eal: add last init priority
Quoted 9 lines
Quoted 7 lines
Add the priority
RTE_PRIORITY_LAST, used for initialization routines meant to be run after all other constructors.This priority becomes the default priority for all DPDK constructors.
Signed-off-by Gaetan Rivet <[email protected]>---
Acked-by Shreyansh Jain <[email protected]>
Applied, thanks