> > > However, if a timer expires quickly enough, there exists the > > > following race condition that causes the timer_manage() routine to > > > misinterpret a timer in CONFIG state, resulting in lost timers: > > > > > > - Thread A: > > > - starts a timer with rte_timer_reset() > > > - the timer is moved to CONFIG state > > > - the spinlock associated with the appropriate skiplist is acquired > > > - timer is inserted into the skiplist > > > - the spinlock is released > > > - Thread B: > > > - executes rte_timer_manage() > > > - find above timer as expired, add it to run list > > > - walk run list, see above timer still in CONFIG state, unlink it from > > > run list and continue on > > > - Thread A: > > > - move timer to PENDING state > > > - return from rte_timer_reset() > > > - timer is now in PENDING state, but not actually linked into > > > skiplist > Add "nor the run list"?
<...snipped...> > Other than the minor comment, > Reviewed-by: Gavin Hu <gavin...@arm.com> > <...snipped...> Thanks for the review, Gavin. I've made the update and resubmitted. Regards, Erik