Travis found a bug:
https://travis-ci.org/muvarov/odp/jobs/243801892
In file included from
../../../platform/linux-generic/include/odp_schedule_scalable.h:15:0,
from
../../../platform/linux-generic/include/odp_queue_scalable_internal.h:24,
from ../../../platform/linux-generic/odp_queue_scalable.c:23:
../../../platform/linux-generic/include/odp_schedule_scalable_ordered.h:14:24:
fatal error: odp_bitset.h: No such file or directory
#include <odp_bitset.h>
^
compilation terminated.
On 18 June 2017 at 20:09, Brian Brooks <[email protected]> wrote:
> This work derives from Ola Liljedahl's prototype [1] which introduced a
> scalable scheduler design based on primarily lock-free algorithms and
> data structures designed to decrease contention. A thread searches
> through a data structure containing only queues that are both non-empty
> and allowed to be scheduled to that thread. Strict priority scheduling is
> respected, and (W)RR scheduling may be used within queues of the same
> priority.
> Lastly, pre-scheduling or stashing is not employed since it is optional
> functionality that can be implemented in the application.
>
> In addition to scalable ring buffers, the algorithm also uses unbounded
> concurrent queues. LL/SC and CAS variants exist in cases where absense of
> ABA problem cannot be proved, and also in cases where the compiler's atomic
> built-ins may not be lowered to the desired instruction(s). Finally, a
> version
> of the algorithm that uses locks is also provided.
>
> Use --enable-schedule-scalable to conditionally compile this scheduler
> into the library.
>
> [1] https://lists.linaro.org/pipermail/lng-odp/2016-September/025682.html
>
> On checkpatch.pl:
> - [2/5] and [5/5] have checkpatch.pl issues that are superfluous
>
> v8:
> - Reword commit messages
>
> v7:
> - Rebase against new modular queue interface
> - Duplicate arch files under mips64 and powerpc
> - Fix sched->order_lock()
> - Loop until all deferred events have been enqueued
> - Implement ord_enq_multi()
> - Fix ordered_lock/unlock
> - Revert stylistic changes
> - Add default xfactor
> - Remove changes to odp_sched_latency
> - Remove ULL suffix to alleviate Clang build
>
> v6:
> - Move conversions into scalable scheduler to alleviate #ifdefs
> - Remove unnecessary prefetch
> - Fix ARMv8 build
>
> v5:
> - Allocate cache aligned memory using shm pool APIs
> - Move more code to scalable scheduler specific files
> - Remove CONFIG_SPLIT_READWRITE
> - Fix 'make distcheck' issue
>
> v4:
> - Fix a couple more checkpatch.pl issues
>
> v3:
> - Only conditionally compile scalable scheduler and queue
> - Move some code to arch/ dir
> - Use a single shm block for queues instead of block-per-queue
> - De-interleave odp_llqueue.h
> - Use compiler macros to determine ATOM_BITSET_SIZE
> - Incorporated queue size changes
> - Dropped 'ODP_' prefix on config and moved to other files
> - Dropped a few patches that were send independently to the list
>
> v2:
> - Move ARMv8 issues and other fixes into separate patches
> - Abstract away some #ifdefs
> - Fix some checkpatch.pl warnings
>
> Brian Brooks (5):
> test: odp_pktio_ordered: add queue size
> Add arch/ files
> Add a bitset
> Add a concurrent queue
> Add scalable scheduler
>
> platform/linux-generic/Makefile.am | 10 +
> platform/linux-generic/arch/arm/odp_atomic.h | 210 +++
> platform/linux-generic/arch/arm/odp_cpu.h | 65 +
> platform/linux-generic/arch/arm/odp_cpu_idling.h | 51 +
> platform/linux-generic/arch/arm/odp_llsc.h | 249 +++
> platform/linux-generic/arch/default/odp_cpu.h | 41 +
> platform/linux-generic/arch/mips64/odp_cpu.h | 41 +
> platform/linux-generic/arch/powerpc/odp_cpu.h | 41 +
> platform/linux-generic/arch/x86/odp_cpu.h | 41 +
> .../include/odp/api/plat/schedule_types.h | 4 +-
> platform/linux-generic/include/odp_bitset.h | 210 +++
> .../linux-generic/include/odp_config_internal.h | 17 +-
> platform/linux-generic/include/odp_llqueue.h | 309 +++
> .../include/odp_queue_scalable_internal.h | 102 +
> platform/linux-generic/include/odp_schedule_if.h | 2 +-
> .../linux-generic/include/odp_schedule_scalable.h | 137 ++
> .../include/odp_schedule_scalable_config.h | 55 +
> .../include/odp_schedule_scalable_ordered.h | 132 ++
> platform/linux-generic/m4/odp_schedule.m4 | 55 +-
> platform/linux-generic/odp_queue_if.c | 8 +
> platform/linux-generic/odp_queue_scalable.c | 1020 ++++++++++
> platform/linux-generic/odp_schedule_if.c | 6 +
> platform/linux-generic/odp_schedule_scalable.c | 1978
> ++++++++++++++++++++
> .../linux-generic/odp_schedule_scalable_ordered.c | 347 ++++
> test/common_plat/performance/odp_pktio_ordered.c | 4 +
> 25 files changed, 5113 insertions(+), 22 deletions(-)
> create mode 100644 platform/linux-generic/arch/arm/odp_atomic.h
> create mode 100644 platform/linux-generic/arch/arm/odp_cpu.h
> create mode 100644 platform/linux-generic/arch/arm/odp_cpu_idling.h
> create mode 100644 platform/linux-generic/arch/arm/odp_llsc.h
> create mode 100644 platform/linux-generic/arch/default/odp_cpu.h
> create mode 100644 platform/linux-generic/arch/mips64/odp_cpu.h
> create mode 100644 platform/linux-generic/arch/powerpc/odp_cpu.h
> create mode 100644 platform/linux-generic/arch/x86/odp_cpu.h
> create mode 100644 platform/linux-generic/include/odp_bitset.h
> create mode 100644 platform/linux-generic/include/odp_llqueue.h
> create mode 100644 platform/linux-generic/include/odp_queue_scalable_
> internal.h
> create mode 100644 platform/linux-generic/include/odp_schedule_scalable.h
> create mode 100644 platform/linux-generic/include/odp_schedule_scalable_
> config.h
> create mode 100644 platform/linux-generic/include/odp_schedule_scalable_
> ordered.h
> create mode 100644 platform/linux-generic/odp_queue_scalable.c
> create mode 100644 platform/linux-generic/odp_schedule_scalable.c
> create mode 100644 platform/linux-generic/odp_schedule_scalable_ordered.c
>
> --
> 2.13.1
>
>