aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/odp_timer_wheel.c
diff options
context:
space:
mode:
authorBarry Spinney <spinney@mellanox.com>2016-05-20 11:17:12 -0400
committerMaxim Uvarov <maxim.uvarov@linaro.org>2016-05-24 17:15:22 +0300
commit242759cfb1dba52b17d76733c3d4a538eb5bec0f (patch)
treed19ae379d0d53d37e2abc8eb1a9318fce0ea309c /platform/linux-generic/odp_timer_wheel.c
parent618065ec07a2cfc1a7cc309a220b9527f697a128 (diff)
linux-generic: traffic-mngr: 32-bit platform fixes
Fixed some coverity warnings. Changed all 32-bit atomic variables to be 64 bit. Add PRIu64 and PRIX64 macros and other 32-bit platform fixes. Changed timer_wheel API to use uint64_t for user data instead of void *, which makes it easier to support 32-bit platforms. Added code to affinitize the tm_thread as well as the main thread. Signed-off-by: Barry Spinney <spinney@mellanox.com> Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'platform/linux-generic/odp_timer_wheel.c')
-rw-r--r--platform/linux-generic/odp_timer_wheel.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/platform/linux-generic/odp_timer_wheel.c b/platform/linux-generic/odp_timer_wheel.c
index bf43654a9..a8717b7c9 100644
--- a/platform/linux-generic/odp_timer_wheel.c
+++ b/platform/linux-generic/odp_timer_wheel.c
@@ -838,17 +838,16 @@ uint32_t _odp_timer_wheel_curr_time_update(_odp_timer_wheel_t timer_wheel,
int _odp_timer_wheel_insert(_odp_timer_wheel_t timer_wheel,
uint64_t wakeup_time,
- void *user_ptr)
+ uint64_t user_context)
{
timer_wheels_t *timer_wheels;
- uint64_t user_data, wakeup_ticks, rel_ticks;
+ uint64_t wakeup_ticks, rel_ticks;
int rc;
- user_data = (uint64_t)(uintptr_t)user_ptr;
- if (user_data == 0)
- return -4; /* user_data cannot be 0! */
- else if ((user_data & 0x3) != 0)
- return -5; /* user_data ptr must be at least 4-byte aligned. */
+ if (user_context == 0)
+ return -4; /* user_context cannot be 0! */
+ else if ((user_context & 0x3) != 0)
+ return -5; /* user_context must be at least 4-byte aligned. */
timer_wheels = (timer_wheels_t *)(uintptr_t)timer_wheel;
wakeup_ticks = (wakeup_time >> TIME_TO_TICKS_SHIFT) + 1;
@@ -857,16 +856,17 @@ int _odp_timer_wheel_insert(_odp_timer_wheel_t timer_wheel,
rel_ticks = wakeup_ticks - timer_wheels->current_ticks;
if (rel_ticks < timer_wheels->wheel_descs[0].max_ticks)
- rc = current_wheel_insert(timer_wheels, rel_ticks, user_data);
+ rc = current_wheel_insert(timer_wheels, rel_ticks,
+ user_context);
else if (rel_ticks < timer_wheels->wheel_descs[1].max_ticks)
rc = general_wheel_insert(timer_wheels, 1, wakeup_ticks,
- rel_ticks, user_data);
+ rel_ticks, user_context);
else if (rel_ticks < timer_wheels->wheel_descs[2].max_ticks)
rc = general_wheel_insert(timer_wheels, 2, wakeup_ticks,
- rel_ticks, user_data);
+ rel_ticks, user_context);
else if (rel_ticks < timer_wheels->wheel_descs[3].max_ticks)
rc = general_wheel_insert(timer_wheels, 3, wakeup_ticks,
- rel_ticks, user_data);
+ rel_ticks, user_context);
else
return -1;
@@ -880,7 +880,7 @@ int _odp_timer_wheel_insert(_odp_timer_wheel_t timer_wheel,
return 0;
}
-void *_odp_timer_wheel_next_expired(_odp_timer_wheel_t timer_wheel)
+uint64_t _odp_timer_wheel_next_expired(_odp_timer_wheel_t timer_wheel)
{
timer_wheels_t *timer_wheels;
uint64_t user_data;
@@ -890,13 +890,13 @@ void *_odp_timer_wheel_next_expired(_odp_timer_wheel_t timer_wheel)
timer_wheels = (timer_wheels_t *)(uintptr_t)timer_wheel;
rc = expired_timers_remove(timer_wheels, &user_data);
if (rc <= 0)
- return NULL;
+ return 0;
user_data &= ~0x3;
timer_wheels->total_timer_removes++;
if (timer_wheels->current_cnt != 0)
timer_wheels->current_cnt--;
- return (void *)(uintptr_t)user_data;
+ return user_data;
}
uint32_t _odp_timer_wheel_count(_odp_timer_wheel_t timer_wheel)
@@ -912,7 +912,7 @@ static void _odp_int_timer_wheel_desc_print(wheel_desc_t *wheel_desc,
uint32_t wheel_idx)
{
ODP_DBG(" wheel=%u num_slots=%u ticks_shift=%u ticks_per_slot=%u"
- " ticks_per_rev=%lu\n",
+ " ticks_per_rev=%" PRIu64 "\n",
wheel_idx, wheel_desc->num_slots, wheel_desc->ticks_shift,
wheel_desc->ticks_per_slot, wheel_desc->ticks_per_rev);
}
@@ -926,20 +926,20 @@ void _odp_timer_wheel_stats_print(_odp_timer_wheel_t timer_wheel)
timer_wheels = (timer_wheels_t *)(uintptr_t)timer_wheel;
expired_ring = timer_wheels->expired_timers_ring;
- ODP_DBG("_odp_int_timer_wheel_stats current_ticks=%lu\n",
+ ODP_DBG("_odp_int_timer_wheel_stats current_ticks=%" PRIu64 "\n",
timer_wheels->current_ticks);
for (wheel_idx = 0; wheel_idx < 4; wheel_idx++)
_odp_int_timer_wheel_desc_print(
&timer_wheels->wheel_descs[wheel_idx],
wheel_idx);
- ODP_DBG(" total timer_inserts=%lu timer_removes=%lu "
- "insert_fails=%lu\n",
+ ODP_DBG(" total timer_inserts=%" PRIu64 " timer_removes=%" PRIu64
+ " insert_fails=%" PRIu64 "\n",
timer_wheels->total_timer_inserts,
timer_wheels->total_timer_removes,
timer_wheels->insert_fail_cnt);
- ODP_DBG(" total_promote_cnt=%lu promote_fail_cnt=%lu\n",
- timer_wheels->total_promote_cnt,
+ ODP_DBG(" total_promote_cnt=%" PRIu64 " promote_fail_cnt=%"
+ PRIu64 "\n", timer_wheels->total_promote_cnt,
timer_wheels->promote_fail_cnt);
ODP_DBG(" free_list_size=%u min_size=%u peak_size=%u\n",
timer_wheels->free_list_size, timer_wheels->min_free_list_size,