DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] build: list symbols exports in a single file
@ 2021-04-06 16:32 David Marchand
  2021-04-06 16:40 ` David Marchand
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: David Marchand @ 2021-04-06 16:32 UTC (permalink / raw)
  To: dev
  Cc: thomas, Dmitry Kozlyuk, Narcisa Ana Maria Vasile, Dmitry Malloy,
	Pallavi Kadam, Ray Kinsella, Neil Horman

Rather than have two files that keeps getting out of sync, let's
annotate the version.map to generate the Windows export file.

Note: EAL version.map annotation achieved with:
$ ./buildtools/map-list-symbol.sh lib/librte_eal/version.map |
  while read file version sym; do
    ! git grep -qw $sym lib/librte_eal/*.def || continue;
    sed -i -e "s/$sym;/$sym; # WINDOWS_NO_EXPORT/" lib/librte_eal/*.map;
  done

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 MAINTAINERS                        |   1 -
 buildtools/map_to_win.py           |   8 +-
 devtools/check-symbol-maps.sh      |  20 --
 lib/librte_eal/rte_eal_exports.def | 336 -----------------------------
 lib/librte_eal/version.map         | 136 ++++++------
 5 files changed, 69 insertions(+), 432 deletions(-)
 delete mode 100644 lib/librte_eal/rte_eal_exports.def

diff --git a/MAINTAINERS b/MAINTAINERS
index 0ec5588540..f2d600d0cf 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -333,7 +333,6 @@ M: Narcisa Ana Maria Vasile <navasile@linux.microsoft.com>
 M: Dmitry Malloy <dmitrym@microsoft.com>
 M: Pallavi Kadam <pallavi.kadam@intel.com>
 F: lib/librte_eal/windows/
-F: lib/librte_eal/rte_eal_exports.def
 F: buildtools/map_to_win.py
 F: doc/guides/windows_gsg/
 
diff --git a/buildtools/map_to_win.py b/buildtools/map_to_win.py
index 2a6cb88605..34434d96fa 100644
--- a/buildtools/map_to_win.py
+++ b/buildtools/map_to_win.py
@@ -7,7 +7,7 @@
 
 
 def is_function_line(ln):
-    return ln.startswith('\t') and ln.endswith(';\n') and ":" not in ln
+    return ln.startswith('\t') and ln.endswith(';\n') and ":" not in ln and "# WINDOWS_NO_EXPORT" not in ln
 
 # MinGW keeps the original .map file but replaces per_lcore* to __emutls_v.per_lcore*
 def create_mingw_map_file(input_map, output_map):
@@ -24,12 +24,6 @@ def main(args):
         create_mingw_map_file(args[1], args[2])
         return 0
 
-# special case, allow override if an def file already exists alongside map file
-    override_file = join(dirname(args[1]), basename(args[2]))
-    if exists(override_file):
-        with open(override_file) as f_in:
-            functions = f_in.readlines()
-
 # generate def file from map file.
 # This works taking indented lines only which end with a ";" and which don't
 # have a colon in them, i.e. the lines defining functions only.
diff --git a/devtools/check-symbol-maps.sh b/devtools/check-symbol-maps.sh
index c3cbcaf720..b9e1e18456 100755
--- a/devtools/check-symbol-maps.sh
+++ b/devtools/check-symbol-maps.sh
@@ -35,24 +35,4 @@ if [ -n "$orphan_symbols" ] ; then
     ret=1
 fi
 
-find_orphan_windows_symbols ()
-{
-    for def in $(find lib drivers -name '*_exports.def') ; do
-        if echo $def | grep -q 'common_mlx5' ; then
-            continue # mlx5 exports different symbols per OS
-        fi
-        map=$(dirname $def)/version.map
-        for sym in $(grep -v ^EXPORTS $def); do
-            grep -q $sym $map || echo $sym
-        done
-    done
-}
-
-orphan_windows_symbols=$(find_orphan_windows_symbols)
-if [ -n "$orphan_windows_symbols" ] ; then
-    echo "Found only in Windows export file:"
-    echo "$orphan_windows_symbols" | sed 's,^,\t,'
-    ret=1
-fi
-
 exit $ret
diff --git a/lib/librte_eal/rte_eal_exports.def b/lib/librte_eal/rte_eal_exports.def
deleted file mode 100644
index c320077547..0000000000
--- a/lib/librte_eal/rte_eal_exports.def
+++ /dev/null
@@ -1,336 +0,0 @@
-EXPORTS
-	__rte_panic
-	per_lcore__lcore_id
-	per_lcore__rte_errno
-	per_lcore__thread_id
-	rte_bus_dump
-	rte_bus_find
-	rte_bus_find_by_device
-	rte_bus_find_by_name
-	rte_bus_get_iommu_class
-	rte_bus_probe
-	rte_bus_register
-	rte_bus_scan
-	rte_bus_unregister
-	rte_calloc
-	rte_calloc_socket
-	rte_cpu_get_flag_enabled
-	rte_cpu_get_flag_name
-	rte_ctrl_thread_create
-	rte_delay_us
-	rte_delay_us_block
-	rte_delay_us_callback_register
-	rte_dev_is_probed
-	rte_dev_probe
-	rte_dev_remove
-	rte_devargs_add
-	rte_devargs_dump
-	rte_devargs_insert
-	rte_devargs_next
-	rte_devargs_parse
-	rte_devargs_parsef
-	rte_devargs_remove
-	rte_devargs_type_count
-	rte_dump_physmem_layout
-	rte_dump_stack
-	rte_dump_tailq
-	rte_eal_alarm_cancel
-	rte_eal_alarm_set
-	rte_eal_cleanup
-	rte_eal_get_lcore_state
-	rte_eal_get_physmem_size
-	rte_eal_get_runtime_dir
-	rte_eal_has_hugepages
-	rte_eal_has_pci
-	rte_eal_hotplug_add
-	rte_eal_hotplug_remove
-	rte_eal_init
-	rte_eal_iova_mode
-	rte_eal_lcore_role
-	rte_eal_mbuf_user_pool_ops
-	rte_eal_mp_remote_launch
-	rte_eal_mp_wait_lcore
-	rte_eal_process_type
-	rte_eal_remote_launch
-	rte_eal_tailq_lookup
-	rte_eal_tailq_register
-	rte_eal_using_phys_addrs
-	rte_eal_wait_lcore
-	rte_epoll_ctl
-	rte_epoll_wait
-	rte_exit
-	rte_free
-	rte_get_main_lcore
-	rte_get_next_lcore
-	rte_get_tsc_hz
-	rte_hexdump
-	rte_hypervisor_get
-	rte_intr_allow_others
-	rte_intr_callback_register
-	rte_intr_callback_unregister
-	rte_intr_cap_multiple
-	rte_intr_disable
-	rte_intr_dp_is_en
-	rte_intr_efd_disable
-	rte_intr_efd_enable
-	rte_intr_enable
-	rte_intr_free_epoll_fd
-	rte_intr_rx_ctl
-	rte_intr_tls_epfd
-	rte_lcore_count
-	rte_lcore_has_role
-	rte_lcore_index
-	rte_lcore_is_enabled
-	rte_lcore_to_socket_id
-	rte_log
-	rte_log_cur_msg_loglevel
-	rte_log_cur_msg_logtype
-	rte_log_dump
-	rte_log_get_global_level
-	rte_log_get_level
-	rte_log_get_stream
-	rte_log_register
-	rte_log_set_global_level
-	rte_log_set_level
-	rte_log_set_level_pattern
-	rte_log_set_level_regexp
-	rte_malloc
-	rte_malloc_dump_stats
-	rte_malloc_get_socket_stats
-	rte_malloc_set_limit
-	rte_malloc_socket
-	rte_malloc_validate
-	rte_malloc_virt2iova
-	rte_mcfg_mem_read_lock
-	rte_mcfg_mem_read_unlock
-	rte_mcfg_mem_write_lock
-	rte_mcfg_mem_write_unlock
-	rte_mcfg_mempool_read_lock
-	rte_mcfg_mempool_read_unlock
-	rte_mcfg_mempool_write_lock
-	rte_mcfg_mempool_write_unlock
-	rte_mcfg_tailq_read_lock
-	rte_mcfg_tailq_read_unlock
-	rte_mcfg_tailq_write_lock
-	rte_mcfg_tailq_write_unlock
-	rte_mem_lock_page
-	rte_mem_virt2iova
-	rte_mem_virt2phy
-	rte_memdump
-	rte_memory_get_nchannel
-	rte_memory_get_nrank
-	rte_memzone_dump
-	rte_memzone_free
-	rte_memzone_lookup
-	rte_memzone_reserve
-	rte_memzone_reserve_aligned
-	rte_memzone_reserve_bounded
-	rte_memzone_walk
-	rte_openlog_stream
-	rte_rand
-	rte_realloc
-	rte_reciprocal_value
-	rte_reciprocal_value_u64
-	rte_rtm_supported
-	rte_service_attr_get
-	rte_service_attr_reset_all
-	rte_service_component_register
-	rte_service_component_runstate_set
-	rte_service_component_unregister
-	rte_service_dump
-	rte_service_finalize
-	rte_service_get_by_name
-	rte_service_get_count
-	rte_service_get_name
-	rte_service_lcore_add
-	rte_service_lcore_attr_get
-	rte_service_lcore_attr_reset_all
-	rte_service_lcore_count
-	rte_service_lcore_count_services
-	rte_service_lcore_del
-	rte_service_lcore_list
-	rte_service_lcore_reset_all
-	rte_service_lcore_start
-	rte_service_lcore_stop
-	rte_service_map_lcore_get
-	rte_service_map_lcore_set
-	rte_service_may_be_active
-	rte_service_probe_capability
-	rte_service_run_iter_on_app_lcore
-	rte_service_runstate_get
-	rte_service_runstate_set
-	rte_service_set_runstate_mapped_check
-	rte_service_set_stats_enable
-	rte_service_start_with_defaults
-	rte_set_application_usage_hook
-	rte_socket_count
-	rte_socket_id
-	rte_socket_id_by_idx
-	rte_strerror
-	rte_strscpy
-	rte_strsplit
-	rte_sys_gettid
-	rte_thread_get_affinity
-	rte_thread_set_affinity
-	rte_thread_setname
-	rte_vfio_container_dma_map
-	rte_vfio_container_dma_unmap
-	rte_vlog
-	rte_zmalloc
-	rte_zmalloc_socket
-
-	rte_mp_action_register
-	rte_mp_action_unregister
-	rte_mp_reply
-	rte_mp_sendmsg
-
-	rte_dev_event_callback_register
-	rte_dev_event_callback_unregister
-	rte_fbarray_attach
-	rte_fbarray_destroy
-	rte_fbarray_detach
-	rte_fbarray_dump_metadata
-	rte_fbarray_find_contig_free
-	rte_fbarray_find_contig_used
-	rte_fbarray_find_idx
-	rte_fbarray_find_next_free
-	rte_fbarray_find_next_n_free
-	rte_fbarray_find_next_n_used
-	rte_fbarray_find_next_used
-	rte_fbarray_get
-	rte_fbarray_init
-	rte_fbarray_is_used
-	rte_fbarray_set_free
-	rte_fbarray_set_used
-	rte_log_register_type_and_pick_level
-	rte_malloc_dump_heaps
-	rte_mem_alloc_validator_register
-	rte_mem_alloc_validator_unregister
-	rte_mem_check_dma_mask
-	rte_mem_event_callback_register
-	rte_mem_event_callback_unregister
-	rte_mem_iova2virt
-	rte_mem_virt2memseg
-	rte_mem_virt2memseg_list
-	rte_memseg_contig_walk
-	rte_memseg_list_walk
-	rte_memseg_walk
-	rte_mp_request_async
-	rte_mp_request_sync
-
-	rte_class_find
-	rte_class_find_by_name
-	rte_class_register
-	rte_class_unregister
-	rte_dev_iterator_init
-	rte_dev_iterator_next
-	rte_fbarray_find_prev_free
-	rte_fbarray_find_prev_n_free
-	rte_fbarray_find_prev_n_used
-	rte_fbarray_find_prev_used
-	rte_fbarray_find_rev_contig_free
-	rte_fbarray_find_rev_contig_used
-	rte_memseg_contig_walk_thread_unsafe
-	rte_memseg_list_walk_thread_unsafe
-	rte_memseg_walk_thread_unsafe
-
-	rte_delay_us_sleep
-	rte_dev_event_callback_process
-	rte_malloc_heap_create
-	rte_malloc_heap_destroy
-	rte_malloc_heap_get_socket
-	rte_malloc_heap_memory_add
-	rte_malloc_heap_memory_attach
-	rte_malloc_heap_memory_detach
-	rte_malloc_heap_memory_remove
-	rte_malloc_heap_socket_is_external
-	rte_mem_check_dma_mask_thread_unsafe
-	rte_mem_set_dma_mask
-	rte_memseg_get_fd
-	rte_memseg_get_fd_offset
-	rte_memseg_get_fd_offset_thread_unsafe
-	rte_memseg_get_fd_thread_unsafe
-
-	rte_extmem_attach
-	rte_extmem_detach
-	rte_extmem_register
-	rte_extmem_unregister
-
-	rte_dev_dma_map
-	rte_dev_dma_unmap
-	rte_fbarray_find_biggest_free
-	rte_fbarray_find_biggest_used
-	rte_fbarray_find_rev_biggest_free
-	rte_fbarray_find_rev_biggest_used
-	rte_intr_callback_unregister_pending
-	rte_realloc_socket
-
-	rte_intr_ack
-	rte_lcore_cpuset
-	rte_lcore_to_cpu_id
-	rte_mcfg_timer_lock
-	rte_mcfg_timer_unlock
-	rte_mcfg_get_single_file_segments
-
-	rte_thread_is_intr
-
-	__rte_eal_trace_alarm_cancel
-	__rte_eal_trace_alarm_set
-	__rte_eal_trace_generic_double
-	__rte_eal_trace_generic_float
-	__rte_eal_trace_generic_func
-	__rte_eal_trace_generic_i16
-	__rte_eal_trace_generic_i32
-	__rte_eal_trace_generic_i64
-	__rte_eal_trace_generic_i8
-	__rte_eal_trace_generic_int
-	__rte_eal_trace_generic_long
-	__rte_eal_trace_generic_ptr
-	__rte_eal_trace_generic_str
-	__rte_eal_trace_generic_u16
-	__rte_eal_trace_generic_u32
-	__rte_eal_trace_generic_u64
-	__rte_eal_trace_generic_u8
-	__rte_eal_trace_generic_void
-	__rte_eal_trace_intr_callback_register
-	__rte_eal_trace_intr_callback_unregister
-	__rte_eal_trace_intr_enable
-	__rte_eal_trace_intr_disable
-	__rte_eal_trace_mem_free
-	__rte_eal_trace_mem_malloc
-	__rte_eal_trace_mem_realloc
-	__rte_eal_trace_mem_zmalloc
-	__rte_eal_trace_memzone_free
-	__rte_eal_trace_memzone_lookup
-	__rte_eal_trace_memzone_reserve
-	__rte_eal_trace_thread_lcore_ready
-	__rte_eal_trace_thread_remote_launch
-	__rte_trace_mem_per_thread_alloc
-	__rte_trace_point_emit_field
-	__rte_trace_point_register
-	per_lcore_trace_mem
-	per_lcore_trace_point_sz
-	rte_log_can_log
-
-	rte_lcore_callback_register
-	rte_lcore_callback_unregister
-	rte_lcore_dump
-	rte_lcore_iterate
-	rte_mp_disable
-	rte_service_lcore_may_be_active
-	rte_thread_register
-	rte_thread_unregister
-
-	rte_epoll_wait_interruptible
-	rte_vect_get_max_simd_bitwidth
-	rte_vect_set_max_simd_bitwidth
-
-	rte_thread_key_create
-	rte_thread_key_delete
-	rte_thread_value_get
-	rte_thread_value_set
-
-	rte_mem_lock
-	rte_mem_map
-	rte_mem_page_size
-	rte_mem_unmap
diff --git a/lib/librte_eal/version.map b/lib/librte_eal/version.map
index e23745ae6e..151330b1b5 100644
--- a/lib/librte_eal/version.map
+++ b/lib/librte_eal/version.map
@@ -2,8 +2,8 @@ DPDK_21 {
 	global:
 
 	__rte_panic;
-	eal_parse_sysfs_value;
-	eal_timer_source;
+	eal_parse_sysfs_value; # WINDOWS_NO_EXPORT
+	eal_timer_source; # WINDOWS_NO_EXPORT
 	per_lcore__lcore_id;
 	per_lcore__rte_errno;
 	per_lcore__thread_id;
@@ -20,9 +20,9 @@ DPDK_21 {
 	rte_calloc_socket;
 	rte_cpu_get_flag_enabled;
 	rte_cpu_get_flag_name;
-	rte_cpu_is_supported;
+	rte_cpu_is_supported; # WINDOWS_NO_EXPORT
 	rte_ctrl_thread_create;
-	rte_cycles_vmware_tsc_map;
+	rte_cycles_vmware_tsc_map; # WINDOWS_NO_EXPORT
 	rte_delay_us;
 	rte_delay_us_block;
 	rte_delay_us_callback_register;
@@ -43,7 +43,7 @@ DPDK_21 {
 	rte_eal_alarm_cancel;
 	rte_eal_alarm_set;
 	rte_eal_cleanup;
-	rte_eal_create_uio_dev;
+	rte_eal_create_uio_dev; # WINDOWS_NO_EXPORT
 	rte_eal_get_lcore_state;
 	rte_eal_get_physmem_size;
 	rte_eal_get_runtime_dir;
@@ -51,34 +51,34 @@ DPDK_21 {
 	rte_eal_has_pci;
 	rte_eal_hotplug_add;
 	rte_eal_hotplug_remove;
-	rte_eal_hpet_init;
+	rte_eal_hpet_init; # WINDOWS_NO_EXPORT
 	rte_eal_init;
-	rte_eal_iopl_init;
+	rte_eal_iopl_init; # WINDOWS_NO_EXPORT
 	rte_eal_iova_mode;
 	rte_eal_lcore_role;
 	rte_eal_mbuf_user_pool_ops;
 	rte_eal_mp_remote_launch;
 	rte_eal_mp_wait_lcore;
-	rte_eal_primary_proc_alive;
+	rte_eal_primary_proc_alive; # WINDOWS_NO_EXPORT
 	rte_eal_process_type;
 	rte_eal_remote_launch;
 	rte_eal_tailq_lookup;
 	rte_eal_tailq_register;
 	rte_eal_using_phys_addrs;
-	rte_eal_vfio_intr_mode;
+	rte_eal_vfio_intr_mode; # WINDOWS_NO_EXPORT
 	rte_eal_wait_lcore;
 	rte_epoll_ctl;
 	rte_epoll_wait;
 	rte_exit;
 	rte_free;
-	rte_get_hpet_cycles;
-	rte_get_hpet_hz;
+	rte_get_hpet_cycles; # WINDOWS_NO_EXPORT
+	rte_get_hpet_hz; # WINDOWS_NO_EXPORT
 	rte_get_main_lcore;
 	rte_get_next_lcore;
 	rte_get_tsc_hz;
 	rte_hexdump;
 	rte_hypervisor_get;
-	rte_hypervisor_get_name;
+	rte_hypervisor_get_name; # WINDOWS_NO_EXPORT
 	rte_intr_allow_others;
 	rte_intr_callback_register;
 	rte_intr_callback_unregister;
@@ -91,12 +91,12 @@ DPDK_21 {
 	rte_intr_free_epoll_fd;
 	rte_intr_rx_ctl;
 	rte_intr_tls_epfd;
-	rte_keepalive_create;
-	rte_keepalive_dispatch_pings;
-	rte_keepalive_mark_alive;
-	rte_keepalive_mark_sleep;
-	rte_keepalive_register_core;
-	rte_keepalive_register_relay_callback;
+	rte_keepalive_create; # WINDOWS_NO_EXPORT
+	rte_keepalive_dispatch_pings; # WINDOWS_NO_EXPORT
+	rte_keepalive_mark_alive; # WINDOWS_NO_EXPORT
+	rte_keepalive_mark_sleep; # WINDOWS_NO_EXPORT
+	rte_keepalive_register_core; # WINDOWS_NO_EXPORT
+	rte_keepalive_register_relay_callback; # WINDOWS_NO_EXPORT
 	rte_lcore_count;
 	rte_lcore_has_role;
 	rte_lcore_index;
@@ -159,7 +159,7 @@ DPDK_21 {
 	rte_service_component_unregister;
 	rte_service_dump;
 	rte_service_finalize;
-	rte_service_get_by_id;
+	rte_service_get_by_id; # WINDOWS_NO_EXPORT
 	rte_service_get_by_name;
 	rte_service_get_count;
 	rte_service_get_name;
@@ -187,7 +187,7 @@ DPDK_21 {
 	rte_socket_count;
 	rte_socket_id;
 	rte_socket_id_by_idx;
-	rte_srand;
+	rte_srand; # WINDOWS_NO_EXPORT
 	rte_strerror;
 	rte_strscpy;
 	rte_strsplit;
@@ -195,26 +195,26 @@ DPDK_21 {
 	rte_thread_get_affinity;
 	rte_thread_set_affinity;
 	rte_thread_setname;
-	rte_uuid_compare;
-	rte_uuid_is_null;
-	rte_uuid_parse;
-	rte_uuid_unparse;
-	rte_version;
-	rte_vfio_clear_group;
-	rte_vfio_container_create;
-	rte_vfio_container_destroy;
+	rte_uuid_compare; # WINDOWS_NO_EXPORT
+	rte_uuid_is_null; # WINDOWS_NO_EXPORT
+	rte_uuid_parse; # WINDOWS_NO_EXPORT
+	rte_uuid_unparse; # WINDOWS_NO_EXPORT
+	rte_version; # WINDOWS_NO_EXPORT
+	rte_vfio_clear_group; # WINDOWS_NO_EXPORT
+	rte_vfio_container_create; # WINDOWS_NO_EXPORT
+	rte_vfio_container_destroy; # WINDOWS_NO_EXPORT
 	rte_vfio_container_dma_map;
 	rte_vfio_container_dma_unmap;
-	rte_vfio_container_group_bind;
-	rte_vfio_container_group_unbind;
-	rte_vfio_enable;
-	rte_vfio_get_container_fd;
-	rte_vfio_get_group_fd;
-	rte_vfio_get_group_num;
-	rte_vfio_is_enabled;
-	rte_vfio_noiommu_is_enabled;
-	rte_vfio_release_device;
-	rte_vfio_setup_device;
+	rte_vfio_container_group_bind; # WINDOWS_NO_EXPORT
+	rte_vfio_container_group_unbind; # WINDOWS_NO_EXPORT
+	rte_vfio_enable; # WINDOWS_NO_EXPORT
+	rte_vfio_get_container_fd; # WINDOWS_NO_EXPORT
+	rte_vfio_get_group_fd; # WINDOWS_NO_EXPORT
+	rte_vfio_get_group_num; # WINDOWS_NO_EXPORT
+	rte_vfio_is_enabled; # WINDOWS_NO_EXPORT
+	rte_vfio_noiommu_is_enabled; # WINDOWS_NO_EXPORT
+	rte_vfio_release_device; # WINDOWS_NO_EXPORT
+	rte_vfio_setup_device; # WINDOWS_NO_EXPORT
 	rte_vlog;
 	rte_zmalloc;
 	rte_zmalloc_socket;
@@ -234,8 +234,8 @@ EXPERIMENTAL {
 	# added in 18.05
 	rte_dev_event_callback_register;
 	rte_dev_event_callback_unregister;
-	rte_dev_event_monitor_start;
-	rte_dev_event_monitor_stop;
+	rte_dev_event_monitor_start; # WINDOWS_NO_EXPORT
+	rte_dev_event_monitor_stop; # WINDOWS_NO_EXPORT
 	rte_fbarray_attach;
 	rte_fbarray_destroy;
 	rte_fbarray_detach;
@@ -288,8 +288,8 @@ EXPERIMENTAL {
 	# added in 18.11
 	rte_delay_us_sleep;
 	rte_dev_event_callback_process;
-	rte_dev_hotplug_handle_disable;
-	rte_dev_hotplug_handle_enable;
+	rte_dev_hotplug_handle_disable; # WINDOWS_NO_EXPORT
+	rte_dev_hotplug_handle_enable; # WINDOWS_NO_EXPORT
 	rte_malloc_heap_create;
 	rte_malloc_heap_destroy;
 	rte_malloc_heap_get_socket;
@@ -327,7 +327,7 @@ EXPERIMENTAL {
 	rte_lcore_to_cpu_id;
 	rte_mcfg_timer_lock;
 	rte_mcfg_timer_unlock;
-	rte_rand_max;
+	rte_rand_max; # WINDOWS_NO_EXPORT
 
 	# added in 19.11
 	rte_mcfg_get_single_file_segments;
@@ -373,22 +373,22 @@ EXPERIMENTAL {
 	per_lcore_trace_mem;
 	per_lcore_trace_point_sz;
 	rte_log_can_log;
-	rte_thread_getname;
-	rte_trace_dump;
-	rte_trace_is_enabled;
-	rte_trace_metadata_dump;
-	rte_trace_mode_get;
-	rte_trace_mode_set;
-	rte_trace_pattern;
-	rte_trace_point_disable;
-	rte_trace_point_enable;
-	rte_trace_point_is_enabled;
-	rte_trace_point_lookup;
-	rte_trace_regexp;
-	rte_trace_save;
+	rte_thread_getname; # WINDOWS_NO_EXPORT
+	rte_trace_dump; # WINDOWS_NO_EXPORT
+	rte_trace_is_enabled; # WINDOWS_NO_EXPORT
+	rte_trace_metadata_dump; # WINDOWS_NO_EXPORT
+	rte_trace_mode_get; # WINDOWS_NO_EXPORT
+	rte_trace_mode_set; # WINDOWS_NO_EXPORT
+	rte_trace_pattern; # WINDOWS_NO_EXPORT
+	rte_trace_point_disable; # WINDOWS_NO_EXPORT
+	rte_trace_point_enable; # WINDOWS_NO_EXPORT
+	rte_trace_point_is_enabled; # WINDOWS_NO_EXPORT
+	rte_trace_point_lookup; # WINDOWS_NO_EXPORT
+	rte_trace_regexp; # WINDOWS_NO_EXPORT
+	rte_trace_save; # WINDOWS_NO_EXPORT
 
 	# added in 20.08
-	rte_eal_vfio_get_vf_token;
+	rte_eal_vfio_get_vf_token; # WINDOWS_NO_EXPORT
 	rte_lcore_callback_register;
 	rte_lcore_callback_unregister;
 	rte_lcore_dump;
@@ -398,29 +398,29 @@ EXPERIMENTAL {
 	rte_thread_unregister;
 
 	# added in 20.11
-	__rte_eal_trace_generic_size_t;
-	rte_cpu_get_intrinsics_support;
+	__rte_eal_trace_generic_size_t; # WINDOWS_NO_EXPORT
+	rte_cpu_get_intrinsics_support; # WINDOWS_NO_EXPORT
 	rte_epoll_wait_interruptible;
 	rte_service_lcore_may_be_active;
 	rte_vect_get_max_simd_bitwidth;
 	rte_vect_set_max_simd_bitwidth;
 
 	# added in 21.02
-	rte_power_monitor;
-	rte_power_monitor_wakeup;
-	rte_power_pause;
+	rte_power_monitor; # WINDOWS_NO_EXPORT
+	rte_power_monitor_wakeup; # WINDOWS_NO_EXPORT
+	rte_power_pause; # WINDOWS_NO_EXPORT
 
 	# added in 21.05
 	rte_thread_key_create;
 	rte_thread_key_delete;
 	rte_thread_value_get;
 	rte_thread_value_set;
-	rte_version_minor;
-	rte_version_month;
-	rte_version_prefix;
-	rte_version_release;
-	rte_version_suffix;
-	rte_version_year;
+	rte_version_minor; # WINDOWS_NO_EXPORT
+	rte_version_month; # WINDOWS_NO_EXPORT
+	rte_version_prefix; # WINDOWS_NO_EXPORT
+	rte_version_release; # WINDOWS_NO_EXPORT
+	rte_version_suffix; # WINDOWS_NO_EXPORT
+	rte_version_year; # WINDOWS_NO_EXPORT
 };
 
 INTERNAL {
-- 
2.23.0


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH] build: list symbols exports in a single file
  2021-04-06 16:32 [dpdk-dev] [PATCH] build: list symbols exports in a single file David Marchand
@ 2021-04-06 16:40 ` David Marchand
  2021-04-06 16:50 ` Bruce Richardson
  2021-04-06 17:59 ` [dpdk-dev] [PATCH v2] " David Marchand
  2 siblings, 0 replies; 15+ messages in thread
