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