mbox series

[v10,0/4] eal/windows: do not expose POSIX symbols

Message ID 20210414220651.28691-1-dmitry.kozliuk@gmail.com (mailing list archive)
Headers show
Series eal/windows: do not expose POSIX symbols | expand

Message

Dmitry Kozlyuk April 14, 2021, 10:06 p.m. UTC
On Windows, EAL contains two sets of functions and macros for POSIX
compatibility: <rte_os.h> and a networking shim (socket headers).
The latter conflicts with system headers and should not exist.
Exposing the former from EAL can break consumer own POSIX compatibility
layer and is against standards in general. Hide these symbols from
external consumers, while keeping them available for DPDK code.

v10:
    * Fix examples that build on Windows.
v9:
    * Fix missing <rte_os_shim.h> include in rte_common_log.c.
      (This will happen again. Going to add a checkpatch test
       after this series is merged.)

Dmitry Kozlyuk (4):
  eal/windows: hide asprintf() shim
  eal: make OS shims internal
  net: work around s_addr macro on Windows
  net: provide IP-related API on any OS

 drivers/bus/pci/private.h                    |  4 +-
 drivers/bus/vdev/vdev_private.h              |  2 +
 drivers/common/mlx5/mlx5_common.h            |  1 +
 drivers/net/i40e/i40e_ethdev.c               |  1 +
 drivers/net/i40e/i40e_fdir.c                 |  1 +
 drivers/net/mlx5/mlx5.h                      |  1 -
 drivers/net/mlx5/mlx5_flow.c                 |  4 +-
 drivers/net/mlx5/mlx5_flow.h                 |  3 +-
 drivers/net/mlx5/mlx5_mac.c                  |  1 -
 examples/cmdline/commands.c                  |  5 --
 examples/cmdline/parse_obj_list.c            |  2 -
 examples/flow_filtering/main.c               |  1 -
 examples/l2fwd/main.c                        |  1 -
 examples/link_status_interrupt/main.c        |  1 -
 examples/service_cores/main.c                |  4 +-
 lib/librte_cmdline/cmdline.c                 |  5 --
 lib/librte_cmdline/cmdline_os_windows.c      |  2 -
 lib/librte_cmdline/cmdline_parse.c           |  2 -
 lib/librte_cmdline/cmdline_parse_etheraddr.c |  6 --
 lib/librte_cmdline/cmdline_parse_ipaddr.c    |  6 --
 lib/librte_cmdline/cmdline_parse_ipaddr.h    |  2 +-
 lib/librte_cmdline/cmdline_private.h         |  1 +
 lib/librte_cmdline/cmdline_socket.c          |  4 -
 lib/librte_eal/common/eal_common_config.c    |  1 -
 lib/librte_eal/common/eal_common_errno.c     |  4 +
 lib/librte_eal/common/eal_common_log.c       |  1 +
 lib/librte_eal/common/eal_common_options.c   |  2 +-
 lib/librte_eal/common/eal_common_timer.c     |  4 +-
 lib/librte_eal/common/eal_internal_cfg.h     |  1 +
 lib/librte_eal/common/eal_private.h          | 11 +++
 lib/librte_eal/freebsd/include/rte_os_shim.h | 14 +++
 lib/librte_eal/linux/include/rte_os_shim.h   | 14 +++
 lib/librte_eal/windows/eal.c                 | 30 +++++++
 lib/librte_eal/windows/eal_hugepages.c       |  1 -
 lib/librte_eal/windows/eal_lcore.c           |  1 -
 lib/librte_eal/windows/eal_memalloc.c        |  1 -
 lib/librte_eal/windows/include/arpa/inet.h   | 30 -------
 lib/librte_eal/windows/include/netinet/in.h  | 38 --------
 lib/librte_eal/windows/include/netinet/ip.h  | 10 ---
 lib/librte_eal/windows/include/rte_os.h      | 92 +-------------------
 lib/librte_eal/windows/include/rte_os_shim.h | 36 ++++++++
 lib/librte_eal/windows/include/sys/socket.h  | 24 -----
 lib/librte_ethdev/ethdev_private.h           |  2 +
 lib/librte_ethdev/rte_ethdev.c               | 12 +--
 lib/librte_ethdev/rte_ethdev_core.h          |  1 -
 lib/librte_kvargs/rte_kvargs.c               |  1 +
 lib/librte_net/rte_ether.h                   | 26 ++++--
 lib/librte_net/rte_ip.h                      |  7 ++
 lib/librte_net/rte_net.c                     |  1 +
 49 files changed, 167 insertions(+), 258 deletions(-)
 create mode 100644 lib/librte_eal/freebsd/include/rte_os_shim.h
 create mode 100644 lib/librte_eal/linux/include/rte_os_shim.h
 delete mode 100644 lib/librte_eal/windows/include/arpa/inet.h
 delete mode 100644 lib/librte_eal/windows/include/netinet/in.h
 delete mode 100644 lib/librte_eal/windows/include/netinet/ip.h
 create mode 100644 lib/librte_eal/windows/include/rte_os_shim.h
 delete mode 100644 lib/librte_eal/windows/include/sys/socket.h

Comments

