In the schedule_loop the wait time is passed in units of scheduler
time. At this moment there is no difference between wait time and
odp_time, but in case if odp_time is smth different from uint64_t,
it cannot be directly passed as uint64_t. So better to pass scheduler
time as ns and convert them before entering a loop.

Reviewed-by: Petri Savolainen <petri.savolai...@nokia.com>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronz...@linaro.org>
---
 platform/linux-generic/odp_schedule.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/platform/linux-generic/odp_schedule.c 
b/platform/linux-generic/odp_schedule.c
index 884ae60..96b3ac5 100644
--- a/platform/linux-generic/odp_schedule.c
+++ b/platform/linux-generic/odp_schedule.c
@@ -586,11 +586,10 @@ static int schedule_loop(odp_queue_t *out_queue, uint64_t 
wait,
                         odp_event_t out_ev[],
                         unsigned int max_num, unsigned int max_deq)
 {
-       odp_time_t start_time, time, diff;
+       odp_time_t start_time, time, diff, wtime;
+       int first = 1;
        int ret;
 
-       start_time = ODP_TIME_NULL;
-
        while (1) {
                ret = schedule(out_queue, out_ev, max_num, max_deq);
 
@@ -603,15 +602,17 @@ static int schedule_loop(odp_queue_t *out_queue, uint64_t 
wait,
                if (wait == ODP_SCHED_NO_WAIT)
                        break;
 
-               if (!odp_time_cmp(ODP_TIME_NULL, start_time)) {
+               if (first) {
+                       wtime = odp_time_local_from_ns(wait);
                        start_time = odp_time_local();
+                       first = 0;
                        continue;
                }
 
                time = odp_time_local();
                diff = odp_time_diff(time, start_time);
 
-               if (odp_time_cmp(wait, diff) < 0)
+               if (odp_time_cmp(wtime, diff) < 0)
                        break;
        }
 
@@ -652,7 +653,7 @@ void odp_schedule_resume(void)
 
 uint64_t odp_schedule_wait_time(uint64_t ns)
 {
-       return odp_time_to_u64(odp_time_local_from_ns(ns));
+       return ns;
 }
 
 
-- 
1.9.1

_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to