--- lib/librte_timer/rte_timer.c | 14 ++++---------- lib/librte_timer/rte_timer.h | 3 +++ 2 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c index f98e904..ea2f22a 100755 --- a/lib/librte_timer/rte_timer.c +++ b/lib/librte_timer/rte_timer.c @@ -58,11 +58,6 @@ LIST_HEAD(rte_timer_list, rte_timer); struct priv_timer { struct rte_timer pending_head; /**< dummy timer instance to head up list */ rte_spinlock_t list_lock; /**< lock to protect list access */ - - /** per-core variable that true if a timer was updated on this - * core since last reset of the variable */ - int updated; - /** track the current depth of the skiplist */ unsigned curr_skiplist_depth; @@ -378,7 +373,7 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire, return -1; __TIMER_STAT_ADD(reset, 1); - priv_timer[lcore_id].updated = 1; + tim->updated = 1; /* remove it from list */ if (prev_status.state == RTE_TIMER_PENDING) { @@ -443,7 +438,6 @@ int rte_timer_stop(struct rte_timer *tim) { union rte_timer_status prev_status, status; - unsigned lcore_id = rte_lcore_id(); int ret; /* wait that the timer is in correct status before update, @@ -453,7 +447,7 @@ rte_timer_stop(struct rte_timer *tim) return -1; __TIMER_STAT_ADD(stop, 1); - priv_timer[lcore_id].updated = 1; + tim->updated = 1; /* remove it from list */ if (prev_status.state == RTE_TIMER_PENDING) { @@ -541,7 +535,7 @@ void rte_timer_manage(void) rte_spinlock_unlock(&priv_timer[lcore_id].list_lock); - priv_timer[lcore_id].updated = 0; + tim->updated = 0; /* execute callback function with list unlocked */ tim->f(tim, tim->arg); @@ -550,7 +544,7 @@ void rte_timer_manage(void) /* the timer was stopped or reloaded by the callback * function, we have nothing to do here */ - if (priv_timer[lcore_id].updated == 1) + if (tim->updated == 1) continue; if (tim->period == 0) { diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h index c5f936b..19f6514 100755 --- a/lib/librte_timer/rte_timer.h +++ b/lib/librte_timer/rte_timer.h @@ -129,6 +129,9 @@ struct rte_timer uint64_t period; /**< Period of timer (0 if not periodic). */ rte_timer_cb_t *f; /**< Callback function. */ void *arg; /**< Argument to callback function. */ + /** if a timer was updated on this + * core since last reset of the variable */ + int updated; }; -- 1.7.9.5