From: David Marchand @ 2021-04-06 16:40 UTC (permalink / raw)
  To: dev
  Cc: Thomas Monjalon, Dmitry Kozlyuk, Narcisa Ana Maria Vasile,
	Dmitry Malloy, Pallavi Kadam, Ray Kinsella, Neil Horman

On Tue, Apr 6, 2021 at 6:33 PM David Marchand <david.marchand@redhat.com> wrote:
> diff --git a/buildtools/map_to_win.py b/buildtools/map_to_win.py
> index 2a6cb88605..34434d96fa 100644
> --- a/buildtools/map_to_win.py
> +++ b/buildtools/map_to_win.py
> @@ -7,7 +7,7 @@
>
>
>  def is_function_line(ln):
> -    return ln.startswith('\t') and ln.endswith(';\n') and ":" not in ln
> +    return ln.startswith('\t') and ln.endswith(';\n') and ":" not in ln and "# WINDOWS_NO_EXPORT" not in ln
>
>  # MinGW keeps the original .map file but replaces per_lcore* to __emutls_v.per_lcore*
>  def create_mingw_map_file(input_map, output_map):
> @@ -24,12 +24,6 @@ def main(args):
>          create_mingw_map_file(args[1], args[2])
>          return 0
>
> -# special case, allow override if an def file already exists alongside map file
> -    override_file = join(dirname(args[1]), basename(args[2]))
> -    if exists(override_file):
> -        with open(override_file) as f_in:
> -            functions = f_in.readlines()
> -

