muvarov replied on github web page:

platform/linux-generic/odp_packet.c
line 34
@@ -944,6 +949,45 @@ odp_event_t odp_packet_to_event(odp_packet_t pkt)
        return (odp_event_t)buffer_handle(packet_hdr(pkt));
 }
 
+void odp_packet_from_event_multi(odp_packet_t pkt[], const odp_event_t ev[],
+                                int num)
+{
+       int i;
+
+       for (i = 0; i < num; i++)
+               pkt[i] = odp_packet_from_event(ev[i]);
+}
+
+void odp_packet_to_event_multi(const odp_packet_t pkt[], odp_event_t ev[],
+                              int num)
+{
+       int i;
+
+       for (i = 0; i < num; i++)
+               ev[i] = odp_packet_to_event(pkt[i]);
+}
+
+int odp_event_filter_packet(const odp_event_t event[],


Comment:
is it valid case when odp_schedule() returns mixed events types? I.e. some 
packets, some timeouts, some packets from one pool and packets from other pool.

> Petri Savolainen(psavol) wrote:
> Application knows the configuration, so it knows when all packets (e.g. from 
> certain queue/pkt input/etc) are allocated from the same pool. When that's 
> the case, free implementation can be more efficient (than today) as it does 
> not have to access/check/sort all packets of the burst. It can just free all 
> into the pool of the first packet. 


>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>> Doesn't this reorder events? As described consider an array of events that 
>> consist of packets (p) and non-packets (np).
>> 
>> With an input array of events: np1, p1, np2, p2, p3 as described 
>> `odp_event_filter_packet()` would have RC = 3, the `packet[]` array would 
>> contain p1, p2, p3, and the `remain[]` event would contain np1, np2.  Is 
>> that behavior what we want?


>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>> Even with the `odp_event_type_multi()` API semantics, it's still not clear 
>>> why this is needed. Given that `odp_packet_from_event()` is likely just a 
>>> cast there doesn't seem to be a great deal to be gained by having a `multi` 
>>> version of this which can't be easily inlined away.


>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>> Again since `odp_packet_to_event()` is likely to be just a cast that can 
>>>> be inlined away it's not clear why a `multi` version is needed.


>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>> Again, it's not clear why this is needed. 


>>>>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>>>>> Not clear why this is needed. How does an application determine this 
>>>>>> more efficiently than the implementation would?


https://github.com/Linaro/odp/pull/318#discussion_r154596535
updated_at 2017-12-04 09:36:52

Reply via email to