[dpdk-dev,PATCHv4,2/5] compat: Add __experimental macro

Message ID 20171213151728.16747-3-nhorman@tuxdriver.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Neil Horman Dec. 13, 2017, 3:17 p.m. UTC
  The __experimental macro tags a given exported function as being part of
the EXPERIMENTAL api.  Use of this tag will cause any caller of the
function (that isn't removed by dead code elimination) to emit a warning
that the user is making use of an API whos stabilty isn't guaranteed.
It also places the function in the .text.experimental section, which is
used to validate the tag against the corresponding library version map

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: Thomas Monjalon <thomas@monjalon.net>
CC: "Mcnamara, John" <john.mcnamara@intel.com>
CC: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/librte_compat/rte_compat.h | 11 +++++++++++
 1 file changed, 11 insertions(+)
  

Comments

Thomas Monjalon Jan. 21, 2018, 6:37 p.m. UTC | #1
Hi,

I know I should have spotted these comments earlier,
I'm sorry to be late on this review.

13/12/2017 16:17, Neil Horman:
> +#ifndef ALLOW_EXPERIMENTAL_APIS
>  
> +#define __experimental \

These macros should be in the DPDK namespace:
	RTE_ALLOW_EXPERIMENTAL_API (no need of S)
	__rte_experimental

> +__attribute__((deprecated("Symbol is not yet part of stable abi"), \

Nit: s/abi/ABI/
  

Patch

diff --git a/lib/librte_compat/rte_compat.h b/lib/librte_compat/rte_compat.h
index 41e8032ba..450dd542c 100644
--- a/lib/librte_compat/rte_compat.h
+++ b/lib/librte_compat/rte_compat.h
@@ -101,5 +101,16 @@ 
  */
 #endif
 
+#ifndef ALLOW_EXPERIMENTAL_APIS
 
+#define __experimental \
+__attribute__((deprecated("Symbol is not yet part of stable abi"), \
+section(".text.experimental")))
+
+#else
+
+#define __experimental \
+__attribute__((section(".text.experimental")))
+
+#endif
 #endif /* _RTE_COMPAT_H_ */