[dpdk-dev] [PATCH v3 00/10] split architecture specific operations

David Marchand david.marchand at 6wind.com
Tue Oct 28 13:50:47 CET 2014


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



More information about the dev mailing list