This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, api-next has been updated
via 2961df923de0b3034c09a288b28394c1a2ea1a9d (commit)
from 9fbdbe9a6a86705339858a906ea66f076cc66785 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -------------…
[View More]----------------------------------------------------
commit 2961df923de0b3034c09a288b28394c1a2ea1a9d
Author: Yi He <yi.he(a)linaro.org>
Date: Tue Feb 7 02:35:17 2017 +0000
linux-gen: fix odp_schedule.m4
Fixed configure script when enables schedule option
schedule-iquery=yes or schedule-sp=yes: command not found
Signed-off-by: Yi He <yi.he(a)linaro.org>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/platform/linux-generic/m4/odp_schedule.m4 b/platform/linux-generic/m4/odp_schedule.m4
index 2dcc9a7..91c19f2 100644
--- a/platform/linux-generic/m4/odp_schedule.m4
+++ b/platform/linux-generic/m4/odp_schedule.m4
@@ -1,13 +1,13 @@
AC_ARG_ENABLE([schedule-sp],
[ --enable-schedule-sp enable strict priority scheduler],
[if test x$enableval = xyes; then
- schedule-sp=yes
+ schedule_sp_enabled=yes
ODP_CFLAGS="$ODP_CFLAGS -DODP_SCHEDULE_SP"
fi])
AC_ARG_ENABLE([schedule-iquery],
[ --enable-schedule-iquery enable interests query (sparse bitmap) scheduler],
[if test x$enableval = xyes; then
- schedule-iquery=yes
+ schedule_iquery_enabled=yes
ODP_CFLAGS="$ODP_CFLAGS -DODP_SCHEDULE_IQUERY"
fi])
-----------------------------------------------------------------------
Summary of changes:
platform/linux-generic/m4/odp_schedule.m4 | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
hooks/post-receive
--
[View Less]
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, master has been updated
via b8867b0a5ea5eeb8b0b7a95e36025c95738f48b3 (commit)
from 6ad530311e9cbd5fd77b958e78921e80fbbfa943 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log ---------------…
[View More]--------------------------------------------------
commit b8867b0a5ea5eeb8b0b7a95e36025c95738f48b3
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Tue Feb 7 16:48:12 2017 +0300
codecov: add code coverage integrated to github
Results for code coverage will be available in https://codecov.io.
On each successful run in github automatic code coverage will
be run under travis ci. And at the end of travis log there will
be link to code coverage for specific commit which you push. Also
github merge requests will post automatically status of code coverage
and update it if you changed merge request to new version.
This patch also adds matrix to test both gcc and clang due to gcov
is broken Travis CI shipment. Coverage done only for gcc tests.
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Reviewed-by: Mike Holmes <mike.holmes(a)linaro.org>
diff --git a/.codecov.yml b/.codecov.yml
new file mode 100644
index 0000000..86bcd1d
--- /dev/null
+++ b/.codecov.yml
@@ -0,0 +1,25 @@
+codecov:
+ notify:
+ require_ci_to_pass: yes
+
+coverage:
+ precision: 3
+ round: down
+ range: "50...75"
+ status:
+ project: yes
+ patch: yes
+ changes: yes
+
+parsers:
+ gcov:
+ branch_detection:
+ conditional: yes
+ loop: yes
+ method: no
+ macro: no
+
+comment:
+ layout: "header, diff, files"
+ behavior: default
+ require_changes: no
diff --git a/.travis.yml b/.travis.yml
index f12242c..5b9a29a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,6 +7,8 @@
# pushing to github/coverity_scan will also launch a static analysis
# See https://scan.coverity.com/travis_ci
+language: c
+sudo: required
env:
global:
# COVERITY_SCAN_TOKEN
@@ -24,10 +26,27 @@ env:
# copy the secure:<key> below
#
- secure: "xxxx"
+ #
+ # By default Linaro CODECOV_TOKEN token is used. It's ok to use it to see
+ # for individual commit validation. But you you want to track tests history
+ # you need generated new one at https://codecov.io specific for your repo.
+ - CODECOV_TOKEN=8e1c0fd8-62ff-411e-a79f-5839f6662c11
-language: c
-compiler: clang
-sudo: required
+matrix:
+ include:
+ - compiler: gcc-4.8
+ addons:
+ apt:
+ sources:
+ - ubuntu-toolchain-r-test
+ packages:
+ - gcc-4.8
+ env: MY_CF="-O0 -coverage" MY_LDF="--coverage" DOCOV=1
+ - compiler: clang
+ addons:
+ apt:
+ packages:
+ - clang
before_install:
- echo 1000 | sudo tee /proc/sys/vm/nr_hugepages
@@ -37,7 +56,9 @@ before_install:
- sudo apt-get -qq update
- sudo apt-get install automake autoconf libtool libssl-dev graphviz mscgen doxygen
- sudo apt-get install libpcap-dev linux-headers-`uname -r`
+ - sudo pip install coverage
- gem install asciidoctor
+ - PATH=${PATH//:\.\/node_modules\/\.bin/}
# Install cunit for the validation tests because distro version is too old and fails C99 compile
- export CUNIT_VERSION=2.1-3
@@ -74,17 +95,21 @@ before_install:
- popd
script:
+ - ./bootstrap
+ - ./configure
+ - make doxygen-doc
+ - make distcheck
- ./bootstrap
- - ./configure --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example --with-dpdk-path=`pwd`/dpdk/${TARGET} --with-netmap-path=`pwd`/netmap
+ - ./configure --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example --with-dpdk-path=`pwd`/dpdk/${TARGET} --with-netmap-path=`pwd`/netmap CFLAGS="$MY_CF" CXXFLAGS="$MY_CF" LDFLAGS="$MY_LDF"
- make -j 4
- sudo LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" make check
- - sudo git clean -f -d -x && rm -rf dpdk && rm -rf netmap && rm -rf $KSRC
+ - sudo rm -rf dpdk
+ - sudo rm -rf netmap
+ - sudo rm -rf $KSRC
- - ./bootstrap
- - ./configure
- - make doxygen-doc
- - make distcheck
+after_success:
+ - if [ -n "$DOCOV" ]; then find . -type f -iname '*.[ch]' -not -path ".git/*" -execdir gcov-4.8 {} \; ; bash <(curl -s https://codecov.io/bash) -X coveragepy; fi
addons:
coverity_scan:
-----------------------------------------------------------------------
Summary of changes:
.codecov.yml | 25 +++++++++++++++++++++++++
.travis.yml | 43 ++++++++++++++++++++++++++++++++++---------
2 files changed, 59 insertions(+), 9 deletions(-)
create mode 100644 .codecov.yml
hooks/post-receive
--
[View Less]
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, master has been updated
via 022cf4a7136c7369ee5f29f5d245ac8d052135e6 (commit)
from c87d5cc8d70e6e4291d18b101882ea2ddded236e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log ---------------…
[View More]--------------------------------------------------
commit 022cf4a7136c7369ee5f29f5d245ac8d052135e6
Author: Maxim Uvarov <maxim.uvarov(a)linaro.org>
Date: Sat Feb 4 23:33:24 2017 +0300
linux-gen: fix dpdk pktio init
struct rte_eth_dev_info should be initialized before
usage with strcmp(dev_info.driver_name, "rte_ixgbe_pmd").
Patch fixes segfault on that compare.
CC: Elo Matias <matias.elo(a)nokia.com>
Reviewed-and-tested-by: Matias Elo <matias.elo(a)nokia.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c
index 0eb025a..9a9f7a4 100644
--- a/platform/linux-generic/pktio/dpdk.c
+++ b/platform/linux-generic/pktio/dpdk.c
@@ -560,19 +560,19 @@ static int dpdk_output_queues_config(pktio_entry_t *pktio_entry,
return 0;
}
-static void dpdk_init_capability(pktio_entry_t *pktio_entry)
+static void dpdk_init_capability(pktio_entry_t *pktio_entry,
+ struct rte_eth_dev_info *dev_info)
{
pkt_dpdk_t *pkt_dpdk = &pktio_entry->s.pkt_dpdk;
odp_pktio_capability_t *capa = &pkt_dpdk->capa;
- struct rte_eth_dev_info dev_info;
- memset(&dev_info, 0, sizeof(struct rte_eth_dev_info));
+ memset(dev_info, 0, sizeof(struct rte_eth_dev_info));
memset(capa, 0, sizeof(odp_pktio_capability_t));
- rte_eth_dev_info_get(pkt_dpdk->port_id, &dev_info);
- capa->max_input_queues = RTE_MIN(dev_info.max_rx_queues,
+ rte_eth_dev_info_get(pkt_dpdk->port_id, dev_info);
+ capa->max_input_queues = RTE_MIN(dev_info->max_rx_queues,
PKTIO_MAX_QUEUES);
- capa->max_output_queues = RTE_MIN(dev_info.max_tx_queues,
+ capa->max_output_queues = RTE_MIN(dev_info->max_tx_queues,
PKTIO_MAX_QUEUES);
capa->set_op.op.promisc_mode = 1;
@@ -631,7 +631,7 @@ static int dpdk_open(odp_pktio_t id ODP_UNUSED,
return -1;
}
- dpdk_init_capability(pktio_entry);
+ dpdk_init_capability(pktio_entry, &dev_info);
mtu = dpdk_mtu_get(pktio_entry);
if (mtu == 0) {
-----------------------------------------------------------------------
Summary of changes:
platform/linux-generic/pktio/dpdk.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
hooks/post-receive
--
[View Less]
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, api-next has been updated
via 0b6dec84249c688b00c3044064ed6645aff696fb (commit)
from 530fa00fb2d341a0869af63fa9ab003dc526dc6f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -------------…
[View More]----------------------------------------------------
commit 0b6dec84249c688b00c3044064ed6645aff696fb
Author: Bill Fischofer <bill.fischofer(a)linaro.org>
Date: Mon Jan 30 14:38:14 2017 -0600
doc: userguide: add section on application portability
Add a section to the ODP User Guide discussing application portability
considerations and the use of source and binary portability options
provided by ODP.
Signed-off-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Reviewed-by: Mike Holmes <mike.holmes(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/doc/users-guide/users-guide.adoc b/doc/users-guide/users-guide.adoc
index 41c57d1..ead8da5 100755
--- a/doc/users-guide/users-guide.adoc
+++ b/doc/users-guide/users-guide.adoc
@@ -589,6 +589,126 @@ lookup. The lookup function is particularly useful to allow an ODP application
that is divided into multiple processes to obtain the handle for the common
resource.
+== Application Portability Considerations
+ODP is designed to support the creation of portable data plane applications
+that can easily be run on multiple target platforms while at the same time
+fully exploit hardware acceleration capabilities native to whatever platform
+it is running on. This section discusses tradeoffs that application writers
+should consider when using ODP.
+
+First, it should be noted that portability is not an absolute good nor is it a
+single-valued attribute (application is portable or is not portable). While
+any application can be ported from one platform to another the real question
+is: _at what cost?_ Costs can be measured in two dimensions: The level of
+effort needed to port, and the resulting performance differences seen due to
+the port. Ideally an application should be portable between platforms with
+minimal effort and equally minimal performance impact. While ODP is designed
+to support this ideal, each application must assess what its goals are in this
+area and how best to use ODP to achieve these goals.
+
+=== Portability and Coexistence
+Because ODP offers a programming _framework_ rather than a programming
+_environment_, it is designed to be able to work alongside APIs offered by
+other frameworks with minimual interference. Therefore when we speak of
+portability in an ODP context, we of necessity speak of portability of those
+portions of the application that make use of ODP APIs. If an application uses
+non-ODP APIs then those must be taken into consideration as well when
+assessing the portability of the entire application. For many applications, it
+suffices to isolate certain non-portable code to a few areas of the application
+with the result that the application is significantly more portable than it
+would be without using ODP. Especially when dealing with existing applications
+that run in production environments, ODP may well be introduced in an
+incremental manner with the result being that the application becomes more
+portable only over time.
+
+=== Source vs. Binary Portability
+ODP has been designed to support both source and binary portability. Source
+portability is intrinsic to the ODP API specification itself. Any application
+written to the ODP API specification will be source portable between any
+conforming ODP implementation with at most a recompile. This is because ODP
+APIs do not expose implementation details or internal structures that may vary
+from platform to platform.
+
+For platforms that share a common Instruction Set Architecture (ISA), ODP can
+also offer binary portability via the specification of an Application Binary
+Interface (ABI). This is especially useful in a Network Function
+Virtualization (NFV) environment where a data plane application may be
+developed and compiled on one platform for distribution and then deployed on
+many different platforms by an NFV Orchestrator function.
+
+=== ODP Application Profiles
+To assist in meeting these needs, ODP offers two distinct _application
+profiles_ that are designed to characterize the needs of different types of
+data plane applications: the _Embedded Profile_ and the _Cloud Profile_.
+
+==== Embedded Profile
+The ODP Embedded Profile is designed to support applications that wish to
+target a specific platform and achieve optimal performance on that platform
+and where source code portability is sufficient. If such applications need to
+support more than one platform then they simply need to be recompiled against
+the ODP implementation for that platform.
+
+Embedded applications will typically work with a copy of ODP downloaded from
+a git repository so that it can be configured for the application's precise
+needs. To specify that the application wishes to use the embedded profile:
+
+`./configure --enable-abi-compat=no ...`
+
+should be used as part of the ODP configuration options. This allows
+applications to use inline forms of ODP APIs to give optimal performance
+on this platform, and may include additional optimizations that preclude
+binary portability to other platforms. The result is a binary that will achieve
+maximum performance on a given target platform and that can be ported to
+other platforms with a recompile.
+
+==== Cloud Profile
+By contrast, the ODP Cloud Profile is designed to support applications that
+wish to be platform-agnostic and be binary compatible across all platforms
+sharing this ABI. Any ODP implementation included in a Linux distribution will
+be configured for the cloud profile, so no additional action is required on
+the part of applications when compiling against a distributed copy of ODP (one
+that is installed via `sudo apt-get install` or equivalent command).
+
+When using a copy of ODP downloaded from a repository, the cloud profile is
+selected at configure time:
+
+`./configure --enable-abi-compat=yes ...`
+
+Note that `--enable-abi-compat=yes` is the default, so this need not be
+specified. Unless `no` is specified for this option, the result will be
+applications designed to run in the cloud profile.
+
+=== ABI Characteristics
+An ABI consists of several conventions that ensure that a program compiled
+against one ODP implementation can run unchanged on another platform that
+has a possibly very different ODP implementation without requiring
+recompilation. These include:
+
+* A set of function calling conventions that define how functions call other
+functions, pass parameters, and receive returned results. These are typically
+specified by the Operating System (_e.g.,_ Linux) and are independent of ODP.
+
+* Avoiding the use of inline expansions for any ODP API. This ensures that
+differing ODP implementations can maintain their different internals without
+these differences being visible to the application.
+
+* Agreement as to the size and alignment of ODP abstract datatypes used by all
+ODP implementations sharing this ABI definition. This means that, for example,
+the size of an `odp_packet_t` handle is the same across all members of the
+ABI. Since these handles are opaque, it doesn't matter if their structure
+differs between ODP implementations since applications never reference these
+possibly different internals.
+
+Note that an ABI definition exists within a specific Instruction Set
+Architecture (ISA), such as x86-64 or AArch64. Binaries cannot directly port
+between ISAs--that requires a recompilation.
+
+Each ODP implementation will identify which ABI definition it supports, if any.
+When compiling against an ODP implementation in ABI compabitilty mode, the
+resulting binary is automatically binary compatible with all other ODP
+implementations that share this ABI. For example, for the x86-64 ISA, both
+the `odp-linux` and `odp-dpdk` implemtations are a common ABI.
+
== Shared memory
=== Allocating shared memory
Blocks of shared memory can be created using the `odp_shm_reserve()` API
-----------------------------------------------------------------------
Summary of changes:
doc/users-guide/users-guide.adoc | 120 +++++++++++++++++++++++++++++++++++++++
1 file changed, 120 insertions(+)
hooks/post-receive
--
[View Less]
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, master has been updated
via 810fbc9420e23f55e9038410f7f9d6e593537ff3 (commit)
from 04b0be7579f77821418c0c7c524950af6aeab6a6 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log ---------------…
[View More]--------------------------------------------------
commit 810fbc9420e23f55e9038410f7f9d6e593537ff3
Author: Christophe Milard <christophe.milard(a)linaro.org>
Date: Thu Jan 19 18:18:06 2017 +0100
travis: better comments to generate token in the travis file
Signed-off-by: Christophe Milard <christophe.milard(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/.travis.yml b/.travis.yml
index 4d7ebba..f12242c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,6 +11,18 @@ env:
global:
# COVERITY_SCAN_TOKEN
# ** specific to your project **
+ # Note:
+ # You should have a github account and travis linked travis account.
+ # The secure key to be filled below is the 685 character long encrypted
+ # token you can find as follow from your coverity dashboard
+ # (at https://scan.coverity.com/dashboard):
+ # Click on the github project (<you>/odp)
+ # Click on "submit build"
+ # Click on "Configure Travis CI"
+ # Look at the COVERITY_SCAN_TOKEN in the env: global: section
+ # of the configuration example.
+ # copy the secure:<key> below
+ #
- secure: "xxxx"
language: c
-----------------------------------------------------------------------
Summary of changes:
.travis.yml | 12 ++++++++++++
1 file changed, 12 insertions(+)
hooks/post-receive
--
[View Less]
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "".
The branch, master has been updated
via 04b0be7579f77821418c0c7c524950af6aeab6a6 (commit)
from 6ccae3b2720a4ad84d3e50aa5851f64eb3d83b3c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log ---------------…
[View More]--------------------------------------------------
commit 04b0be7579f77821418c0c7c524950af6aeab6a6
Author: Brian Brooks <brian.brooks(a)linaro.org>
Date: Thu Jan 26 21:31:43 2017 -0600
linux-generic: add ARM odp_cpu_pause()
Signed-off-by: Brian Brooks <brian.brooks(a)linaro.org>
Reviewed-by: Bill Fischofer <bill.fischofer(a)linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov(a)linaro.org>
diff --git a/platform/linux-generic/arch/arm/odp/api/cpu_arch.h b/platform/linux-generic/arch/arm/odp/api/cpu_arch.h
index 22b1da2..7c75a69 100644
--- a/platform/linux-generic/arch/arm/odp/api/cpu_arch.h
+++ b/platform/linux-generic/arch/arm/odp/api/cpu_arch.h
@@ -15,6 +15,12 @@ extern "C" {
static inline void odp_cpu_pause(void)
{
+ /* YIELD hints the CPU to switch to another thread if possible
+ * and executes as a NOP otherwise.
+ * ISB flushes the pipeline, then restarts. This is guaranteed to
+ * stall the CPU a number of cycles.
+ */
+ __asm volatile("isb" ::: "memory");
}
#ifdef __cplusplus
-----------------------------------------------------------------------
Summary of changes:
platform/linux-generic/arch/arm/odp/api/cpu_arch.h | 6 ++++++
1 file changed, 6 insertions(+)
hooks/post-receive
--
[View Less]