On 03.09.15 09:20, Nicolas Morey-Chaisemartin wrote:


On 09/02/2015 11:16 PM, Ivan Khoronzhuk wrote:


On 02.09.15 12:42, Nicolas Morey-Chaisemartin wrote:

On 08/26/2015 05:47 PM, Ivan Khoronzhuk wrote:


On 26.08.15 18:22, Stuart Haslam wrote:
On Wed, Aug 26, 2015 at 06:11:13PM +0300, Ivan Khoronzhuk wrote:
It's needed because time resolution can be a little more than 1ns
and in this case odp_schedule_wait_time(1) returns 0, and test
generates warn w/o reason. So increase scheduler wait time check
from 1ns to 100ns.

It's hard to imagine time source with resolution more than 100ns,
so every implementation can return positive value from
odp_schedule_wait_time(). In case if resolution is more than 100ns
it's normal to warn about it at validation stage,


The wait parameter is documented as the *minimum* time to wait for an
event so the existing check looks OK to me. Implementations with a lower
resolution should round up.


It defined as "minimum" time to wait for odp_schedule and others,
for odp_schedule_wait_time() it's not defined as minimum, it's simple
convert function.

Not shure, but any of the functions I saw in linux-generic doesn't round ticks 
up.
It seems that it was decided to allow application to do it, if needed.

But if so, we have much more to change ).

In case if you are right, linux-generic implementation should be corrected,
as it doesn't round it up.

Thanks.

I ran into this issue with our port as our clock are < 1GHz.
So 1 ns is < 1 cycle which tends to break a few things on the linux generic 
port.

I fix this particular issue like this:
uint64_t odp_schedule_wait_time(uint64_t ns)
{
      uint64_t cycle = odp_time_ns_to_cycles(ns);
      if(cycle == 0)
          cycle = 1;
      return cycle;
}

Not the nicest patch but it works.
The test should probably be changed to if(ns && !cycle) so ns=0 returns 0;
Yes.

As said Stuart it may cause collisions with ODP_SCHED_WAIT (0)
and ODP_SCHED_NO_WAIT (1)

I will correct it a little later.

I don't think the collision with ODP_SCHED_NO_WAIT is too bad. We only fall 
into this case if a cycle is larger than 1 ns so waiting not waiting or waiting 
less thana cycle is close to the same thing.


Maybe you are right.

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

Reply via email to