The set of patches split x86 architecture specific operations from DPDK and put them to x86 arch directory. This will make the adoption of DPDK much easier on other computer architecture. For a new architecture, just add an architecture specific directory and necessary building configuration files, then DPDK eal library can support it.
Reviewing patchset from Chao, I ended up modifying it along the way, so here is a new iteration of this patchset. Changes since Chao v2 patchset : - added a preliminary patch for moving rte_atomic.h (for better readability) - fixed documentation generation - implemented a generic header for each arch specific header (cpuflags, memcpy, prefetch were missing) - removed C++ stuff from generic headers - centralised all doxygen stuff in generic headers (no need to have duplicates) - refactored rte_cycles functions - moved vmware tsc stuff to arch rte_cycles.h headers - finished x86 factorisation Little summary of current state : - all applications continue to include the eal headers as before, these headers are the arch-specific ones - the arch specific headers always include the generic ones. The generic headers contain the doxygen documentation and code common to all architectures - a x86 architecture has been defined which handles both 32bits and 64bits peculiarities It builds fine for 32/64 bits (w and w/o "force intrinsics"), but I really would like a lot of eyes on this (and I would say, especially, rte_cycles, rte_memcpy and rte_cpuflags). I still have some concerns about the use of intrinsics for architecture != x86 but I think Chao will be the best to look at this. -- David Marchand Chao Zhu (7): eal: split atomic operations to architecture specific eal: split byte order operations to architecture specific eal: split CPU cycle operation to architecture specific eal: split prefetch operations to architecture specific eal: split spinlock operations to architecture specific eal: split memcpy operation to architecture specific eal: split CPU flags operations to architecture specific David Marchand (3): eal: move rte_atomic.h header eal: install all arch headers eal: factorize x86 headers doc/api/doxy-api.conf | 1 + lib/librte_eal/common/Makefile | 24 +- lib/librte_eal/common/eal_common_cpuflags.c | 190 ---- .../common/include/arch/x86/rte_atomic.h | 216 ++++ .../common/include/arch/x86/rte_atomic_32.h | 222 ++++ .../common/include/arch/x86/rte_atomic_64.h | 191 ++++ .../common/include/arch/x86/rte_byteorder.h | 121 +++ .../common/include/arch/x86/rte_byteorder_32.h | 51 + .../common/include/arch/x86/rte_byteorder_64.h | 52 + .../common/include/arch/x86/rte_cpuflags.h | 310 ++++++ .../common/include/arch/x86/rte_cycles.h | 121 +++ .../common/include/arch/x86/rte_memcpy.h | 297 +++++ .../common/include/arch/x86/rte_prefetch.h | 62 ++ .../common/include/arch/x86/rte_spinlock.h | 94 ++ lib/librte_eal/common/include/generic/rte_atomic.h | 918 ++++++++++++++++ .../common/include/generic/rte_byteorder.h | 189 ++++ .../common/include/generic/rte_cpuflags.h | 110 ++ lib/librte_eal/common/include/generic/rte_cycles.h | 209 ++++ lib/librte_eal/common/include/generic/rte_memcpy.h | 144 +++ .../common/include/generic/rte_prefetch.h | 71 ++ .../common/include/generic/rte_spinlock.h | 226 ++++ .../common/include/i686/arch/rte_atomic.h | 373 ------- lib/librte_eal/common/include/rte_atomic.h | 1133 -------------------- lib/librte_eal/common/include/rte_byteorder.h | 270 ----- lib/librte_eal/common/include/rte_cpuflags.h | 182 ---- lib/librte_eal/common/include/rte_cycles.h | 266 ----- lib/librte_eal/common/include/rte_memcpy.h | 376 ------- lib/librte_eal/common/include/rte_prefetch.h | 88 -- lib/librte_eal/common/include/rte_spinlock.h | 258 ----- .../common/include/x86_64/arch/rte_atomic.h | 335 ------ mk/arch/i686/rte.vars.mk | 2 + mk/arch/x86_64/rte.vars.mk | 2 + 32 files changed, 3624 insertions(+), 3480 deletions(-) create mode 100644 lib/librte_eal/common/include/arch/x86/rte_atomic.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_atomic_32.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_atomic_64.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_byteorder.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_byteorder_32.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_byteorder_64.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_cpuflags.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_cycles.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_memcpy.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_prefetch.h create mode 100644 lib/librte_eal/common/include/arch/x86/rte_spinlock.h create mode 100644 lib/librte_eal/common/include/generic/rte_atomic.h create mode 100644 lib/librte_eal/common/include/generic/rte_byteorder.h create mode 100644 lib/librte_eal/common/include/generic/rte_cpuflags.h create mode 100644 lib/librte_eal/common/include/generic/rte_cycles.h create mode 100644 lib/librte_eal/common/include/generic/rte_memcpy.h create mode 100644 lib/librte_eal/common/include/generic/rte_prefetch.h create mode 100644 lib/librte_eal/common/include/generic/rte_spinlock.h delete mode 100644 lib/librte_eal/common/include/i686/arch/rte_atomic.h delete mode 100644 lib/librte_eal/common/include/rte_atomic.h delete mode 100644 lib/librte_eal/common/include/rte_byteorder.h delete mode 100644 lib/librte_eal/common/include/rte_cpuflags.h delete mode 100644 lib/librte_eal/common/include/rte_cycles.h delete mode 100644 lib/librte_eal/common/include/rte_memcpy.h delete mode 100644 lib/librte_eal/common/include/rte_prefetch.h delete mode 100644 lib/librte_eal/common/include/rte_spinlock.h delete mode 100644 lib/librte_eal/common/include/x86_64/arch/rte_atomic.h -- 1.7.10.4