On 11 March 2015 at 14:49, Savolainen, Petri (Nokia - FI/Espoo) < [email protected]> wrote:
> > > > -----Original Message----- > > From: [email protected] [mailto:lng-odp- > > [email protected]] On Behalf Of ext Ola Liljedahl > > Sent: Tuesday, March 10, 2015 4:44 PM > > To: [email protected] > > Subject: [lng-odp] [PATCH] linux-generic: odp_timer: set user_ptr for > > cancelled timeout > > > > Ensure that the timeout user_ptr and timer fields are set when the > > corresponding timer is immediately cancelled. > > https://bugs.linaro.org/show_bug.cgi?id=1313 > > > > Signed-off-by: Ola Liljedahl <[email protected]> > > --- > > (This document/code contribution attached is provided under the terms of > > agreement LES-LTM-21309) > > > > Passes odp_timer validation with the new odp_timer_cancel() test from > > Petri. > > > > platform/linux-generic/odp_timer.c | 18 ++++++++++++++---- > > 1 file changed, 14 insertions(+), 4 deletions(-) > > > > diff --git a/platform/linux-generic/odp_timer.c b/platform/linux- > > generic/odp_timer.c > > index 61a02b6..6b48d2e 100644 > > --- a/platform/linux-generic/odp_timer.c > > +++ b/platform/linux-generic/odp_timer.c > > @@ -421,6 +421,16 @@ static bool timer_reset(uint32_t idx, > > #endif > > } else { > > /* We have a new timeout buffer which replaces any old one > */ > > + /* Fill in header fields if timeout event */ > > Typo: "... if timeout event" => "... in timeout event" > Will fix. BTW should the timer implementation still be using buffers as the base class for timeouts? I think there is some more event-ification work to do here. > > + if (_odp_buffer_type(*tmo_buf) == ODP_EVENT_TIMEOUT) { > > + /* Convert from buffer to timeout hdr */ > > + odp_timeout_hdr_t *tmo_hdr = > > + timeout_hdr_from_buf(*tmo_buf); > > + tmo_hdr->timer = tp_idx_to_handle(tp, idx); > > + tmo_hdr->user_ptr = tp->timers[idx].user_ptr; > > + /* expiration field filled in when timer expires */ > > + } > > + /* Else ignore buffers of other types */ > > odp_buffer_t old_buf = ODP_BUFFER_INVALID; > > #ifdef ODP_ATOMIC_U128 > > tick_buf_t new, old; > > @@ -556,16 +566,16 @@ static unsigned timer_expire(odp_timer_pool *tp, > > uint32_t idx, uint64_t tick) > > _odp_atomic_flag_clear(IDX2LOCK(idx)); > > #endif > > if (odp_likely(tmo_buf != ODP_BUFFER_INVALID)) { > > - /* Fill in metadata fields in system timeout buffer */ > > + /* Fill in expiration tick if timeout event */ > > Same typo. > Will fix. > > -Petri > > > if (_odp_buffer_type(tmo_buf) == ODP_EVENT_TIMEOUT) { > > /* Convert from buffer to timeout hdr */ > > odp_timeout_hdr_t *tmo_hdr = > > timeout_hdr_from_buf(tmo_buf); > > - tmo_hdr->timer = tp_idx_to_handle(tp, idx); > > tmo_hdr->expiration = exp_tck; > > - tmo_hdr->user_ptr = tim->user_ptr; > > + /* timer and user_ptr fields filled in when timer > > + * was set */ > > } > > - /* Else ignore buffers of other types */ > > + /* Else ignore events of other types */ > > /* Post the timeout to the destination queue */ > > int rc = odp_queue_enq(tim->queue, > > odp_buffer_to_event(tmo_buf)); > > -- > > 1.9.1 > > > > > > _______________________________________________ > > lng-odp mailing list > > [email protected] > > http://lists.linaro.org/mailman/listinfo/lng-odp >
_______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
