On 08/31/15 12:05, Alexandru Badicioiu wrote:
Hi Maxim,
I'd ask some questions related to the testing application:
https://git.linaro.org/people/maxim.uvarov/odp.git/blob/8c749b3fd6e0a3715e06c262d85244aa180dd204:/platform/linux-generic/test/pktio_ipc/pktio_ipc.c
 which probably shows how an IPC pktio would be typically used :

- is "ipc_pktio" the solely id for an IPC pktio ? Is it possible to have more than 1 IPC pktio ? Is the IPC pktio meant for 1 to 1 duplex data exchange?

For now it's only linux-generic specific ipc pktio. You can open several pktios odp_pktio_open("ipc_1", ), odp_pktio_open("ipc_2", ), odp_pktio_open("ipc_3", ) and etc. All of them represented as shared memory. Second process can connect to that ipc_2, ipc_2. Several slave processes can connect to one ipc_1 for example. So it's duplex exchange over several processes where one of the process has to be master (to create shared memory blocks.).


- it looks like the implicit assumption is that the pool created by the main process and used to open IPC pktio is shared automatically with the child process as the child process is able to copy data from the packet it receives from IPC pktio
The plan was to not modify API, in that case pool is shared automatically. Slave process copies packet in recv() to not handle in it. When packet reference counters will be implemented then we can avoid this coping and simple reference to packet memory of another process. Because of linux-generic is not performance critical I will postpone that tunning.

- there is a comment mentioning a "local pool" for the child process but I can't find any reference to it in the application code - is it something that is supposed to be hidden into implementation?

Yes, that is hided. First process needs access to second process packets also. And that is done in way that second process creates the same pool as master (i.e. same parameters like number and size of segments). Then second pool is mapped to first process. Because original plan was to now modify api, reference to that pool is hided inside implementation.

Maxim.


Thanks,
Alex




On 31 August 2015 at 11:11, Maxim Uvarov <maxim.uva...@linaro.org <mailto:maxim.uva...@linaro.org>> wrote:

    ping.

    On 08/18/15 14:01, Maxim Uvarov wrote:

        v8:  - make pktio ipc internal pktio for linux-generic;
              - place validation test for pktio ipc inside linux-generic;
              - move odp_ring and odp_pause from helpers inside
        linux-generic;
              - cleanup checkpatch errors in ring code.

        v7: - 1. do pool_create things more accurate. Pass shm flags
        internal where is needed.
               Do not allocate shm before because Bill already posted
        patch to remove shm from
               odp_pool_create.
               2. Rework example application: remove time stamps. Add
        sequence counter and magic
               numbers, print packets per second.

        v6: Fix Ciprian comments for v5:
                - update patches to current HEAD;
                - fix segfault on cold start (not share schedule pool);
                - rename rings name to better understanding;
                - comment variables in the code;
                - update code to new checkpatch.pl <http://checkpatch.pl>;
             Fix Ola's comment to not use sleep() in example.


        Maxim Uvarov (12):
           linux-generic: zero params for pool create
           api ipc: update ring with shm proc argument
           linux-generic: create internal pool create function with
        shm flags
           move odph_pause inside linux-generic
           helper: flag to not link ring to linked list
           linux-generic: move odp_ring from helper to linux-generic
        platfrom
           linux-generic: rename odph_ring.., to shm_ring...
           linux-generic: ring: remove ODPH_ prefix
           linux-generic: rename to ring
           linux-generic: ring_test.c fix code style errors
           linux-generic: add ipc pktio support
           linux-generic: internal ipc_pktio test

        configure.ac <http://configure.ac>                      |   1 -
          helper/Makefile.am  |   8 +-
          helper/test/Makefile.am |   4 +-
          helper/test/odph_pause.c  |  14 -
          platform/linux-generic/Makefile.am  |   3 +
          .../linux-generic/include/odp_buffer_internal.h |   3 +
          .../linux-generic/include/odp_packet_io_internal.h |  33 ++
          .../include/odp_packet_io_ipc_internal.h  |  51 ++
          .../linux-generic/include/odp_pause_internal.h  |   0
          platform/linux-generic/include/odp_pool_internal.h |   4 +
          .../linux-generic/include/odp_ring_internal.h |  88 +--
          platform/linux-generic/include/odp_shm_internal.h |  20 +
          platform/linux-generic/m4/configure.m4  |   4 +-
          platform/linux-generic/odp_packet_io.c  |   1 +
          platform/linux-generic/odp_pool.c |  22 +-
          platform/linux-generic/odp_schedule.c |   4 +-
          platform/linux-generic/odp_shared_memory.c  |  10 +-
          platform/linux-generic/pktio/io_ops.c |   1 +
          platform/linux-generic/pktio/ipc.c  | 629 +++++++++++++++++++++
          {helper => platform/linux-generic/pktio}/ring.c    | 190 ++++---
          platform/linux-generic/test/Makefile.am |   4 +-
          platform/linux-generic/test/pktio_ipc/.gitignore  |   1 +
          platform/linux-generic/test/pktio_ipc/Makefile.am |  11 +
          platform/linux-generic/test/pktio_ipc/pktio_ipc.c | 595
        +++++++++++++++++++
          .../linux-generic/test/pktio_ipc/pktio_ipc_run  |  68 +++
          platform/linux-generic/test/ring/.gitignore |   1 +
          platform/linux-generic/test/ring/Makefile.am  |  14 +
          .../linux-generic/test/ring}/odp_common.c |   0
          .../linux-generic/test/ring}/odp_common.h |   0
          .../linux-generic/test/ring/ring_test.c | 109 ++--
          test/Makefile.am  |   2 +-
          test/api_test/.gitignore  |   2 -
          test/api_test/Makefile.am |  13 -
          test/validation/queue/queue.c |   1 +
          34 files changed, 1671 insertions(+), 240 deletions(-)
          delete mode 100644 helper/test/odph_pause.c
          create mode 100644
        platform/linux-generic/include/odp_packet_io_ipc_internal.h
          rename helper/odph_pause.h =>
        platform/linux-generic/include/odp_pause_internal.h (100%)
          rename helper/include/odp/helper/ring.h =>
        platform/linux-generic/include/odp_ring_internal.h (87%)
          create mode 100644
        platform/linux-generic/include/odp_shm_internal.h
          create mode 100644 platform/linux-generic/pktio/ipc.c
          rename {helper => platform/linux-generic/pktio}/ring.c (74%)
          create mode 100644
        platform/linux-generic/test/pktio_ipc/.gitignore
          create mode 100644
        platform/linux-generic/test/pktio_ipc/Makefile.am
          create mode 100644
        platform/linux-generic/test/pktio_ipc/pktio_ipc.c
          create mode 100755
        platform/linux-generic/test/pktio_ipc/pktio_ipc_run
          create mode 100644 platform/linux-generic/test/ring/.gitignore
          create mode 100644 platform/linux-generic/test/ring/Makefile.am
          rename {test/api_test =>
        platform/linux-generic/test/ring}/odp_common.c (100%)
          rename {test/api_test =>
        platform/linux-generic/test/ring}/odp_common.h (100%)
          rename test/api_test/odp_ring_test.c =>
        platform/linux-generic/test/ring/ring_test.c (80%)
          delete mode 100644 test/api_test/.gitignore
          delete mode 100644 test/api_test/Makefile.am


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



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

Reply via email to