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