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 <brian.bro...@arm.com> 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 > >