Forgot to clean associated python imports.
Will be fixed in a v2 if no objection is raised on the principle of the patch.


>  # generate def file from map file.
>  # This works taking indented lines only which end with a ";" and which don't
>  # have a colon in them, i.e. the lines defining functions only.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH] build: list symbols exports in a single file
  2021-04-06 16:32 [dpdk-dev] [PATCH] build: list symbols exports in a single file David Marchand
  2021-04-06 16:40 ` David Marchand
@ 2021-04-06 16:50 ` Bruce Richardson
  2021-04-06 16:53   ` David Marchand
  2021-04-07 20:06   ` Kinsella, Ray
  2021-04-06 17:59 ` [dpdk-dev] [PATCH v2] " David Marchand
  2 siblings, 2 replies; 15+ messages in thread
From: Bruce Richardson @ 2021-04-06 16:50 UTC (permalink / raw)
  To: David Marchand
  Cc: dev, thomas, Dmitry Kozlyuk, Narcisa Ana Maria Vasile,
	Dmitry Malloy, Pallavi Kadam, Ray Kinsella, Neil Horman

On Tue, Apr 06, 2021 at 06:32:30PM +0200, David Marchand wrote:
> Rather than have two files that keeps getting out of sync, let's
> annotate the version.map to generate the Windows export file.
> 
> Note: EAL version.map annotation achieved with:
> $ ./buildtools/map-list-symbol.sh lib/librte_eal/version.map |
>   while read file version sym; do
>     ! git grep -qw $sym lib/librte_eal/*.def || continue;
>     sed -i -e "s/$sym;/$sym; # WINDOWS_NO_EXPORT/" lib/librte_eal/*.map;
>   done
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
+1 to the idea, this is great to see.

>  MAINTAINERS                        |   1 -
>  buildtools/map_to_win.py           |   8 +-
>  devtools/check-symbol-maps.sh      |  20 --
>  lib/librte_eal/rte_eal_exports.def | 336 -----------------------------
>  lib/librte_eal/version.map         | 136 ++++++------
>  5 files changed, 69 insertions(+), 432 deletions(-)
>  delete mode 100644 lib/librte_eal/rte_eal_exports.def
> 
<snip>  
> -# special case, allow override if an def file already exists alongside map file
> -    override_file = join(dirname(args[1]), basename(args[2]))
> -    if exists(override_file):
> -        with open(override_file) as f_in:
> -            functions = f_in.readlines()
> -

If this is removed, then drivers/common/mlx5/version.map similarly needs to
be annotated so that we can remove rte_common_mlx5_exports.def

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH] build: list symbols exports in a single file
  2021-04-06 16:50 ` Bruce Richardson
@ 2021-04-06 16:53   ` David Marchand
  2021-04-07 20:06   ` Kinsella, Ray
  1 sibling, 0 replies; 15+ messages in thread
From: David Marchand @ 2021-04-06 16:53 UTC (permalink / raw)
  To: Bruce Richardson
  Cc: dev, Thomas Monjalon, Dmitry Kozlyuk, Narcisa Ana Maria Vasile,
	Dmitry Malloy, Pallavi Kadam, Ray Kinsella, Neil Horman

On Tue, Apr 6, 2021 at 6:51 PM Bruce Richardson
<bruce.richardson@intel.com> wrote:
> > -# special case, allow override if an def file already exists alongside map file
> > -    override_file = join(dirname(args[1]), basename(args[2]))
> > -    if exists(override_file):
> > -        with open(override_file) as f_in:
> > -            functions = f_in.readlines()
> > -
>
> If this is removed, then drivers/common/mlx5/version.map similarly needs to
> be annotated so that we can remove rte_common_mlx5_exports.def

Erf, and I thought I had checked...
v2 incoming.



-- 
David Marchand


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [dpdk-dev] [PATCH v2] build: list symbols exports in a single file
  2021-04-06 16:32 [dpdk-dev] [PATCH] build: list symbols exports in a single file David Marchand
  2021-04-06 16:40 ` David Marchand
  2021-04-06 16:50 ` Bruce Richardson
