Rather than defining "rte_" versions of these functions, is it possible
just to provide the unprefixed definitions of them for internal use?
While this probably won't work for any functions used in public headers,
for any functions only used in C files, we can use meson to detect the
presence of the standard function and set a macro flag for the compatiblity
version if not present. This is something we already support for the
strlcpy/strlcat functions from libbsd, and it basically allows the
well-known (and loved?) functions to be used directly, and saves DPDK
developers having to worry about what "standard" functions can be used
directly, and which can't.

Hi Bruce,

You're asking a really good question here that highlights a fundamental issue:
Does the DPDK code base have an implied POSIX dependency, or should it only
depend upon the standard C library and 'rte_ ' functions.  This hasn't been an
issue before, but Windows isn't 'POSIX' based.

Using "well-known" names for missing functions is ok where the definitions
are in private header files, but if the headers are public, or the implementation is better done in a C file, then there can be a clash with the application which
is likely dealing with the same issues.

There seem to be two viable approaches to handling this:

1. Expect the platform to provide POSIX semantic (through an external
   library
   such as Cygwin). That way it becomes "an 'external' problem" and the
   DPDK
   can use the "well-known" names and expected behaviour.

2. Provide the missing functionality, but wrap it in 'internal' header
   files
   and 'rte_' versions to avoid link errors. This is the approach that
   Dmitry has
   taken based on the guidance we've received.

For background, the approach I've taken with adding Windows support to SPDK
is to create an 'external' library (https://wpdk.github.io) with header files that provide the missing POSIX functionality and functions with a prefix to avoid link
errors. As a result, the whole of SPDK can now build and run unchanged.

Regards,
Nick

Reply via email to