Merged,
Maxim.

On 05/21/16 09:16, Christophe Milard wrote:
Yes! I get that easily on my home computer:
while (true); do ./platform/linux-generic/test/ring/ringtest ; done just hangs after a short while.
even on origin/master....
For some reason that refuses to hang at work...

I don't think it should stop the series, but it is definitively something to fix!

Thanks Maxim!

On 20 May 2016 at 21:04, Maxim Uvarov <maxim.uva...@linaro.org <mailto:maxim.uva...@linaro.org>> wrote:

    ok, now odp-check passed 34 patches on on 35 I caught ring test bug :)

    platform/linux-generic/test/ring/ringtest.c

    It rolls forever in that loop:

         do {
            i = _ring_mc_dequeue_bulk(r_stress, src, MAX_BULK);
            if (i == 0) {
                for (i = 0; i < MAX_BULK; i++) {
                    if (src[i] != (void *)(unsigned long)i) {
                        free(src);
                        printf("data mismatch.. lockless ops fail\n");
                        return -1;
                    }
                }
                free(src);
                printf("\n Test OK !\n");
                return 0;
            }
        } while (1);


    which does not return due to _ring_mc_dequeue_bulk() always return
    -ENOENT:

    #0  ___ring_mc_do_dequeue (r=0x2b65fec00000,
    obj_table=obj_table@entry=0x2b66080008c0, n=n@entry=32,
        behavior=behavior@entry=_RING_QUEUE_FIXED) at pktio/ring.c:363
    363        uint32_t mask = r->prod.mask;
    (gdb) l
    358        uint32_t cons_head, prod_tail;
    359        uint32_t cons_next, entries;
    360        const unsigned max = n;
    361        int success;
    362        unsigned i;
    363        uint32_t mask = r->prod.mask;
    364
    365        /* move cons.head atomically */
    366        do {
    367            /* Restore n as it may change every loop */
    (gdb) p mask
    $4 = <optimized out>
    (gdb) n
    370            cons_head = r->cons.head;
    (gdb)
    376            entries = (prod_tail - cons_head);
    (gdb)
    370            cons_head = r->cons.head;
    (gdb) p entries
    $5 = <optimized out>
    (gdb) n
    379            if (n > entries) {
    (gdb)
    380                if (behavior == _RING_QUEUE_FIXED)
    (gdb) p n
    $6 = 32
    (gdb) n
    381                    return -ENOENT;
    (gdb)


    That should not be related to current patch series, but we need to
    fix it.

    Maxim.


    On 05/20/16 19:30, Christophe Milard wrote:

        Since v8
        -Fixed error in patch 9 generation erroneous file (Maxim)

        Since v7
        -fixed rebase error between patch 7 and 8 (sorry Maxim)

        Since v6
        -rebased
        -regrouping history, squashing patch 1 and 12; 4, 5 and 12 (Petri)
        -mixed mode test removed (but still claimed to be supported in
        ODP). (Petri)

        Since v5
        -rebased
        -patch removing old unused helper code dropped. (Petri)
        -Doc update to discourage usage of the old functions. (Petri,
        Mike)

        Since v4:
        -updates following Brian's comments

        Since v3:
        -fixed rebase error (Christophe)
        -rebased

        Since v2:
        -serious rebase following clash with dba05a28 (api: init: add
        instance handle)
        -squashing the validation changes.

        Since v1:
        -variable declaration gathered in function 's head (Petri)
        -linux prefix removed from helper's types and function names
        (Mike, Christophe)

        Hi,

        This patch series adds the ability to run tests/ exemples /
        perf-test
        in "process mode" (i.e letting OPD threads being linux processes)
        It it hence tackling ODP-171.

        This is achieved in 2 main steps:

        A]
        The 2 pairs of helper functions:
        odph_linux_pthread_create(), odph_linux_pthread_join()
        and
        odph_linux_process_fork_n(), odph_linux_process_wait_n()
        are complemented by:
        odph_linux_odpthreads_create() and odph_linux_odpthreads_join()
        The latter's callers are unaware of the actual implementation
        of the ODP
        thread (making test truly platform agnostic).
        The helper functions decide at run time whether an odp thread
        is to be
        a linux process or pthread based on the command line argument.

        B] each test/example now calls a new helper function,
        odph_linux_parse_options(), so that the helper can get its own
        arguments
        out of the command line.
        Currentely supported args is: --odph_proc.
        Defaults assumes thread.

        The changed are first done on the shmem tests, and thereafter
        propagated
        to other helper users.
        Note that this patch series enable the option but does not affect
        make check at this time: make check still calls the tests with
        no options
        which default to thread mode.

        ----------------------------------------------------------------

        Christophe Milard (35):
           helpers: adding command line argument parsing
           validation: common: adding command line argument parsing
           validation: shmem: adding command line argument parsing
           helpers: linux: creating functions to handle odpthreads
           helper: test: adding odpthread functions tests
           validation: using implementation agnostic function for ODP
        threads
           validation: most tests: adding command line argument parsing
           validation: init: adding command line argument parsing
           validation: pktio: adding command line argument parsing
           performance: odp_scheduling: proc mode done by helper
           performance: odp_pktio_perf: using agnostic function for
        ODP threads
           performance: odp_pktio_perf: adding helper cmd line parsing
           performance: odp_l2fwd: using agnostic function for ODP threads
           performance: odp_l2fwd: adding helper cmd line parsing
           performance: crypto: using agnostic function for ODP threads
           performance: crypto: adding helper cmd line parsing
           example: classifier: using agnostic function for ODP threads
           example: classifier: adding helper cmd line parsing
           example: generator: using agnostic function for ODP threads
           example: generator: adding helper cmd line parsing
           example: ipsec: using agnostic function for ODP threads
           example: ipsec: adding helper cmd line parsing
           example: l2fwd_simple: using agnostic function for ODP threads
           example: l2fwd_simple: adding helper cmd line parsing
           example: pktio: using agnostic function for ODP threads
           example: pktio: adding helper cmd line parsing
           example: time: using agnostic function for ODP threads
           example: time: adding helper cmd line parsing
           example: timer: using agnostic function for ODP threads
           example: timer: adding helper cmd line parsing
           example: switch: using agnostic function for ODP threads
           example: switch: adding helper cmd line parsing
           linux-generic: test: ringtest: using agnostic function for
        ODP threads
           linux-generic: test: ringtest: adding helper cmd line parsing
           doc: implementers-guide: adding helper recommendations

          doc/implementers-guide/implementers-guide.adoc  |  32 ++
          example/classifier/odp_classifier.c |  39 +--
          example/generator/odp_generator.c |  45 +--
          example/ipsec/odp_ipsec.c |  27 +-
          example/l2fwd_simple/odp_l2fwd_simple.c |  47 ++-
          example/packet/odp_pktio.c  |  45 +--
          example/switch/odp_switch.c |  26 +-
          example/time/time_global_test.c |  17 +-
          example/timer/odp_timer_test.c  |  26 +-
          helper/include/odp/helper/linux.h                  | 138
        +++++++-
          helper/linux.c                                     | 382
        +++++++++++++++++++++
          helper/test/.gitignore  |   1 +
          helper/test/Makefile.am |   7 +-
          helper/test/odpthreads.c                           | 100 ++++++
          helper/test/odpthreads_as_processes |  14 +
          helper/test/odpthreads_as_pthreads  |  14 +
          platform/linux-generic/test/pktio/pktio_run.sh  |  21 +-
          .../linux-generic/test/pktio/pktio_run_dpdk.sh  |  17 +-
          .../linux-generic/test/pktio/pktio_run_netmap.sh  |   5 +-
          .../linux-generic/test/pktio/pktio_run_pcap.sh  |   5 +-
          platform/linux-generic/test/pktio/pktio_run_tap.sh |   6 +-
          platform/linux-generic/test/ring/ringtest.c |  24 +-
          test/performance/odp_crypto.c |  24 +-
          test/performance/odp_l2fwd.c  |  37 +-
          test/performance/odp_pktio_perf.c |  34 +-
          test/performance/odp_scheduling.c |  91 ++---
          test/validation/atomic/atomic.c |  40 ++-
          test/validation/atomic/atomic.h |   2 +-
          test/validation/atomic/atomic_main.c  |   4 +-
          test/validation/barrier/barrier.c |  14 +-
          test/validation/barrier/barrier.h |   2 +-
          test/validation/barrier/barrier_main.c  |   4 +-
          test/validation/buffer/buffer.c |  10 +-
          test/validation/buffer/buffer.h |   2 +-
          test/validation/buffer/buffer_main.c  |   4 +-
          test/validation/classification/classification.c |  10 +-
          test/validation/classification/classification.h |   2 +-
          .../classification/classification_main.c  |   4 +-
          test/validation/common/odp_cunit_common.c |  24 +-
          test/validation/common/odp_cunit_common.h |   6 +-
          test/validation/cpumask/cpumask.c |  10 +-
          test/validation/cpumask/cpumask.h |   2 +-
          test/validation/cpumask/cpumask_main.c  |   4 +-
          test/validation/crypto/crypto.c |   6 +-
          test/validation/crypto/crypto.h |   2 +-
          test/validation/crypto/crypto_main.c  |   4 +-
          test/validation/errno/errno.c |  10 +-
          test/validation/errno/errno.h |   2 +-
          test/validation/errno/errno_main.c  |   4 +-
          test/validation/hash/hash.c |  10 +-
          test/validation/hash/hash.h |   2 +-
          test/validation/hash/hash_main.c  |   4 +-
          test/validation/init/init.c |  18 +-
          test/validation/init/init.h |   6 +-
          test/validation/init/init_main_abort.c  |   4 +-
          test/validation/init/init_main_log.c  |   4 +-
          test/validation/init/init_main_ok.c |   4 +-
          test/validation/lock/lock.c |  50 +--
          test/validation/lock/lock.h |   2 +-
          test/validation/lock/lock_main.c  |   4 +-
          test/validation/packet/packet.c |  10 +-
          test/validation/packet/packet.h |   2 +-
          test/validation/packet/packet_main.c  |   4 +-
          test/validation/pktio/pktio.c |  10 +-
          test/validation/pktio/pktio.h |   2 +-
          test/validation/pktio/pktio_main.c  |   4 +-
          test/validation/pool/pool.c |  10 +-
          test/validation/pool/pool.h |   2 +-
          test/validation/pool/pool_main.c  |   4 +-
          test/validation/queue/queue.c |  10 +-
          test/validation/queue/queue.h |   2 +-
          test/validation/queue/queue_main.c  |   4 +-
          test/validation/random/random.c |  10 +-
          test/validation/random/random.h |   2 +-
          test/validation/random/random_main.c  |   4 +-
          test/validation/scheduler/scheduler.c |  18 +-
          test/validation/scheduler/scheduler.h |   2 +-
          test/validation/scheduler/scheduler_main.c  |   4 +-
          test/validation/shmem/shmem.c |  16 +-
          test/validation/shmem/shmem.h |   2 +-
          test/validation/shmem/shmem_main.c  |   4 +-
          test/validation/std_clib/std_clib.c |  10 +-
          test/validation/std_clib/std_clib.h |   2 +-
          test/validation/std_clib/std_clib_main.c  |   4 +-
          test/validation/system/system.c |  10 +-
          test/validation/system/system.h |   2 +-
          test/validation/system/system_main.c  |   4 +-
          test/validation/thread/thread.c |  14 +-
          test/validation/thread/thread.h |   2 +-
          test/validation/thread/thread_main.c  |   4 +-
          test/validation/time/time.c |  10 +-
          test/validation/time/time.h |   2 +-
          test/validation/time/time_main.c  |   4 +-
          test/validation/timer/timer.c |  10 +-
          test/validation/timer/timer.h |   2 +-
          test/validation/timer/timer_main.c  |   4 +-
          test/validation/traffic_mngr/traffic_mngr.c |   6 +-
          test/validation/traffic_mngr/traffic_mngr.h |   2 +-
          test/validation/traffic_mngr/traffic_mngr_main.c  |   4 +-
          99 files changed, 1316 insertions(+), 410 deletions(-)
          create mode 100644 helper/test/odpthreads.c
          create mode 100755 helper/test/odpthreads_as_processes
          create mode 100755 helper/test/odpthreads_as_pthreads




_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to