Ranjit Menon April 14, 2021, 10:50 p.m. UTC | #1
On 4/14/2021 3:06 PM, Dmitry Kozlyuk wrote:
> On Windows, EAL contains two sets of functions and macros for POSIX
> compatibility: <rte_os.h> and a networking shim (socket headers).
> The latter conflicts with system headers and should not exist.
> Exposing the former from EAL can break consumer own POSIX compatibility
> layer and is against standards in general. Hide these symbols from
> external consumers, while keeping them available for DPDK code.
>
> v10:
>      * Fix examples that build on Windows.
> v9:
>      * Fix missing <rte_os_shim.h> include in rte_common_log.c.
>        (This will happen again. Going to add a checkpatch test
>         after this series is merged.)
>
> Dmitry Kozlyuk (4):
>    eal/windows: hide asprintf() shim
>    eal: make OS shims internal
>    net: work around s_addr macro on Windows
>    net: provide IP-related API on any OS
>
>   drivers/bus/pci/private.h                    |  4 +-
>   drivers/bus/vdev/vdev_private.h              |  2 +
>   drivers/common/mlx5/mlx5_common.h            |  1 +
>   drivers/net/i40e/i40e_ethdev.c               |  1 +
>   drivers/net/i40e/i40e_fdir.c                 |  1 +
>   drivers/net/mlx5/mlx5.h                      |  1 -
>   drivers/net/mlx5/mlx5_flow.c                 |  4 +-
>   drivers/net/mlx5/mlx5_flow.h                 |  3 +-
>   drivers/net/mlx5/mlx5_mac.c                  |  1 -
>   examples/cmdline/commands.c                  |  5 --
>   examples/cmdline/parse_obj_list.c            |  2 -
>   examples/flow_filtering/main.c               |  1 -
>   examples/l2fwd/main.c                        |  1 -
>   examples/link_status_interrupt/main.c        |  1 -
>   examples/service_cores/main.c                |  4 +-
>   lib/librte_cmdline/cmdline.c                 |  5 --
>   lib/librte_cmdline/cmdline_os_windows.c      |  2 -
>   lib/librte_cmdline/cmdline_parse.c           |  2 -
>   lib/librte_cmdline/cmdline_parse_etheraddr.c |  6 --
>   lib/librte_cmdline/cmdline_parse_ipaddr.c    |  6 --
>   lib/librte_cmdline/cmdline_parse_ipaddr.h    |  2 +-
>   lib/librte_cmdline/cmdline_private.h         |  1 +
>   lib/librte_cmdline/cmdline_socket.c          |  4 -
>   lib/librte_eal/common/eal_common_config.c    |  1 -
>   lib/librte_eal/common/eal_common_errno.c     |  4 +
>   lib/librte_eal/common/eal_common_log.c       |  1 +
>   lib/librte_eal/common/eal_common_options.c   |  2 +-
>   lib/librte_eal/common/eal_common_timer.c     |  4 +-
>   lib/librte_eal/common/eal_internal_cfg.h     |  1 +
>   lib/librte_eal/common/eal_private.h          | 11 +++
>   lib/librte_eal/freebsd/include/rte_os_shim.h | 14 +++
>   lib/librte_eal/linux/include/rte_os_shim.h   | 14 +++
>   lib/librte_eal/windows/eal.c                 | 30 +++++++
>   lib/librte_eal/windows/eal_hugepages.c       |  1 -
>   lib/librte_eal/windows/eal_lcore.c           |  1 -
>   lib/librte_eal/windows/eal_memalloc.c        |  1 -
>   lib/librte_eal/windows/include/arpa/inet.h   | 30 -------
>   lib/librte_eal/windows/include/netinet/in.h  | 38 --------
>   lib/librte_eal/windows/include/netinet/ip.h  | 10 ---
>   lib/librte_eal/windows/include/rte_os.h      | 92 +-------------------
>   lib/librte_eal/windows/include/rte_os_shim.h | 36 ++++++++
>   lib/librte_eal/windows/include/sys/socket.h  | 24 -----
>   lib/librte_ethdev/ethdev_private.h           |  2 +
>   lib/librte_ethdev/rte_ethdev.c               | 12 +--
>   lib/librte_ethdev/rte_ethdev_core.h          |  1 -
>   lib/librte_kvargs/rte_kvargs.c               |  1 +
>   lib/librte_net/rte_ether.h                   | 26 ++++--
>   lib/librte_net/rte_ip.h                      |  7 ++
>   lib/librte_net/rte_net.c                     |  1 +
>   49 files changed, 167 insertions(+), 258 deletions(-)
>   create mode 100644 lib/librte_eal/freebsd/include/rte_os_shim.h
>   create mode 100644 lib/librte_eal/linux/include/rte_os_shim.h
>   delete mode 100644 lib/librte_eal/windows/include/arpa/inet.h
>   delete mode 100644 lib/librte_eal/windows/include/netinet/in.h
>   delete mode 100644 lib/librte_eal/windows/include/netinet/ip.h
>   create mode 100644 lib/librte_eal/windows/include/rte_os_shim.h
>   delete mode 100644 lib/librte_eal/windows/include/sys/socket.h

Thanks, Dmitry.

Acked-by: Ranjit Menon <ranjit.menon@intel.com>
Thomas Monjalon April 14, 2021, 11:57 p.m. UTC | #2
> > Dmitry Kozlyuk (4):
> >    eal/windows: hide asprintf() shim
> >    eal: make OS shims internal
> >    net: work around s_addr macro on Windows
> >    net: provide IP-related API on any OS
> 
> Thanks, Dmitry.
> 
> Acked-by: Ranjit Menon <ranjit.menon@intel.com>

Applied, thanks