From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0A4D3A034F; Wed, 13 May 2020 14:11:57 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2D99B1D55A; Wed, 13 May 2020 14:11:57 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id EDAEC1D546 for ; Wed, 13 May 2020 14:11:55 +0200 (CEST) IronPort-SDR: Unmm0gitBtpmBVAU60SJ/k1qaV7To4Z2EYULCsEA/skKmrZJmH98X8qwozNS1DF6AIrZAX0D9l n9ZAt/KNw8bw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 May 2020 05:11:54 -0700 IronPort-SDR: e6p9olStz8OfsIB+HtfK6eFFMmn8U5A2oY1USkc9AtKC38wUiTwTQ0oyBZz8AWRYC0EsuNH2ge RQNTu1mBhfNQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,387,1583222400"; d="scan'208";a="463917142" Received: from silpixa00399752.ir.intel.com (HELO silpixa00399752.ger.corp.intel.com) ([10.237.222.180]) by fmsmga005.fm.intel.com with ESMTP; 13 May 2020 05:11:52 -0700 From: Ferruh Yigit To: Ray Kinsella , Neil Horman , Cristian Dumitrescu , Eelco Chaudron Cc: dev@dpdk.org, Ferruh Yigit , Thomas Monjalon , David Marchand , Luca Boccassi , Bruce Richardson , Ian Stokes , Andrzej Ostruszka Date: Wed, 13 May 2020 13:11:49 +0100 Message-Id: <20200513121149.2283385-1-ferruh.yigit@intel.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: <20200129164350.3724793-1-ferruh.yigit@intel.com> References: <20200129164350.3724793-1-ferruh.yigit@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH] meter: provide experimental alias of API for old apps X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Duplicate the existing and versioned symbol as experimental. This is to prevent DPDK maturing experimental API breaking old applications using that experimental API. The relevant process update is captured in: https://patches.dpdk.org/patch/65863/ Created VERSION_SYMBOL_EXPERIMENTAL helper macro. Updated the 'check-experimental-syms.sh' buildtool, which was complaining that the symbol is in EXPERIMENTAL tag in .map file but it is not in the .experimental section (__rte_experimental tag is missing). Updated tool in a way it won't complain if the symbol in the EXPERIMENTAL tag duplicated in some other block in .map file (versioned) Enabled function versioning for meson build for the library. Fixes: 30512af820fe ("meter: remove experimental flag from RFC4115 trTCM API") Signed-off-by: Ferruh Yigit --- Cc: Neil Horman Cc: Thomas Monjalon Cc: Luca Boccassi Cc: David Marchand Cc: Bruce Richardson Cc: Ian Stokes Cc: Eelco Chaudron Cc: Andrzej Ostruszka Cc: Ray Kinsella --- buildtools/check-symbols.sh | 3 +- .../include/rte_function_versioning.h | 4 ++ lib/librte_meter/meson.build | 1 + lib/librte_meter/rte_meter.c | 59 ++++++++++++++++++- lib/librte_meter/rte_meter_version.map | 8 +++ 5 files changed, 71 insertions(+), 4 deletions(-) diff --git a/buildtools/check-symbols.sh b/buildtools/check-symbols.sh index 3df57c322c..e407553a34 100755 --- a/buildtools/check-symbols.sh +++ b/buildtools/check-symbols.sh @@ -26,7 +26,8 @@ ret=0 for SYM in `$LIST_SYMBOL -S EXPERIMENTAL $MAPFILE |cut -d ' ' -f 3` do if grep -q "\.text.*[[:space:]]$SYM$" $DUMPFILE && - ! grep -q "\.text\.experimental.*[[:space:]]$SYM$" $DUMPFILE + ! grep -q "\.text\.experimental.*[[:space:]]$SYM$" $DUMPFILE && + $LIST_SYMBOL -s $SYM $MAPFILE | grep -q EXPERIMENTAL then cat >&2 <<- END_OF_MESSAGE $SYM is not flagged as experimental diff --git a/lib/librte_eal/include/rte_function_versioning.h b/lib/librte_eal/include/rte_function_versioning.h index b9f862d295..22ec5f9424 100644 --- a/lib/librte_eal/include/rte_function_versioning.h +++ b/lib/librte_eal/include/rte_function_versioning.h @@ -46,6 +46,9 @@ */ #define VERSION_SYMBOL(b, e, n) __asm__(".symver " RTE_STR(b) RTE_STR(e) ", " RTE_STR(b) "@DPDK_" RTE_STR(n)) + +#define VERSION_SYMBOL_EXPERIMENTAL(b, e) __asm__(".symver " RTE_STR(b) RTE_STR(e) ", " RTE_STR(b) "@EXPERIMENTAL") + /* * BIND_DEFAULT_SYMBOL * Creates a symbol version entry instructing the linker to bind references to @@ -79,6 +82,7 @@ * No symbol versioning in use */ #define VERSION_SYMBOL(b, e, n) +#define VERSION_SYMBOL_EXPERIMENTAL(b, e) #define __vsym #define BIND_DEFAULT_SYMBOL(b, e, n) #define MAP_STATIC_SYMBOL(f, p) f __attribute__((alias(RTE_STR(p)))) diff --git a/lib/librte_meter/meson.build b/lib/librte_meter/meson.build index 646fd4d43f..fce0368437 100644 --- a/lib/librte_meter/meson.build +++ b/lib/librte_meter/meson.build @@ -3,3 +3,4 @@ sources = files('rte_meter.c') headers = files('rte_meter.h') +use_function_versioning = true diff --git a/lib/librte_meter/rte_meter.c b/lib/librte_meter/rte_meter.c index da01429a8b..c600b05064 100644 --- a/lib/librte_meter/rte_meter.c +++ b/lib/librte_meter/rte_meter.c @@ -9,6 +9,7 @@ #include #include #include +#include #include "rte_meter.h" @@ -119,8 +120,8 @@ rte_meter_trtcm_config(struct rte_meter_trtcm *m, return 0; } -int -rte_meter_trtcm_rfc4115_profile_config( +static int +rte_meter_trtcm_rfc4115_profile_config_( struct rte_meter_trtcm_rfc4115_profile *p, struct rte_meter_trtcm_rfc4115_params *params) { @@ -145,7 +146,35 @@ rte_meter_trtcm_rfc4115_profile_config( } int -rte_meter_trtcm_rfc4115_config( +rte_meter_trtcm_rfc4115_profile_config_s( + struct rte_meter_trtcm_rfc4115_profile *p, + struct rte_meter_trtcm_rfc4115_params *params); +int +rte_meter_trtcm_rfc4115_profile_config_s( + struct rte_meter_trtcm_rfc4115_profile *p, + struct rte_meter_trtcm_rfc4115_params *params) +{ + return rte_meter_trtcm_rfc4115_profile_config_(p, params); +} +BIND_DEFAULT_SYMBOL(rte_meter_trtcm_rfc4115_profile_config, _s, 21); +MAP_STATIC_SYMBOL(int rte_meter_trtcm_rfc4115_profile_config(struct rte_meter_trtcm_rfc4115_profile *p, + struct rte_meter_trtcm_rfc4115_params *params), rte_meter_trtcm_rfc4115_profile_config_s); + +int +rte_meter_trtcm_rfc4115_profile_config_e( + struct rte_meter_trtcm_rfc4115_profile *p, + struct rte_meter_trtcm_rfc4115_params *params); +int +rte_meter_trtcm_rfc4115_profile_config_e( + struct rte_meter_trtcm_rfc4115_profile *p, + struct rte_meter_trtcm_rfc4115_params *params) +{ + return rte_meter_trtcm_rfc4115_profile_config_(p, params); +} +VERSION_SYMBOL_EXPERIMENTAL(rte_meter_trtcm_rfc4115_profile_config, _e); + +static int +rte_meter_trtcm_rfc4115_config_( struct rte_meter_trtcm_rfc4115 *m, struct rte_meter_trtcm_rfc4115_profile *p) { @@ -160,3 +189,27 @@ rte_meter_trtcm_rfc4115_config( return 0; } + +int +rte_meter_trtcm_rfc4115_config_s(struct rte_meter_trtcm_rfc4115 *m, + struct rte_meter_trtcm_rfc4115_profile *p); +int +rte_meter_trtcm_rfc4115_config_s(struct rte_meter_trtcm_rfc4115 *m, + struct rte_meter_trtcm_rfc4115_profile *p) +{ + return rte_meter_trtcm_rfc4115_config_(m, p); +} +BIND_DEFAULT_SYMBOL(rte_meter_trtcm_rfc4115_config, _s, 21); +MAP_STATIC_SYMBOL(int rte_meter_trtcm_rfc4115_config(struct rte_meter_trtcm_rfc4115 *m, + struct rte_meter_trtcm_rfc4115_profile *p), rte_meter_trtcm_rfc4115_config_s); + +int +rte_meter_trtcm_rfc4115_config_e(struct rte_meter_trtcm_rfc4115 *m, + struct rte_meter_trtcm_rfc4115_profile *p); +int +rte_meter_trtcm_rfc4115_config_e(struct rte_meter_trtcm_rfc4115 *m, + struct rte_meter_trtcm_rfc4115_profile *p) +{ + return rte_meter_trtcm_rfc4115_config_(m, p); +} +VERSION_SYMBOL_EXPERIMENTAL(rte_meter_trtcm_rfc4115_config, _e); diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map index 2c7dadbcac..b493bcebe9 100644 --- a/lib/librte_meter/rte_meter_version.map +++ b/lib/librte_meter/rte_meter_version.map @@ -20,4 +20,12 @@ DPDK_21 { rte_meter_trtcm_rfc4115_color_blind_check; rte_meter_trtcm_rfc4115_config; rte_meter_trtcm_rfc4115_profile_config; + } DPDK_20.0; + +EXPERIMENTAL { + global: + + rte_meter_trtcm_rfc4115_config; + rte_meter_trtcm_rfc4115_profile_config; +}; -- 2.25.4