https://bugs.linaro.org/show_bug.cgi?id=1879

--- Comment #14 from Carl Wallen <carl.wal...@nokia.com> ---
(In reply to Bill Fischofer from comment #13)
> Can you say what the application is doing, or provide a test case that
> illustrates the issue?

I have the same test case as before:
"In my test I have 3 queues: one atomic, one parallel and one ordered - the
application is enqueuing from each of these queues using odp_schedule() and
then the received events are sent to each of these 3 queues in turn. It also
means that events can be sent back into the queue it originated from.
"

Each of the 3 queues are at startup filled with just 3 events (for a total of 9
events, the events are never freed). The events circulate through the queues:
e.g. ...->atomic->parallel->ordered->atomic->...

The destination queue is chosen based on a sequence number in the event payload
that is increased each time the event is received (to alter the Q-path for each
event):
    dest_q = queue_out[++event->seqno % 3];
    /* queue_out[] contains the 3 queue handles */
    odp_queue_enq(dest_q, 'event');

The worker function receives an event from odp_schedule() and directly enqueues
it to any of the 3 queues (including itself) based on the event seqno. So
during the test there will be the following odp_schedule+enqueue operations
taking place on all cores:
[source Q] -> [dest Q]
atomic->atomic(self)
atomic->parallel
atomic->ordered
parallel->atomic
parallel->parallel(self)
parallel->ordered
ordered->atomic
ordered->parallel
ordered->ordered(self)

This should be fairly easy for you to reproduce. Let me know if you need more
info.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to