[dpdk-dev] [PATCH v2 00/10] experimental tags fixes

David Marchand david.marchand at redhat.com
Sat Jun 29 13:58:43 CEST 2019


Here is a new series on __rte_experimental tags.

Following the build error reported by Aaron [1], I noticed that some
experimental functions could go unnoticed because of a gcc peculiarity.

To catch those, I went and added a new check on the object files to
ensure that any experimental api flagged in the map files is really
exported as such.

Then went with my previous idea of only adding the tags on the functions
prototypes and enforcing it (a new check in checkpatches.sh).
And finally enforcing that the __rte_experimental tag is always the first
part of a function prototype which seems to work with both gcc and clang.

Comments and reviews highly welcome :-).

Changelog since v1:
- rebased on master, caught newly introduced issues in eal
- added acks
- fixed telemetry issue
- squashed Adrien proposition in the last patch

[1]: http://mails.dpdk.org/archives/dev/2019-June/135365.html

-- 
David Marchand

David Marchand (10):
  eal: hide internal hotplug symbol
  devargs: remove incorrect experimental tags
  vfio: remove incorrect experimental tag
  raw/dpaa2_qdma: remove incorrect experimental tag
  buildtools: detect discrepancies for experimental symbols
  net/atlantic: add missing experimental api tags
  mem: remove incorrect experimental tag on static symbol
  telemetry: add missing header include
  remove experimental tags from all symbol definitions
  enforce __rte_experimental at the start of symbol declarations

 buildtools/check-experimental-syms.sh              | 29 ++++++--
 buildtools/map-list-symbol.sh                      | 70 +++++++++++++++++++
 devtools/checkpatches.sh                           | 38 +++++++++++
 doc/guides/contributing/versioning.rst             |  6 +-
 drivers/net/atlantic/rte_pmd_atlantic.c            | 12 ++--
 drivers/net/atlantic/rte_pmd_atlantic.h            | 24 +++++++
 drivers/net/dpaa2/dpaa2_ethdev.c                   |  2 +-
 drivers/net/ixgbe/rte_pmd_ixgbe.c                  | 10 +--
 drivers/net/ixgbe/rte_pmd_ixgbe.h                  | 15 +++--
 drivers/net/softnic/rte_eth_softnic.h              |  3 +-
 drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma.h        |  2 +-
 lib/librte_bbdev/rte_bbdev.c                       | 52 +++++++--------
 lib/librte_bbdev/rte_bbdev.h                       | 72 +++++++++++++-------
 lib/librte_bbdev/rte_bbdev_op.h                    | 18 +++--
 lib/librte_bbdev/rte_bbdev_pmd.h                   | 12 ++--
 lib/librte_bpf/bpf.c                               |  4 +-
 lib/librte_bpf/bpf_exec.c                          |  4 +-
 lib/librte_bpf/bpf_load.c                          |  4 +-
 lib/librte_bpf/bpf_load_elf.c                      |  2 +-
 lib/librte_bpf/bpf_pkt.c                           |  8 +--
 lib/librte_bpf/rte_bpf.h                           | 18 +++--
 lib/librte_bpf/rte_bpf_ethdev.h                    | 12 ++--
 lib/librte_compressdev/rte_comp.c                  | 12 ++--
 lib/librte_compressdev/rte_comp.h                  | 18 +++--
 lib/librte_compressdev/rte_compressdev.c           | 50 +++++++-------
 lib/librte_compressdev/rte_compressdev.h           | 66 ++++++++++++------
 lib/librte_compressdev/rte_compressdev_pmd.c       |  6 +-
 lib/librte_compressdev/rte_compressdev_pmd.h       | 18 +++--
 lib/librte_cryptodev/rte_cryptodev.c               | 28 ++++----
 lib/librte_cryptodev/rte_cryptodev.h               | 42 ++++++++----
 lib/librte_eal/common/eal_common_class.c           |  6 +-
 lib/librte_eal/common/eal_common_dev.c             |  8 +--
 lib/librte_eal/common/eal_common_fbarray.c         | 52 +++++++--------
 lib/librte_eal/common/eal_common_log.c             |  2 +-
 lib/librte_eal/common/eal_common_memory.c          | 50 +++++++-------
 lib/librte_eal/common/eal_common_proc.c            | 12 ++--
 lib/librte_eal/common/eal_common_timer.c           |  2 +-
 lib/librte_eal/common/hotplug_mp.c                 |  2 +-
 lib/librte_eal/common/hotplug_mp.h                 |  9 +++
 .../common/include/arch/x86/rte_atomic_64.h        |  3 +-
 lib/librte_eal/common/include/generic/rte_atomic.h |  3 +-
 lib/librte_eal/common/include/generic/rte_cycles.h |  3 +-
 lib/librte_eal/common/include/generic/rte_rwlock.h |  6 +-
 .../common/include/generic/rte_ticketlock.h        | 27 +++++---
 lib/librte_eal/common/include/rte_dev.h            | 27 +++++---
 lib/librte_eal/common/include/rte_devargs.h        |  2 -
 lib/librte_eal/common/include/rte_eal.h            | 27 ++++----
 lib/librte_eal/common/include/rte_fbarray.h        | 78 ++++++++++++++--------
 lib/librte_eal/common/include/rte_interrupts.h     |  3 +-
 lib/librte_eal/common/include/rte_lcore.h          |  6 +-
 lib/librte_eal/common/include/rte_malloc.h         | 30 ++++++---
 lib/librte_eal/common/include/rte_memory.h         | 72 +++++++++++++-------
 lib/librte_eal/common/include/rte_random.h         |  3 +-
 lib/librte_eal/common/include/rte_service.h        |  9 ++-
 lib/librte_eal/common/rte_malloc.c                 |  2 +-
 lib/librte_eal/common/rte_option.c                 |  1 -
 lib/librte_eal/common/rte_random.c                 |  2 +-
 lib/librte_eal/common/rte_service.c                |  6 +-
 lib/librte_eal/freebsd/eal/eal.c                   |  2 +-
 lib/librte_eal/freebsd/eal/eal_dev.c               |  8 +--
 lib/librte_eal/freebsd/eal/eal_interrupts.c        |  2 +-
 lib/librte_eal/linux/eal/eal.c                     |  3 +-
 lib/librte_eal/linux/eal/eal_dev.c                 |  8 +--
 lib/librte_eal/linux/eal/eal_interrupts.c          |  2 +-
 lib/librte_eal/linux/eal/eal_vfio.c                |  2 +-
 lib/librte_ethdev/rte_ethdev.c                     | 28 ++++----
 lib/librte_ethdev/rte_ethdev.h                     | 36 ++++++----
 lib/librte_ethdev/rte_ethdev_driver.h              | 15 +++--
 lib/librte_ethdev/rte_flow.c                       |  2 +-
 lib/librte_ethdev/rte_flow_driver.h                |  3 +-
 lib/librte_ethdev/rte_mtr.c                        | 24 +++----
 lib/librte_ethdev/rte_mtr.h                        | 36 ++++++----
 lib/librte_eventdev/rte_event_eth_rx_adapter.c     |  4 +-
 lib/librte_eventdev/rte_event_eth_rx_adapter.h     |  6 +-
 lib/librte_flow_classify/rte_flow_classify.c       | 14 ++--
 lib/librte_flow_classify/rte_flow_classify.h       | 21 ++++--
 lib/librte_hash/rte_cuckoo_hash.c                  |  2 +-
 lib/librte_hash/rte_hash.h                         |  3 +-
 lib/librte_ip_frag/rte_ip_frag.h                   |  3 +-
 lib/librte_ip_frag/rte_ip_frag_common.c            |  2 +-
 lib/librte_ipsec/rte_ipsec.h                       |  9 ++-
 lib/librte_ipsec/rte_ipsec_group.h                 |  6 +-
 lib/librte_ipsec/rte_ipsec_sa.h                    | 12 ++--
 lib/librte_ipsec/sa.c                              |  8 +--
 lib/librte_ipsec/ses.c                             |  2 +-
 lib/librte_kni/rte_kni.c                           |  2 +-
 lib/librte_kni/rte_kni.h                           |  3 +-
 lib/librte_kvargs/rte_kvargs.c                     |  2 -
 lib/librte_mbuf/rte_mbuf.c                         |  1 -
 lib/librte_mbuf/rte_mbuf.h                         | 18 +++--
 lib/librte_meter/rte_meter.c                       |  4 +-
 lib/librte_meter/rte_meter.h                       | 18 +++--
 lib/librte_net/rte_arp.c                           |  2 +-
 lib/librte_net/rte_arp.h                           |  3 +-
 lib/librte_net/rte_net.c                           |  2 +-
 lib/librte_net/rte_net.h                           |  3 +-
 lib/librte_pipeline/rte_port_in_action.h           | 24 ++++---
 lib/librte_pipeline/rte_table_action.h             | 48 ++++++++-----
 lib/librte_power/rte_power_empty_poll.c            | 14 ++--
 lib/librte_power/rte_power_empty_poll.h            | 21 ++++--
 lib/librte_rcu/rte_rcu_qsbr.c                      | 12 ++--
 lib/librte_rcu/rte_rcu_qsbr.h                      | 39 +++++++----
 lib/librte_sched/rte_sched.c                       |  2 +-
 lib/librte_sched/rte_sched.h                       |  3 +-
 lib/librte_security/rte_security.c                 |  6 +-
 lib/librte_security/rte_security.h                 |  9 ++-
 lib/librte_stack/rte_stack.h                       | 21 ++++--
 lib/librte_stack/rte_stack_lf.h                    |  6 +-
 lib/librte_stack/rte_stack_std.h                   |  9 ++-
 lib/librte_table/rte_table_hash_func.h             | 27 +++++---
 lib/librte_telemetry/rte_telemetry.c               |  6 +-
 lib/librte_telemetry/rte_telemetry.h               |  9 ++-
 lib/librte_telemetry/rte_telemetry_parser.c        |  3 +-
 lib/librte_telemetry/rte_telemetry_parser.h        |  3 +-
 lib/librte_timer/rte_timer.c                       | 16 ++---
 lib/librte_timer/rte_timer.h                       | 24 ++++---
 lib/librte_vhost/rte_vdpa.h                        | 21 ++++--
 lib/librte_vhost/rte_vhost.h                       | 33 ++++++---
 lib/librte_vhost/rte_vhost_crypto.h                | 15 +++--
 lib/librte_vhost/vdpa.c                            |  2 +-
 lib/librte_vhost/vhost_crypto.c                    | 10 +--
 121 files changed, 1160 insertions(+), 654 deletions(-)
 create mode 100755 buildtools/map-list-symbol.sh

-- 
1.8.3.1



More information about the dev mailing list