@ 2021-04-06 17:59 ` David Marchand
  2021-04-06 18:52   ` Thomas Monjalon
                     ` (2 more replies)
  2 siblings, 3 replies; 15+ messages in thread
From: David Marchand @ 2021-04-06 17:59 UTC (permalink / raw)
  To: dev
  Cc: thomas, bruce.richardson, Dmitry Kozlyuk,
	Narcisa Ana Maria Vasile, Dmitry Malloy, Pallavi Kadam,
	Ray Kinsella, Neil Horman, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko

Rather than have two files that keeps getting out of sync, let's
annotate the version.map to generate the Windows export file.

Note: Existing version.map annotation achieved with:
$ for dir in lib/librte_eal drivers/common/mlx5; do
    ./buildtools/map-list-symbol.sh $dir/*.map |
    while read file version sym; do
      ! git grep -qw $sym $dir/*.def || continue;
      sed -i -e "s/$sym;/$sym; # WINDOWS_NO_EXPORT/" $dir/*.map;
    done;
  done

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
Changes since v1:
- removed unused python imports in map_to_win.py,
- fixed symbol map check to ignore comments,
- aligned common/mlx5 map with exports.def (all symbols exported by
  Windows are available in Linux too),
- annotated common/mlx5 map,
- updated SPDX check,
- updated ABI update tool,

---
 MAINTAINERS                                   |   1 -
 buildtools/map_to_win.py                      |   9 +-
 devtools/check-spdx-tag.sh                    |   2 +-
 devtools/check-symbol-maps.sh                 |  22 +-
 devtools/update_version_map_abi.py            |  12 +-
 .../common/mlx5/rte_common_mlx5_exports.def   |  75 ----
 drivers/common/mlx5/version.map               |  79 ++--
 lib/librte_eal/rte_eal_exports.def            | 336 ------------------
 lib/librte_eal/version.map                    | 136 +++----
 9 files changed, 123 insertions(+), 549 deletions(-)
 delete mode 100644 drivers/common/mlx5/rte_common_mlx5_exports.def
 delete mode 100644 lib/librte_eal/rte_eal_exports.def

diff --git a/MAINTAINERS b/MAINTAINERS
index 0ec5588540..f2d600d0cf 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -333,7 +333,6 @@ M: Narcisa Ana Maria Vasile <navasile@linux.microsoft.com>
 M: Dmitry Malloy <dmitrym@microsoft.com>
 M: Pallavi Kadam <pallavi.kadam@intel.com>
 F: lib/librte_eal/windows/
-F: lib/librte_eal/rte_eal_exports.def
 F: buildtools/map_to_win.py
 F: doc/guides/windows_gsg/
 
diff --git a/buildtools/map_to_win.py b/buildtools/map_to_win.py
index 2a6cb88605..aa1752cacd 100644
--- a/buildtools/map_to_win.py
+++ b/buildtools/map_to_win.py
@@ -3,11 +3,10 @@
 # Copyright(c) 2019 Intel Corporation
 
 import sys
-from os.path import dirname, basename, join, exists
 
 
 def is_function_line(ln):
-    return ln.startswith('\t') and ln.endswith(';\n') and ":" not in ln
+    return ln.startswith('\t') and ln.endswith(';\n') and ":" not in ln and "# WINDOWS_NO_EXPORT" not in ln
 
 # MinGW keeps the original .map file but replaces per_lcore* to __emutls_v.per_lcore*
 def create_mingw_map_file(input_map, output_map):
@@ -24,12 +23,6 @@ def main(args):
         create_mingw_map_file(args[1], args[2])
         return 0
 
-# special case, allow override if an def file already exists alongside map file
-    override_file = join(dirname(args[1]), basename(args[2]))
-    if exists(override_file):
-        with open(override_file) as f_in:
-            functions = f_in.readlines()
-
 # generate def file from map file.
 # This works taking indented lines only which end with a ";" and which don't
 # have a colon in them, i.e. the lines defining functions only.
diff --git a/devtools/check-spdx-tag.sh b/devtools/check-spdx-tag.sh
index a0ec1ed5b6..3f2912e922 100755
--- a/devtools/check-spdx-tag.sh
+++ b/devtools/check-spdx-tag.sh
@@ -25,7 +25,7 @@ check_spdx() {
 	':^*/Kbuild' ':^*/README' \
 	':^license/' ':^config/' ':^buildtools/' \
 	':^*.cocci' ':^*.abignore' \
-	':^*.def' ':^*.map' ':^*.ini' ':^*.data' ':^*.cfg' ':^*.txt' \
+	':^*.map' ':^*.ini' ':^*.data' ':^*.cfg' ':^*.txt' \
 	':^*.svg' ':^*.png'\
 	> $tmpfile
 
diff --git a/devtools/check-symbol-maps.sh b/devtools/check-symbol-maps.sh
index c3cbcaf720..f06353fc75 100755
--- a/devtools/check-symbol-maps.sh
+++ b/devtools/check-symbol-maps.sh
@@ -12,7 +12,7 @@ ret=0
 find_orphan_symbols ()
 {
     for map in $(find lib drivers -name '*.map') ; do
-        for sym in $(sed -rn 's,^([^}]*_.*);,\1,p' $map) ; do
+        for sym in $(sed -rn 's,^([^}]*_.*);.*$,\1,p' $map) ; do
             if echo $sym | grep -q '^per_lcore_' ; then
                 symsrc=${sym#per_lcore_}
             elif echo $sym | grep -q '^__rte_.*_trace_' ; then
@@ -35,24 +35,4 @@ if [ -n "$orphan_symbols" ] ; then
     ret=1
 fi
 
-find_orphan_windows_symbols ()
-{
-    for def in $(find lib drivers -name '*_exports.def') ; do
-        if echo $def | grep -q 'common_mlx5' ; then
-            continue # mlx5 exports different symbols per OS
-        fi
-        map=$(dirname $def)/version.map
-        for sym in $(grep -v ^EXPORTS $def); do
-            grep -q $sym $map || echo $sym
-        done
-    done
-}
-
-orphan_windows_symbols=$(find_orphan_windows_symbols)
-if [ -n "$orphan_windows_symbols" ] ; then
-    echo "Found only in Windows export file:"
-    echo "$orphan_windows_symbols" | sed 's,^,\t,'
-    ret=1
-fi
-
 exit $ret
diff --git a/devtools/update_version_map_abi.py b/devtools/update_version_map_abi.py
index d3068bbd2d..d17b02a327 100755
--- a/devtools/update_version_map_abi.py
+++ b/devtools/update_version_map_abi.py
@@ -15,13 +15,17 @@
 
 
 def __parse_map_file(f_in):
-    # match function name, followed by semicolon, followed by EOL, optionally
-    # with whitespace in between each item
+    # match function name, followed by semicolon, followed by EOL or comments,
+    # optionally with whitespace in between each item
     func_line_regex = re.compile(r"\s*"
+                                 r"(?P<line>"
                                  r"(?P<func>[a-zA-Z_0-9]+)"
                                  r"\s*"
                                  r";"
                                  r"\s*"
+                                 r"(?P<comment>#.+)?"
+                                 r")"
+                                 r"\s*"
                                  r"$")
     # match section name, followed by opening bracked, followed by EOL,
     # optionally with whitespace in between each item
@@ -99,7 +103,7 @@ def __parse_map_file(f_in):
         # is this a function?
         match = func_line_regex.match(line)
         if match:
-            stable_lines.add(match.group("func"))
+            stable_lines.add(match.group("line"))
 
     return has_stable, stable_lines, experimental_lines, internal_lines
 
@@ -116,7 +120,7 @@ def __generate_stable_abi(f_out, abi_major, lines):
 
         # print all stable lines, alphabetically sorted
         for line in sorted(lines):
-            print("\t{};".format(line), file=f_out)
+            print("\t{}".format(line), file=f_out)
 
         # another blank line
         print(file=f_out)
diff --git a/drivers/common/mlx5/rte_common_mlx5_exports.def b/drivers/common/mlx5/rte_common_mlx5_exports.def
deleted file mode 100644
index fd62b806ca..0000000000
--- a/drivers/common/mlx5/rte_common_mlx5_exports.def
+++ /dev/null
@@ -1,75 +0,0 @@
-EXPORTS
-	haswell_broadwell_cpu
-
-	mlx5_common_init
-
-	mlx5_create_mr_ext
-
-	mlx5_devx_cmd_alloc_pd
-	mlx5_devx_cmd_create_cq
-	mlx5_devx_cmd_create_flex_parser
-	mlx5_devx_cmd_create_qp
-	mlx5_devx_cmd_create_rq
-	mlx5_devx_cmd_create_rqt
-	mlx5_devx_cmd_create_sq
-	mlx5_devx_cmd_create_tir
-	mlx5_devx_cmd_create_td
-	mlx5_devx_cmd_create_tis
-	mlx5_devx_cmd_create_virtq
-	mlx5_devx_cmd_destroy
-	mlx5_devx_cmd_flow_counter_alloc
-	mlx5_devx_cmd_flow_counter_query
-	mlx5_devx_cmd_flow_dump
-	mlx5_devx_cmd_mkey_create
-	mlx5_devx_cmd_modify_qp_state
-	mlx5_devx_cmd_modify_rq
-	mlx5_devx_cmd_modify_rqt
-	mlx5_devx_cmd_modify_sq
-	mlx5_devx_cmd_modify_tir
-	mlx5_devx_cmd_modify_virtq
-	mlx5_devx_cmd_qp_query_tis_td
-	mlx5_devx_cmd_query_hca_attr
-	mlx5_devx_cmd_query_parse_samples
-	mlx5_devx_cmd_query_virtq
-	mlx5_devx_cmd_register_read
-	mlx5_devx_get_out_command_status
-	mlx5_devx_cmd_create_flow_hit_aso_obj
-	mlx5_devx_cmd_create_geneve_tlv_option
-
-	mlx5_devx_cq_create
-	mlx5_devx_cq_destroy
-	mlx5_devx_rq_create
-	mlx5_devx_rq_destroy
-	mlx5_devx_sq_create
-	mlx5_devx_sq_destroy
-
-	mlx5_glue
-
-	mlx5_malloc_mem_select
-	mlx5_mr_btree_init
-	mlx5_mr_btree_free
-	mlx5_mr_btree_dump
-	mlx5_mr_addr2mr_bh
-	mlx5_mr_release_cache
-	mlx5_mr_dump_cache
-	mlx5_mr_rebuild_cache
-	mlx5_mr_insert_cache
-	mlx5_mr_lookup_cache
-	mlx5_mr_lookup_list
-	mlx5_mr_create_primary
-	mlx5_mr_flush_local_cache
-	mlx5_mp_req_queue_state_modify
-	mlx5_mr_free
-
-	mlx5_pci_driver_register
-
-	mlx5_malloc
-	mlx5_realloc
-	mlx5_free
-
-	mlx5_os_alloc_pd
-	mlx5_os_dealloc_pd
-	mlx5_os_dereg_mr
-	mlx5_os_reg_mr
-	mlx5_os_umem_reg
-	mlx5_os_umem_dereg
diff --git a/drivers/common/mlx5/version.map b/drivers/common/mlx5/version.map
index 91f3fa5779..299c17cd26 100644
--- a/drivers/common/mlx5/version.map
+++ b/drivers/common/mlx5/version.map
@@ -3,12 +3,12 @@ INTERNAL {
 
 	mlx5_common_init;
 
-	mlx5_common_verbs_reg_mr;
-	mlx5_common_verbs_dereg_mr;
+	mlx5_common_verbs_reg_mr; # WINDOWS_NO_EXPORT
+	mlx5_common_verbs_dereg_mr; # WINDOWS_NO_EXPORT
 
 	mlx5_create_mr_ext;
 
-	mlx5_dev_to_pci_addr;
+	mlx5_dev_to_pci_addr; # WINDOWS_NO_EXPORT
 
 	mlx5_devx_cmd_alloc_pd;
 	mlx5_devx_cmd_create_cq;
@@ -20,7 +20,7 @@ INTERNAL {
 	mlx5_devx_cmd_create_tir;
 	mlx5_devx_cmd_create_td;
 	mlx5_devx_cmd_create_tis;
-	mlx5_devx_cmd_create_virtio_q_counters;
+	mlx5_devx_cmd_create_virtio_q_counters; # WINDOWS_NO_EXPORT
 	mlx5_devx_cmd_create_virtq;
 	mlx5_devx_cmd_create_flow_hit_aso_obj;
 	mlx5_devx_cmd_create_geneve_tlv_option;
@@ -38,14 +38,14 @@ INTERNAL {
 	mlx5_devx_cmd_qp_query_tis_td;
 	mlx5_devx_cmd_query_hca_attr;
 	mlx5_devx_cmd_query_parse_samples;
-	mlx5_devx_cmd_query_virtio_q_counters;
+	mlx5_devx_cmd_query_virtio_q_counters; # WINDOWS_NO_EXPORT
 	mlx5_devx_cmd_query_virtq;
-	mlx5_devx_cmd_queue_counter_alloc;
-	mlx5_devx_cmd_queue_counter_query;
+	mlx5_devx_cmd_queue_counter_alloc; # WINDOWS_NO_EXPORT
+	mlx5_devx_cmd_queue_counter_query; # WINDOWS_NO_EXPORT
 	mlx5_devx_cmd_register_read;
-	mlx5_devx_cmd_wq_query;
+	mlx5_devx_cmd_wq_query; # WINDOWS_NO_EXPORT
 	mlx5_devx_get_out_command_status;
-	mlx5_devx_alloc_uar;
+	mlx5_devx_alloc_uar; # WINDOWS_NO_EXPORT
 
 	mlx5_devx_cq_create;
 	mlx5_devx_cq_destroy;
@@ -54,15 +54,15 @@ INTERNAL {
 	mlx5_devx_sq_create;
 	mlx5_devx_sq_destroy;
 
-	mlx5_get_ifname_sysfs;
+	mlx5_get_ifname_sysfs; # WINDOWS_NO_EXPORT
 
-	mlx5_mp_init_primary;
-	mlx5_mp_uninit_primary;
-	mlx5_mp_init_secondary;
-	mlx5_mp_uninit_secondary;
-	mlx5_mp_req_mr_create;
+	mlx5_mp_init_primary; # WINDOWS_NO_EXPORT
+	mlx5_mp_uninit_primary; # WINDOWS_NO_EXPORT
+	mlx5_mp_init_secondary; # WINDOWS_NO_EXPORT
+	mlx5_mp_uninit_secondary; # WINDOWS_NO_EXPORT
+	mlx5_mp_req_mr_create; # WINDOWS_NO_EXPORT
 	mlx5_mp_req_queue_state_modify;
-	mlx5_mp_req_verbs_cmd_fd;
+	mlx5_mp_req_verbs_cmd_fd; # WINDOWS_NO_EXPORT
 
 	mlx5_mr_btree_init;
 	mlx5_mr_btree_free;
@@ -78,31 +78,40 @@ INTERNAL {
 	mlx5_mr_flush_local_cache;
 	mlx5_mr_free;
 
-	mlx5_nl_allmulti;
-	mlx5_nl_devlink_family_id_get;
-	mlx5_nl_driver_reload;
-	mlx5_nl_enable_roce_get;
-	mlx5_nl_enable_roce_set;
-	mlx5_nl_ifindex;
-	mlx5_nl_init;
-	mlx5_nl_mac_addr_add;
-	mlx5_nl_mac_addr_flush;
-	mlx5_nl_mac_addr_remove;
-	mlx5_nl_mac_addr_sync;
-	mlx5_nl_portnum;
-	mlx5_nl_promisc;
-	mlx5_nl_switch_info;
-	mlx5_nl_vf_mac_addr_modify;
-	mlx5_nl_vlan_vmwa_create;
-	mlx5_nl_vlan_vmwa_delete;
+	mlx5_nl_allmulti; # WINDOWS_NO_EXPORT
+	mlx5_nl_devlink_family_id_get; # WINDOWS_NO_EXPORT
+	mlx5_nl_driver_reload; # WINDOWS_NO_EXPORT
+	mlx5_nl_enable_roce_get; # WINDOWS_NO_EXPORT
+	mlx5_nl_enable_roce_set; # WINDOWS_NO_EXPORT
+	mlx5_nl_ifindex; # WINDOWS_NO_EXPORT
+	mlx5_nl_init; # WINDOWS_NO_EXPORT
+	mlx5_nl_mac_addr_add; # WINDOWS_NO_EXPORT
+	mlx5_nl_mac_addr_flush; # WINDOWS_NO_EXPORT
+	mlx5_nl_mac_addr_remove; # WINDOWS_NO_EXPORT
+	mlx5_nl_mac_addr_sync; # WINDOWS_NO_EXPORT
+	mlx5_nl_portnum; # WINDOWS_NO_EXPORT
+	mlx5_nl_promisc; # WINDOWS_NO_EXPORT
+	mlx5_nl_switch_info; # WINDOWS_NO_EXPORT
+	mlx5_nl_vf_mac_addr_modify; # WINDOWS_NO_EXPORT
+	mlx5_nl_vlan_vmwa_create; # WINDOWS_NO_EXPORT
+	mlx5_nl_vlan_vmwa_delete; # WINDOWS_NO_EXPORT
 
-	mlx5_translate_port_name;
+	mlx5_translate_port_name; # WINDOWS_NO_EXPORT
 
 	mlx5_malloc_mem_select;
-	mlx5_memory_stat_dump;
+	mlx5_memory_stat_dump; # WINDOWS_NO_EXPORT
 	mlx5_malloc;
 	mlx5_realloc;
 	mlx5_free;
 
 	mlx5_pci_driver_register;
+
+	haswell_broadwell_cpu;
+	mlx5_glue;
+	mlx5_os_alloc_pd;
+	mlx5_os_dealloc_pd;
+	mlx5_os_dereg_mr;
+	mlx5_os_reg_mr;
+	mlx5_os_umem_reg;
+	mlx5_os_umem_dereg;
 };
diff --git a/lib/librte_eal/rte_eal_exports.def b/lib/librte_eal/rte_eal_exports.def
deleted file mode 100644
index c320077547..0000000000
--- a/lib/librte_eal/rte_eal_exports.def
+++ /dev/null
@@ -1,336 +0,0 @@
-EXPORTS
-	__rte_panic
-	per_lcore__lcore_id
-	per_lcore__rte_errno
-	per_lcore__thread_id
-	rte_bus_dump
-	rte_bus_find
-	rte_bus_find_by_device
-	rte_bus_find_by_name
-	rte_bus_get_iommu_class
-	rte_bus_probe
-	rte_bus_register
-	rte_bus_scan
-	rte_bus_unregister
-	rte_calloc
-	rte_calloc_socket
-	rte_cpu_get_flag_enabled
-	rte_cpu_get_flag_name
-	rte_ctrl_thread_create
-	rte_delay_us
-	rte_delay_us_block
-	rte_delay_us_callback_register
-	rte_dev_is_probed
-	rte_dev_probe
-	rte_dev_remove
-	rte_devargs_add
-	rte_devargs_dump
-	rte_devargs_insert
-	rte_devargs_next
-	rte_devargs_parse
-	rte_devargs_parsef
-	rte_devargs_remove
-	rte_devargs_type_count
-	rte_dump_physmem_layout
-	rte_dump_stack
-	rte_dump_tailq
-	rte_eal_alarm_cancel
-	rte_eal_alarm_set
-	rte_eal_cleanup
-	rte_eal_get_lcore_state
-	rte_eal_get_physmem_size
-	rte_eal_get_runtime_dir
-	rte_eal_has_hugepages
-	rte_eal_has_pci
-	rte_eal_hotplug_add
-	rte_eal_hotplug_remove
-	rte_eal_init
-	rte_eal_iova_mode
-	rte_eal_lcore_role
-	rte_eal_mbuf_user_pool_ops
-	rte_eal_mp_remote_launch
-	rte_eal_mp_wait_lcore
-	rte_eal_process_type
-	rte_eal_remote_launch
-	rte_eal_tailq_lookup
-	rte_eal_tailq_register
-	rte_eal_using_phys_addrs
-	rte_eal_wait_lcore
-	rte_epoll_ctl
-	rte_epoll_wait
-	rte_exit
-	rte_free
-	rte_get_main_lcore
-	rte_get_next_lcore
-	rte_get_tsc_hz
-	rte_hexdump
-	rte_hypervisor_get
-	rte_intr_allow_others
-	rte_intr_callback_register
-	rte_intr_callback_unregister
-	rte_intr_cap_multiple
-	rte_intr_disable
-	rte_intr_dp_is_en
-	rte_intr_efd_disable
-	rte_intr_efd_enable
-	rte_intr_enable
-	rte_intr_free_epoll_fd
-	rte_intr_rx_ctl
-	rte_intr_tls_epfd
-	rte_lcore_count
-	rte_lcore_has_role
-	rte_lcore_index
-	rte_lcore_is_enabled
-	rte_lcore_to_socket_id
-	rte_log
-	rte_log_cur_msg_loglevel
-	rte_log_cur_msg_logtype
-	rte_log_dump
-	rte_log_get_global_level
-	rte_log_get_level
-	rte_log_get_stream
-	rte_log_register
-	rte_log_set_global_level
-	rte_log_set_level
-	rte_log_set_level_pattern
-	rte_log_set_level_regexp
-	rte_malloc
-	rte_malloc_dump_stats
-	rte_malloc_get_socket_stats
-	rte_malloc_set_limit
-	rte_malloc_socket
-	rte_malloc_validate
-	rte_malloc_virt2iova
-	rte_mcfg_mem_read_lock
-	rte_mcfg_mem_read_unlock
-	rte_mcfg_mem_write_lock
-	rte_mcfg_mem_write_unlock
-	rte_mcfg_mempool_read_lock
-	rte_mcfg_mempool_read_unlock
-	rte_mcfg_mempool_write_lock
-	rte_mcfg_mempool_write_unlock
-	rte_mcfg_tailq_read_lock
-	rte_mcfg_tailq_read_unlock
-	rte_mcfg_tailq_write_lock
-	rte_mcfg_tailq_write_unlock
-	rte_mem_lock_page
-	rte_mem_virt2iova
-	rte_mem_virt2phy
-	rte_memdump
-	rte_memory_get_nchannel
-	rte_memory_get_nrank
-	rte_memzone_dump
-	rte_memzone_free
-	rte_memzone_lookup
-	rte_memzone_reserve
-	rte_memzone_reserve_aligned
-	rte_memzone_reserve_bounded
-	rte_memzone_walk
-	rte_openlog_stream
-	rte_rand
-	rte_realloc
-	rte_reciprocal_value
-	rte_reciprocal_value_u64
-	rte_rtm_supported
-	rte_service_attr_get
-	rte_service_attr_reset_all
-	rte_service_component_register
-	rte_service_component_runstate_set
-	rte_service_component_unregister
-	rte_service_dump
-	rte_service_finalize
-	rte_service_get_by_name
-	rte_service_get_count
-	rte_service_get_name
-	rte_service_lcore_add
-	rte_service_lcore_attr_get
-	rte_service_lcore_attr_reset_all
-	rte_service_lcore_count
-	rte_service_lcore_count_services
-	rte_service_lcore_del
-	rte_service_lcore_list
-	rte_service_lcore_reset_all
-	rte_service_lcore_start
-	rte_service_lcore_stop
-	rte_service_map_lcore_get
-	rte_service_map_lcore_set
-	rte_service_may_be_active
-	rte_service_probe_capability
-	rte_service_run_iter_on_app_lcore
-	rte_service_runstate_get
-	rte_service_runstate_set
-	rte_service_set_runstate_mapped_check
-	rte_service_set_stats_enable
-	rte_service_start_with_defaults
-	rte_set_application_usage_hook
-	rte_socket_count
-	rte_socket_id
-	rte_socket_id_by_idx
-	rte_strerror
-	rte_strscpy
-	rte_strsplit
-	rte_sys_gettid
-	rte_thread_get_affinity
-	rte_thread_set_affinity
-	rte_thread_setname
-	rte_vfio_container_dma_map
-	rte_vfio_container_dma_unmap
-	rte_vlog
-	rte_zmalloc
-	rte_zmalloc_socket
-
-	rte_mp_action_register
-	rte_mp_action_unregister
-	rte_mp_reply
-	rte_mp_sendmsg
-
-	rte_dev_event_callback_register
-	rte_dev_event_callback_unregister
-	rte_fbarray_attach
-	rte_fbarray_destroy
-	rte_fbarray_detach
-	rte_fbarray_dump_metadata
-	rte_fbarray_find_contig_free
-	rte_fbarray_find_contig_used
-	rte_fbarray_find_idx
-	rte_fbarray_find_next_free
-	rte_fbarray_find_next_n_free
-	rte_fbarray_find_next_n_used
-	rte_fbarray_find_next_used
-	rte_fbarray_get
-	rte_fbarray_init
-	rte_fbarray_is_used
-	rte_fbarray_set_free
-	rte_fbarray_set_used
-	rte_log_register_type_and_pick_level
-	rte_malloc_dump_heaps
-	rte_mem_alloc_validator_register
-	rte_mem_alloc_validator_unregister
-	rte_mem_check_dma_mask
-	rte_mem_event_callback_register
-	rte_mem_event_callback_unregister
-	rte_mem_iova2virt
-	rte_mem_virt2memseg
-	rte_mem_virt2memseg_list
-	rte_memseg_contig_walk
-	rte_memseg_list_walk
-	rte_memseg_walk
-	rte_mp_request_async
-	rte_mp_request_sync
-
-	rte_class_find
-	rte_class_find_by_name
-	rte_class_register
-	rte_class_unregister
-	rte_dev_iterator_init
-	rte_dev_iterator_next
-	rte_fbarray_find_prev_free
-	rte_fbarray_find_prev_n_free
-	rte_fbarray_find_prev_n_used
-	rte_fbarray_find_prev_used
-	rte_fbarray_find_rev_contig_free
-	rte_fbarray_find_rev_contig_used
-	rte_memseg_contig_walk_thread_unsafe
-	rte_memseg_list_walk_thread_unsafe
-	rte_memseg_walk_thread_unsafe
-
-	rte_delay_us_sleep
-	rte_dev_event_callback_process
-	rte_malloc_heap_create
-	rte_malloc_heap_destroy
-	rte_malloc_heap_get_socket
-	rte_malloc_heap_memory_add
-	rte_malloc_heap_memory_attach
-	rte_malloc_heap_memory_detach
-	rte_malloc_heap_memory_remove
-	rte_malloc_heap_socket_is_external
-	rte_mem_check_dma_mask_thread_unsafe
-	rte_mem_set_dma_mask
-	rte_memseg_get_fd
-	rte_memseg_get_fd_offset
-	rte_memseg_get_fd_offset_thread_unsafe
-	rte_memseg_get_fd_thread_unsafe
-
-	rte_extmem_attach
-	rte_extmem_detach
-	rte_extmem_register
-	rte_extmem_unregister
-
-	rte_dev_dma_map
-	rte_dev_dma_unmap
-	rte_fbarray_find_biggest_free
-	rte_fbarray_find_biggest_used
-	rte_fbarray_find_rev_biggest_free
-	rte_fbarray_find_rev_biggest_used
-	rte_intr_callback_unregister_pending
-	rte_realloc_socket
-
-	rte_intr_ack
-	rte_lcore_cpuset
-	rte_lcore_to_cpu_id
-	rte_mcfg_timer_lock
-	rte_mcfg_timer_unlock
-	rte_mcfg_get_single_file_segments
-
-	rte_thread_is_intr
-
-	__rte_eal_trace_alarm_cancel
-	__rte_eal_trace_alarm_set
-	__rte_eal_trace_generic_double
-	__rte_eal_trace_generic_float
-	__rte_eal_trace_generic_func
-	__rte_eal_trace_generic_i16
-	__rte_eal_trace_generic_i32
-	__rte_eal_trace_generic_i64
-	__rte_eal_trace_generic_i8
-	__rte_eal_trace_generic_int
-	__rte_eal_trace_generic_long
-	__rte_eal_trace_generic_ptr
-	__rte_eal_trace_generic_str
-	__rte_eal_trace_generic_u16
-	__rte_eal_trace_generic_u32
-	__rte_eal_trace_generic_u64
-	__rte_eal_trace_generic_u8
-	__rte_eal_trace_generic_void
-	__rte_eal_trace_intr_callback_register
-	__rte_eal_trace_intr_callback_unregister
-	__rte_eal_trace_intr_enable
-	__rte_eal_trace_intr_disable
-	__rte_eal_trace_mem_free
-	__rte_eal_trace_mem_malloc
-	__rte_eal_trace_mem_realloc
-	__rte_eal_trace_mem_zmalloc
-	__rte_eal_trace_memzone_free
-	__rte_eal_trace_memzone_lookup
-	__rte_eal_trace_memzone_reserve
-	__rte_eal_trace_thread_lcore_ready
-	__rte_eal_trace_thread_remote_launch
-	__rte_trace_mem_per_thread_alloc
-	__rte_trace_point_emit_field
-	__rte_trace_point_register
-	per_lcore_trace_mem
-	per_lcore_trace_point_sz
-	rte_log_can_log
-
-	rte_lcore_callback_register
-	rte_lcore_callback_unregister
-	rte_lcore_dump
-	rte_lcore_iterate
-	rte_mp_disable
-	rte_service_lcore_may_be_active
-	rte_thread_register
-	rte_thread_unregister
-
-	rte_epoll_wait_interruptible
-	rte_vect_get_max_simd_bitwidth
-	rte_vect_set_max_simd_bitwidth
-
-	rte_thread_key_create
-	rte_thread_key_delete
-	rte_thread_value_get
-	rte_thread_value_set
-
-	rte_mem_lock
-	rte_mem_map
-	rte_mem_page_size
-	rte_mem_unmap
diff --git a/lib/librte_eal/version.map b/lib/librte_eal/version.map
index e23745ae6e..151330b1b5 100644
--- a/lib/librte_eal/version.map
+++ b/lib/librte_eal/version.map
@@ -2,8 +2,8 @@ DPDK_21 {
 	global:
 
 	__rte_panic;
-	eal_parse_sysfs_value;
-	eal_timer_source;
+	eal_parse_sysfs_value; # WINDOWS_NO_EXPORT
+	eal_timer_source; # WINDOWS_NO_EXPORT
 	per_lcore__lcore_id;
 	per_lcore__rte_errno;
 	per_lcore__thread_id;
@@ -20,9 +20,9 @@ DPDK_21 {
 	rte_calloc_socket;
 	rte_cpu_get_flag_enabled;
 	rte_cpu_get_flag_name;
-	rte_cpu_is_supported;
+	rte_cpu_is_supported; # WINDOWS_NO_EXPORT
 	rte_ctrl_thread_create;
-	rte_cycles_vmware_tsc_map;
+	rte_cycles_vmware_tsc_map; # WINDOWS_NO_EXPORT
 	rte_delay_us;
 	rte_delay_us_block;
 	rte_delay_us_callback_register;
@@ -43,7 +43,7 @@ DPDK_21 {
 	rte_eal_alarm_cancel;
 	rte_eal_alarm_set;
 	rte_eal_cleanup;
-	rte_eal_create_uio_dev;
+	rte_eal_create_uio_dev; # WINDOWS_NO_EXPORT
 	rte_eal_get_lcore_state;
 	rte_eal_get_physmem_size;
 	rte_eal_get_runtime_dir;
@@ -51,34 +51,34 @@ DPDK_21 {
 	rte_eal_has_pci;
 	rte_eal_hotplug_add;
 	rte_eal_hotplug_remove;
-	rte_eal_hpet_init;
+	rte_eal_hpet_init; # WINDOWS_NO_EXPORT
 	rte_eal_init;
-	rte_eal_iopl_init;
+	rte_eal_iopl_init; # WINDOWS_NO_EXPORT
 	rte_eal_iova_mode;
 	rte_eal_lcore_role;
 	rte_eal_mbuf_user_pool_ops;
 	rte_eal_mp_remote_launch;
 	rte_eal_mp_wait_lcore;
-	rte_eal_primary_proc_alive;
+	rte_eal_primary_proc_alive; # WINDOWS_NO_EXPORT
 	rte_eal_process_type;
 	rte_eal_remote_launch;
 	rte_eal_tailq_lookup;
 	rte_eal_tailq_register;
 	rte_eal_using_phys_addrs;
-	rte_eal_vfio_intr_mode;
+	rte_eal_vfio_intr_mode; # WINDOWS_NO_EXPORT
 	rte_eal_wait_lcore;
 	rte_epoll_ctl;
 	rte_epoll_wait;
 	rte_exit;
 	rte_free;
-	rte_get_hpet_cycles;
-	rte_get_hpet_hz;
+	rte_get_hpet_cycles; # WINDOWS_NO_EXPORT
+	rte_get_hpet_hz; # WINDOWS_NO_EXPORT
 	rte_get_main_lcore;
 	rte_get_next_lcore;
 	rte_get_tsc_hz;
 	rte_hexdump;
 	rte_hypervisor_get;
-	rte_hypervisor_get_name;
+	rte_hypervisor_get_name; # WINDOWS_NO_EXPORT
 	rte_intr_allow_others;
 	rte_intr_callback_register;
 	rte_intr_callback_unregister;
@@ -91,12 +91,12 @@ DPDK_21 {
 	rte_intr_free_epoll_fd;
 	rte_intr_rx_ctl;
 	rte_intr_tls_epfd;
-	rte_keepalive_create;
-	rte_keepalive_dispatch_pings;
-	rte_keepalive_mark_alive;
-	rte_keepalive_mark_sleep;
-	rte_keepalive_register_core;
-	rte_keepalive_register_relay_callback;
+	rte_keepalive_create; # WINDOWS_NO_EXPORT
+	rte_keepalive_dispatch_pings; # WINDOWS_NO_EXPORT
+	rte_keepalive_mark_alive; # WINDOWS_NO_EXPORT
+	rte_keepalive_mark_sleep; # WINDOWS_NO_EXPORT
+	rte_keepalive_register_core; # WINDOWS_NO_EXPORT
+	rte_keepalive_register_relay_callback; # WINDOWS_NO_EXPORT
 	rte_lcore_count;
 	rte_lcore_has_role;
 	rte_lcore_index;
@@ -159,7 +159,7 @@ DPDK_21 {
 	rte_service_component_unregister;
 	rte_service_dump;
 	rte_service_finalize;
-	rte_service_get_by_id;
+	rte_service_get_by_id; # WINDOWS_NO_EXPORT
 	rte_service_get_by_name;
 	rte_service_get_count;
 	rte_service_get_name;
@@ -187,7 +187,7 @@ DPDK_21 {
 	rte_socket_count;
 	rte_socket_id;
 	rte_socket_id_by_idx;
-	rte_srand;
+	rte_srand; # WINDOWS_NO_EXPORT
 	rte_strerror;
 	rte_strscpy;
 	rte_strsplit;
@@ -195,26 +195,26 @@ DPDK_21 {
 	rte_thread_get_affinity;
 	rte_thread_set_affinity;
 	rte_thread_setname;
-	rte_uuid_compare;
-	rte_uuid_is_null;
-	rte_uuid_parse;
-	rte_uuid_unparse;
-	rte_version;
-	rte_vfio_clear_group;
-	rte_vfio_container_create;
-	rte_vfio_container_destroy;
+	rte_uuid_compare; # WINDOWS_NO_EXPORT
+	rte_uuid_is_null; # WINDOWS_NO_EXPORT
+	rte_uuid_parse; # WINDOWS_NO_EXPORT
+	rte_uuid_unparse; # WINDOWS_NO_EXPORT
+	rte_version; # WINDOWS_NO_EXPORT
+	rte_vfio_clear_group; # WINDOWS_NO_EXPORT
+	rte_vfio_container_create; # WINDOWS_NO_EXPORT
+	rte_vfio_container_destroy; # WINDOWS_NO_EXPORT
 	rte_vfio_container_dma_map;
 	rte_vfio_container_dma_unmap;
-	rte_vfio_container_group_bind;
-	rte_vfio_container_group_unbind;
-	rte_vfio_enable;
-	rte_vfio_get_container_fd;
-	rte_vfio_get_group_fd;
-	rte_vfio_get_group_num;
-	rte_vfio_is_enabled;
-	rte_vfio_noiommu_is_enabled;
-	rte_vfio_release_device;
-	rte_vfio_setup_device;
+	rte_vfio_container_group_bind; # WINDOWS_NO_EXPORT
+	rte_vfio_container_group_unbind; # WINDOWS_NO_EXPORT
+	rte_vfio_enable; # WINDOWS_NO_EXPORT
+	rte_vfio_get_container_fd; # WINDOWS_NO_EXPORT
+	rte_vfio_get_group_fd; # WINDOWS_NO_EXPORT
+	rte_vfio_get_group_num; # WINDOWS_NO_EXPORT
+	rte_vfio_is_enabled; # WINDOWS_NO_EXPORT
+	rte_vfio_noiommu_is_enabled; # WINDOWS_NO_EXPORT
+	rte_vfio_release_device; # WINDOWS_NO_EXPORT
+	rte_vfio_setup_device; # WINDOWS_NO_EXPORT
 	rte_vlog;
 	rte_zmalloc;
 	rte_zmalloc_socket;
@@ -234,8 +234,8 @@ EXPERIMENTAL {
 	# added in 18.05
 	rte_dev_event_callback_register;
 	rte_dev_event_callback_unregister;
-	rte_dev_event_monitor_start;
-	rte_dev_event_monitor_stop;
+	rte_dev_event_monitor_start; # WINDOWS_NO_EXPORT
+	rte_dev_event_monitor_stop; # WINDOWS_NO_EXPORT
 	rte_fbarray_attach;
 	rte_fbarray_destroy;
 	rte_fbarray_detach;
@@ -288,8 +288,8 @@ EXPERIMENTAL {
 	# added in 18.11
 	rte_delay_us_sleep;
 	rte_dev_event_callback_process;
-	rte_dev_hotplug_handle_disable;
-	rte_dev_hotplug_handle_enable;
+	rte_dev_hotplug_handle_disable; # WINDOWS_NO_EXPORT
+	rte_dev_hotplug_handle_enable; # WINDOWS_NO_EXPORT
 	rte_malloc_heap_create;
 	rte_malloc_heap_destroy;
 	rte_malloc_heap_get_socket;
@@ -327,7 +327,7 @@ EXPERIMENTAL {
 	rte_lcore_to_cpu_id;
 	rte_mcfg_timer_lock;
 	rte_mcfg_timer_unlock;
-	rte_rand_max;
+	rte_rand_max; # WINDOWS_NO_EXPORT
 
 	# added in 19.11
 	rte_mcfg_get_single_file_segments;
@@ -373,22 +373,22 @@ EXPERIMENTAL {
 	per_lcore_trace_mem;
 	per_lcore_trace_point_sz;
 	rte_log_can_log;
-	rte_thread_getname;
-	rte_trace_dump;
-	rte_trace_is_enabled;
-	rte_trace_metadata_dump;
-	rte_trace_mode_get;
-	rte_trace_mode_set;
-	rte_trace_pattern;
-	rte_trace_point_disable;
-	rte_trace_point_enable;
-	rte_trace_point_is_enabled;
-	rte_trace_point_lookup;
-	rte_trace_regexp;
-	rte_trace_save;
+	rte_thread_getname; # WINDOWS_NO_EXPORT
+	rte_trace_dump; # WINDOWS_NO_EXPORT
+	rte_trace_is_enabled; # WINDOWS_NO_EXPORT
+	rte_trace_metadata_dump; # WINDOWS_NO_EXPORT
+	rte_trace_mode_get; # WINDOWS_NO_EXPORT
+	rte_trace_mode_set; # WINDOWS_NO_EXPORT
+	rte_trace_pattern; # WINDOWS_NO_EXPORT
+	rte_trace_point_disable; # WINDOWS_NO_EXPORT
+	rte_trace_point_enable; # WINDOWS_NO_EXPORT
+	rte_trace_point_is_enabled; # WINDOWS_NO_EXPORT
+	rte_trace_point_lookup; # WINDOWS_NO_EXPORT
+	rte_trace_regexp; # WINDOWS_NO_EXPORT
+	rte_trace_save; # WINDOWS_NO_EXPORT
 
 	# added in 20.08
-	rte_eal_vfio_get_vf_token;
+	rte_eal_vfio_get_vf_token; # WINDOWS_NO_EXPORT
 	rte_lcore_callback_register;
 	rte_lcore_callback_unregister;
 	rte_lcore_dump;
@@ -398,29 +398,29 @@ EXPERIMENTAL {
 	rte_thread_unregister;
 
 	# added in 20.11
-	__rte_eal_trace_generic_size_t;
-	rte_cpu_get_intrinsics_support;
+	__rte_eal_trace_generic_size_t; # WINDOWS_NO_EXPORT
+	rte_cpu_get_intrinsics_support; # WINDOWS_NO_EXPORT
 	rte_epoll_wait_interruptible;
 	rte_service_lcore_may_be_active;
 	rte_vect_get_max_simd_bitwidth;
 	rte_vect_set_max_simd_bitwidth;
 
 	# added in 21.02
-	rte_power_monitor;
-	rte_power_monitor_wakeup;
-	rte_power_pause;
+	rte_power_monitor; # WINDOWS_NO_EXPORT
+	rte_power_monitor_wakeup; # WINDOWS_NO_EXPORT
+	rte_power_pause; # WINDOWS_NO_EXPORT
 
 	# added in 21.05
 	rte_thread_key_create;
 	rte_thread_key_delete;
 	rte_thread_value_get;
 	rte_thread_value_set;
-	rte_version_minor;
-	rte_version_month;
-	rte_version_prefix;
-	rte_version_release;
-	rte_version_suffix;
-	rte_version_year;
+	rte_version_minor; # WINDOWS_NO_EXPORT
+	rte_version_month; # WINDOWS_NO_EXPORT
+	rte_version_prefix; # WINDOWS_NO_EXPORT
+	rte_version_release; # WINDOWS_NO_EXPORT
+	rte_version_suffix; # WINDOWS_NO_EXPORT
+	rte_version_year; # WINDOWS_NO_EXPORT
 };
 
 INTERNAL {
-- 
2.23.0


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH v2] build: list symbols exports in a single file
  2021-04-06 17:59 ` [dpdk-dev] [PATCH v2] " David Marchand
