diff options
author | Barry Spinney <spinney@mellanox.com> | 2016-05-20 11:17:12 -0400 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2016-05-24 17:15:22 +0300 |
commit | 242759cfb1dba52b17d76733c3d4a538eb5bec0f (patch) | |
tree | d19ae379d0d53d37e2abc8eb1a9318fce0ea309c /platform/linux-generic/odp_timer_wheel.c | |
parent | 618065ec07a2cfc1a7cc309a220b9527f697a128 (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.c | 40 |
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, |