Petri Savolainen(psavol) replied on github web page:

include/odp/api/spec/event.h
line 83
@@ -149,6 +149,28 @@ uint64_t odp_event_to_u64(odp_event_t hdl);
  */
 void odp_event_free(odp_event_t event);
 
+/**
+ * Free multiple events
+ *
+ * Otherwise like odp_event_free(), but frees multiple events to their
+ * originating pools.
+ *
+ * @param event    Array of event handles
+ * @param num      Number of events to free
+ */
+void odp_event_free_multi(const odp_event_t event[], int num);
+
+/**
+ * Free multiple events to the same pool
+ *
+ * Otherwise like odp_event_free_multi(), but all events must be from the
+ * same originating pool.
+ *
+ * @param event    Array of event handles
+ * @param num      Number of events to free
+ */
+void odp_event_free_sp(const odp_event_t event[], int num);


Comment:
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_r154590474
updated_at 2017-12-04 09:10:10

Reply via email to