@ 2021-04-06 18:52   ` Thomas Monjalon
  2021-04-06 20:09     ` David Marchand
  2021-04-08 14:51   ` Thomas Monjalon
  2021-04-08 16:11   ` David Marchand
  2 siblings, 1 reply; 15+ messages in thread
From: Thomas Monjalon @ 2021-04-06 18:52 UTC (permalink / raw)
  To: David Marchand
  Cc: dev, bruce.richardson, Dmitry Kozlyuk, Narcisa Ana Maria Vasile,
	Dmitry Malloy, Pallavi Kadam, Ray Kinsella, Neil Horman,
	Matan Azrad, Shahaf Shuler, Viacheslav Ovsiienko

About the title, it is not a single file but one file per lib/driver.
I think it would better convey the idea by saying "remove .def files".

06/04/2021 19:59, David Marchand:
> Rather than have two files that keeps getting out of sync, let's
> annotate the version.map to generate the Windows export file.
> 
> Note: Existing version.map annotation achieved with:
> $ for dir in lib/librte_eal drivers/common/mlx5; do
>     ./buildtools/map-list-symbol.sh $dir/*.map |
>     while read file version sym; do
>       ! git grep -qw $sym $dir/*.def || continue;
>       sed -i -e "s/$sym;/$sym; # WINDOWS_NO_EXPORT/" $dir/*.map;
>     done;
>   done

This patch keeps the exact same behaviour, right?
There are a lot of symbols in EAL and mlx5 which should
be exported for Windows too, but it is open for future fixes, right?



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH v2] build: list symbols exports in a single file
  2021-04-06 18:52   ` Thomas Monjalon
@ 2021-04-06 20:09     ` David Marchand
  2021-04-06 22:39       ` Thomas Monjalon
  2021-04-07  8:16       ` David Marchand
  0 siblings, 2 replies; 15+ messages in thread
From: David Marchand @ 2021-04-06 20:09 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Bruce Richardson, Dmitry Kozlyuk, Narcisa Ana Maria Vasile,
	Dmitry Malloy, Pallavi Kadam, Ray Kinsella, Neil Horman,
	Matan Azrad, Shahaf Shuler, Viacheslav Ovsiienko

On Tue, Apr 6, 2021 at 8:53 PM Thomas Monjalon <thomas@monjalon.net> wrote:
>
> About the title, it is not a single file but one file per lib/driver.
> I think it would better convey the idea by saying "remove .def files".

Ok.

>
> 06/04/2021 19:59, David Marchand:
> > Rather than have two files that keeps getting out of sync, let's
> > annotate the version.map to generate the Windows export file.
> >
> > Note: Existing version.map annotation achieved with:
> > $ for dir in lib/librte_eal drivers/common/mlx5; do
> >     ./buildtools/map-list-symbol.sh $dir/*.map |
> >     while read file version sym; do
> >       ! git grep -qw $sym $dir/*.def || continue;
> >       sed -i -e "s/$sym;/$sym; # WINDOWS_NO_EXPORT/" $dir/*.map;
> >     done;
> >   done
>
> This patch keeps the exact same behaviour, right?

I checked by sorting/diff'ing previously committed .def files for EAL
and common/mlx5 with the newly generated ones.
No difference, once aligning the mlx5 version.map.

There is one change in behavior.
I thought as exports.def being a subset of the map files, and this
patch enforces it.
It seems there were some tries at going the opposite way, looking at
the comment in check-symbol-maps.sh.
But looking at the current common/mlx5 state, I don't see this as a
requirement (Linux and Windows share the same interface).


> There are a lot of symbols in EAL and mlx5 which should
> be exported for Windows too, but it is open for future fixes, right?

Not sure I get this question.

We have exports missing in EAL for some series posted on the ml
waiting for merges.
I suspect some recent merged changes have issues too (but did not check yet).
This current patch does not address such issues and we need fixes
afterwards if this is what you mean.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH v2] build: list symbols exports in a single file
  2021-04-06 20:09     ` David Marchand
@ 2021-04-06 22:39       ` Thomas Monjalon
  2021-04-07  8:16       ` David Marchand
  1 sibling, 0 replies; 15+ messages in thread
From: Thomas Monjalon @ 2021-04-06 22:39 UTC (permalink / raw)
  To: David Marchand
  Cc: dev, Bruce Richardson, Dmitry Kozlyuk, Narcisa Ana Maria Vasile,
	Dmitry Malloy, Pallavi Kadam, Ray Kinsella, Neil Horman,
	Matan Azrad, Shahaf Shuler, Viacheslav Ovsiienko

06/04/2021 22:09, David Marchand:
> On Tue, Apr 6, 2021 at 8:53 PM Thomas Monjalon <thomas@monjalon.net> wrote:
> >
> > About the title, it is not a single file but one file per lib/driver.
> > I think it would better convey the idea by saying "remove .def files".
> 
> Ok.
> 
> >
> > 06/04/2021 19:59, David Marchand:
> > > Rather than have two files that keeps getting out of sync, let's
> > > annotate the version.map to generate the Windows export file.
> > >
> > > Note: Existing version.map annotation achieved with:
> > > $ for dir in lib/librte_eal drivers/common/mlx5; do
> > >     ./buildtools/map-list-symbol.sh $dir/*.map |
> > >     while read file version sym; do
> > >       ! git grep -qw $sym $dir/*.def || continue;
> > >       sed -i -e "s/$sym;/$sym; # WINDOWS_NO_EXPORT/" $dir/*.map;
> > >     done;
> > >   done
> >
> > This patch keeps the exact same behaviour, right?
> 
> I checked by sorting/diff'ing previously committed .def files for EAL
> and common/mlx5 with the newly generated ones.
> No difference, once aligning the mlx5 version.map.
> 
> There is one change in behavior.
> I thought as exports.def being a subset of the map files, and this
> patch enforces it.
> It seems there were some tries at going the opposite way, looking at
> the comment in check-symbol-maps.sh.
> But looking at the current common/mlx5 state, I don't see this as a
> requirement (Linux and Windows share the same interface).
> 
> 
> > There are a lot of symbols in EAL and mlx5 which should
> > be exported for Windows too, but it is open for future fixes, right?
> 
> Not sure I get this question.
> 
> We have exports missing in EAL for some series posted on the ml
> waiting for merges.
> I suspect some recent merged changes have issues too (but did not check yet).
> This current patch does not address such issues and we need fixes
> afterwards if this is what you mean.

Yes this is what I mean.
I wanted to make clear to people in Cc list that some fixes are required
as follow-up: some symbols in EAL and mlx5 are missing for Windows.




^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH v2] build: list symbols exports in a single file
  2021-04-06 20:09     ` David Marchand
  2021-04-06 22:39       ` Thomas Monjalon
@ 2021-04-07  8:16       ` David Marchand
  2021-04-07  8:53         ` Dmitry Kozlyuk
  1 sibling, 1 reply; 15+ messages in thread
From: David Marchand @ 2021-04-07  8:16 UTC (permalink / raw)
  To: Thomas Monjalon, Dmitry Kozlyuk, Narcisa Ana Maria Vasile, Dmitry Malloy
  Cc: dev, Bruce Richardson, Pallavi Kadam, Ray Kinsella, Neil Horman,
	Matan Azrad, Shahaf Shuler, Viacheslav Ovsiienko

On Tue, Apr 6, 2021 at 10:09 PM David Marchand
<david.marchand@redhat.com> wrote:
> We have exports missing in EAL for some series posted on the ml
> waiting for merges.
> I suspect some recent merged changes have issues too (but did not check yet).
> This current patch does not address such issues and we need fixes
> afterwards if this is what you mean.

I did a first pass.

I see symbols from rte_random.c and rte_version.c not exported, while
those files are compiled for Windows.
Could you explain why these are not exported?


-- 
David Marchand


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH v2] build: list symbols exports in a single file
  2021-04-07  8:16       ` David Marchand
@ 2021-04-07  8:53         ` Dmitry Kozlyuk
  2021-04-07  8:57           ` Thomas Monjalon
  0 siblings, 1 reply; 15+ messages in thread
From: Dmitry Kozlyuk @ 2021-04-07  8:53 UTC (permalink / raw)
  To: David Marchand
  Cc: Thomas Monjalon, Narcisa Ana Maria Vasile, Dmitry Malloy, dev,
	Bruce Richardson, Pallavi Kadam, Ray Kinsella, Neil Horman,
	Matan Azrad, Shahaf Shuler, Viacheslav Ovsiienko

2021-04-07 10:16 (UTC+0200), David Marchand:
> On Tue, Apr 6, 2021 at 10:09 PM David Marchand
> <david.marchand@redhat.com> wrote:
> > We have exports missing in EAL for some series posted on the ml
> > waiting for merges.
> > I suspect some recent merged changes have issues too (but did not check yet).
> > This current patch does not address such issues and we need fixes
> > afterwards if this is what you mean.  
> 
> I did a first pass.
> 
> I see symbols from rte_random.c and rte_version.c not exported, while
> those files are compiled for Windows.
> Could you explain why these are not exported?

These are just forgotten, can be safely exported.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH v2] build: list symbols exports in a single file
  2021-04-07  8:53         ` Dmitry Kozlyuk
@ 2021-04-07  8:57           ` Thomas Monjalon
  2021-04-07 11:38             ` Tal Shnaiderman
  0 siblings, 1 reply; 15+ messages in thread
From: Thomas Monjalon @ 2021-04-07  8:57 UTC (permalink / raw)
  To: Dmitry Kozlyuk
  Cc: David Marchand, Narcisa Ana Maria Vasile, Dmitry Malloy, dev,
	Bruce Richardson, Pallavi Kadam, Ray Kinsella, Neil Horman,
	Matan Azrad, Shahaf Shuler, Viacheslav Ovsiienko, talshn,
	ophirmu

07/04/2021 10:53, Dmitry Kozlyuk:
> 2021-04-07 10:16 (UTC+0200), David Marchand:
> > On Tue, Apr 6, 2021 at 10:09 PM David Marchand
> > <david.marchand@redhat.com> wrote:
> > > We have exports missing in EAL for some series posted on the ml
> > > waiting for merges.
> > > I suspect some recent merged changes have issues too (but did not check yet).
> > > This current patch does not address such issues and we need fixes
> > > afterwards if this is what you mean.  
> > 
> > I did a first pass.
> > 
> > I see symbols from rte_random.c and rte_version.c not exported, while
> > those files are compiled for Windows.
> > Could you explain why these are not exported?
> 
> These are just forgotten, can be safely exported.

I prefer we don't mix fixes with this format rework.
Please send fixes on top of this patch.
Cc'ed Tal & Ophir for mlx5.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH v2] build: list symbols exports in a single file
  2021-04-07  8:57           ` Thomas Monjalon
@ 2021-04-07 11:38             ` Tal Shnaiderman
  0 siblings, 0 replies; 15+ messages in thread
From: Tal Shnaiderman @ 2021-04-07 11:38 UTC (permalink / raw)
  To: NBU-Contact-Thomas Monjalon, Dmitry Kozlyuk
  Cc: David Marchand, Narcisa Ana Maria Vasile, Dmitry Malloy, dev,
	Bruce Richardson, Pallavi Kadam, Ray Kinsella, Neil Horman,
	Matan Azrad, Shahaf Shuler, Slava Ovsiienko, Ophir Munk

> Subject: Re: [PATCH v2] build: list symbols exports in a single file
> 
> External email: Use caution opening links or attachments
> 
> 
> 07/04/2021 10:53, Dmitry Kozlyuk:
> > 2021-04-07 10:16 (UTC+0200), David Marchand:
> > > On Tue, Apr 6, 2021 at 10:09 PM David Marchand
> > > <david.marchand@redhat.com> wrote:
> > > > We have exports missing in EAL for some series posted on the ml
> > > > waiting for merges.
> > > > I suspect some recent merged changes have issues too (but did not
> check yet).
> > > > This current patch does not address such issues and we need fixes
> > > > afterwards if this is what you mean.
> > >
> > > I did a first pass.
> > >
> > > I see symbols from rte_random.c and rte_version.c not exported,
> > > while those files are compiled for Windows.
> > > Could you explain why these are not exported?
> >
> > These are just forgotten, can be safely exported.
> 
> I prefer we don't mix fixes with this format rework.
> Please send fixes on top of this patch.
> Cc'ed Tal & Ophir for mlx5.
> 

Thanks David for resolving the duplication.

For mlx5, the functions mlx5_devx_cmd_*, mlx5_mp_* and mlx5_memory_stat_dump are compiled but currently not used.

I can send a separate patch exporting all of them to be more aligned with Linux, or we can export them whenever we'll actually start using them.

Regardless: 

Tested-by: Tal Shnaiderman <talshn@nvidia.com>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH] build: list symbols exports in a single file
  2021-04-06 16:50 ` Bruce Richardson
  2021-04-06 16:53   ` David Marchand
@ 2021-04-07 20:06   ` Kinsella, Ray
  1 sibling, 0 replies; 15+ messages in thread
From: Kinsella, Ray @ 2021-04-07 20:06 UTC (permalink / raw)
  To: Bruce Richardson, David Marchand
  Cc: dev, thomas, Dmitry Kozlyuk, Narcisa Ana Maria Vasile,
	Dmitry Malloy, Pallavi Kadam, Neil Horman



On 06/04/2021 17:50, Bruce Richardson wrote:
> On Tue, Apr 06, 2021 at 06:32:30PM +0200, David Marchand wrote:
>> Rather than have two files that keeps getting out of sync, let's
>> annotate the version.map to generate the Windows export file.
>>
>> Note: EAL version.map annotation achieved with:
>> $ ./buildtools/map-list-symbol.sh lib/librte_eal/version.map |
>>   while read file version sym; do
>>     ! git grep -qw $sym lib/librte_eal/*.def || continue;
>>     sed -i -e "s/$sym;/$sym; # WINDOWS_NO_EXPORT/" lib/librte_eal/*.map;
>>   done
>>
>> Signed-off-by: David Marchand <david.marchand@redhat.com>
>> ---
> +1 to the idea, this is great to see.

+1 agreed.
> 
>>  MAINTAINERS                        |   1 -
>>  buildtools/map_to_win.py           |   8 +-
>>  devtools/check-symbol-maps.sh      |  20 --
>>  lib/librte_eal/rte_eal_exports.def | 336 -----------------------------
>>  lib/librte_eal/version.map         | 136 ++++++------
>>  5 files changed, 69 insertions(+), 432 deletions(-)
>>  delete mode 100644 lib/librte_eal/rte_eal_exports.def
>>
> <snip>  
>> -# special case, allow override if an def file already exists alongside map file
>> -    override_file = join(dirname(args[1]), basename(args[2]))
>> -    if exists(override_file):
>> -        with open(override_file) as f_in:
>> -            functions = f_in.readlines()
>> -
> 
> If this is removed, then drivers/common/mlx5/version.map similarly needs to
> be annotated so that we can remove rte_common_mlx5_exports.def
> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH v2] build: list symbols exports in a single file
  2021-04-06 17:59 ` [dpdk-dev] [PATCH v2] " David Marchand
  2021-04-06 18:52   ` Thomas Monjalon
@ 2021-04-08 14:51   ` Thomas Monjalon
  2021-04-08 16:11   ` David Marchand
  2 siblings, 0 replies; 15+ messages in thread
From: Thomas Monjalon @ 2021-04-08 14:51 UTC (permalink / raw)
  To: David Marchand
  Cc: dev, bruce.richardson, Dmitry Kozlyuk, Narcisa Ana Maria Vasile,
	Dmitry Malloy, Pallavi Kadam, Ray Kinsella, Neil Horman,
	Matan Azrad, Shahaf Shuler, Viacheslav Ovsiienko

06/04/2021 19:59, David Marchand:
> Rather than have two files that keeps getting out of sync, let's
> annotate the version.map to generate the Windows export file.
> 
> Note: Existing version.map annotation achieved with:
> $ for dir in lib/librte_eal drivers/common/mlx5; do
>     ./buildtools/map-list-symbol.sh $dir/*.map |
>     while read file version sym; do
>       ! git grep -qw $sym $dir/*.def || continue;
>       sed -i -e "s/$sym;/$sym; # WINDOWS_NO_EXPORT/" $dir/*.map;
>     done;
>   done
> 
> Signed-off-by: David Marchand <david.marchand@redhat.com>

Acked-by: Thomas Monjalon <thomas@monjalon.net>

That's a nice improvement.
Fixes to remove WINDOWS_NO_EXPORT annotations would be great to see
from the original authors of the concerned symbols.

I think we should merge this patch quickly to avoid having more
discrepancies with the coming EAL patches.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [dpdk-dev] [PATCH v2] build: list symbols exports in a single file
  2021-04-06 17:59 ` [dpdk-dev] [PATCH v2] " David Marchand
  2021-04-06 18:52   ` Thomas Monjalon
  2021-04-08 14:51   ` Thomas Monjalon
@ 2021-04-08 16:11   ` David Marchand
  2 siblings, 0 replies; 15+ messages in thread
From: David Marchand @ 2021-04-08 16:11 UTC (permalink / raw)
  To: dev
  Cc: Thomas Monjalon, Bruce Richardson, Dmitry Kozlyuk,
	Narcisa Ana Maria Vasile, Dmitry Malloy, Pallavi Kadam,
	Ray Kinsella, Neil Horman, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko

On Tue, Apr 6, 2021 at 7:59 PM David Marchand <david.marchand@redhat.com> wrote:
>
> Rather than have two files that keeps getting out of sync, let's
> annotate the version.map to generate the Windows export file.
>
> Note: Existing version.map annotation achieved with:
> $ for dir in lib/librte_eal drivers/common/mlx5; do
>     ./buildtools/map-list-symbol.sh $dir/*.map |
>     while read file version sym; do
>       ! git grep -qw $sym $dir/*.def || continue;
>       sed -i -e "s/$sym;/$sym; # WINDOWS_NO_EXPORT/" $dir/*.map;
>     done;
>   done
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>

Tested-by: Tal Shnaiderman <talshn@nvidia.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>

Updated commitlog and sorted common/mlx5 updates (from offlist
comments with Thomas).

Applied, thanks.

-- 
David Marchand


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2021-04-08 16:11 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-06 16:32 [dpdk-dev] [PATCH] build: list symbols exports in a single file David Marchand
2021-04-06 16:40 ` David Marchand
2021-04-06 16:50 ` Bruce Richardson
2021-04-06 16:53   ` David Marchand
2021-04-07 20:06   ` Kinsella, Ray
2021-04-06 17:59 ` [dpdk-dev] [PATCH v2] " David Marchand
2021-04-06 18:52   ` Thomas Monjalon
2021-04-06 20:09     ` David Marchand
2021-04-06 22:39       ` Thomas Monjalon
2021-04-07  8:16       ` David Marchand
2021-04-07  8:53         ` Dmitry Kozlyuk
2021-04-07  8:57           ` Thomas Monjalon
2021-04-07 11:38             ` Tal Shnaiderman
2021-04-08 14:51   ` Thomas Monjalon
2021-04-08 16:11   ` David Marchand

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git