DPDK patches and discussions
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@6wind.com>
To: dev@dpdk.org
Cc: bjzhuc@cn.ibm.com
Subject: [dpdk-dev] [PATCH v3 00/10] split architecture specific operations
Date: Tue, 28 Oct 2014 13:50:47 +0100	[thread overview]
Message-ID: <1414500657-23774-1-git-send-email-david.marchand@6wind.com> (raw)

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

             reply	other threads:[~2014-10-28 12:42 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-28 12:50 David Marchand [this message]
2014-10-28 12:50 ` [dpdk-dev] [PATCH v3 01/10] eal: move rte_atomic.h header David Marchand
2014-10-28 12:50 ` [dpdk-dev] [PATCH v3 02/10] eal: split atomic operations to architecture specific David Marchand
2014-10-28 12:50 ` [dpdk-dev] [PATCH v3 03/10] eal: split byte order " David Marchand
2014-10-28 12:50 ` [dpdk-dev] [PATCH v3 04/10] eal: split CPU cycle operation " David Marchand
2014-10-28 12:50 ` [dpdk-dev] [PATCH v3 05/10] eal: split prefetch operations " David Marchand
2014-10-28 12:50 ` [dpdk-dev] [PATCH v3 06/10] eal: split spinlock " David Marchand
2014-10-28 12:50 ` [dpdk-dev] [PATCH v3 07/10] eal: split memcpy operation " David Marchand
2014-10-28 12:50 ` [dpdk-dev] [PATCH v3 08/10] eal: split CPU flags operations " David Marchand
2014-10-28 12:50 ` [dpdk-dev] [PATCH v3 09/10] eal: install all arch headers David Marchand
2014-10-28 12:50 ` [dpdk-dev] [PATCH v3 10/10] eal: factorize x86 headers David Marchand
2014-11-03  8:10 ` [dpdk-dev] [PATCH v3 00/10] split architecture specific operations Chao CH Zhu
2014-11-05  2:39 ` Chao Zhu
2014-11-05 21:57   ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1414500657-23774-1-git-send-email-david.marchand@6wind.com \
    --to=david.marchand@6wind.com \
    --cc=bjzhuc@cn.ibm.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).