[API-NEXT,v7,0/9] api: time: update local time to be monotonic

Message ID 5666B3C7.7050708@linaro.org
State New
Headers show

Commit Message

Maxim Uvarov Dec. 8, 2015, 10:41 a.m.
That patch serries looks ok, instead of one overrun of 32 bit counter.
I can fix it just in place.

Petri, agree?

time.c: In function 'time_test_monotony':
time.c:60:15: error: comparison is always true due to limited range of 
data type [-Werror=type-limits]
   while (count < BUSY_LOOP_CNT_LONG) {

Maxim.


On 12/04/2015 20:51, Ivan Khoronzhuk wrote:
> This series is intended to modify time API to be used as monotonic wall
> time in order to simplify time API usage and create prerequisites for
> adding global time API.
>
> Since v6:
> - changed patch order a little to pass validation tests
> - fixed issue with pktio perf test
> - no functional changes
>
> Since v5:
>    linux-generic: align with new wall time API
> - deleted _odp prefix for local functions
> - avoided modulo operation
> - used common global var for start time
>
> Since v3:
> - "api: time: make odp_local_time to be monotonic wall time"
>    splitted on;
>    "linux-generic: align with new wall time API"
>    "test/example: use local time API as wall time"
> - increased BUSY_LOOP_CNT to fit in resolution and 4+ sec
>
> Since v2:
> - removed patch changing type of ODP_TIME_*
> - added new patch:
>    test: performance: pktio: don't use direct arithmetic operations with
>      odp_time_t
> - added new patch:
>    performance: sched: use ODP time API instead of clock_gettime
> - combined monotonic and wall time patches
> - removed odp_time_local_val() and odp_time_val_to_ns()
> - replaced terms monotonic and wall in API desc
>
> Since v1:
> - corrected name of the series to be api-next
> - use thread local for holding start time
>
> Ivan Khoronzhuk (9):
>    validation: time: don't assign int directly to odp_time_t
>    test: performance: pktio: don't use direct arithmetic operations with
>      odp_time_t
>    linux-generic: schedule: use schedule time in ns
>    linux-generic: odp_time: don't use cpu cycle API to get time
>    performance: sched: use ODP time API instead of clock_gettime
>    api: time: make odp_local_time to be monotonic wall time
>    validation: time: align tests with current time API
>    linux-generic: align with new wall time API
>    test/example: use local time API as wall time
>
>   example/generator/odp_generator.c                  |  10 +-
>   include/odp/api/time.h                             |   3 +-
>   platform/linux-generic/Makefile.am                 |   1 -
>   .../linux-generic/include/odp/plat/time_types.h    |   6 +-
>   platform/linux-generic/include/odp_cpu_internal.h  |  29 ---
>   platform/linux-generic/include/odp_internal.h      |   2 +
>   platform/linux-generic/odp_cpu.c                   |   6 +-
>   platform/linux-generic/odp_init.c                  |   4 +
>   platform/linux-generic/odp_schedule.c              |  18 +-
>   platform/linux-generic/odp_time.c                  | 112 +++++++---
>   test/performance/odp_pktio_perf.c                  |  24 +--
>   test/performance/odp_scheduling.c                  |  37 +---
>   test/validation/pktio/pktio.c                      |  21 +-
>   test/validation/time/time.c                        | 228 ++++++++++++++++++---
>   test/validation/time/time.h                        |   7 +-
>   15 files changed, 346 insertions(+), 162 deletions(-)
>   delete mode 100644 platform/linux-generic/include/odp_cpu_internal.h
>

Comments

Maxim Uvarov Dec. 8, 2015, 11:24 a.m. | #1
Merged,
Maxim.

On 12/08/2015 14:11, Savolainen, Petri (Nokia - FI/Espoo) wrote:
> OK, it's the 32 bit build again (which was not tested).
>
> I have had trouble lately to install 32 bit libraries of OpenSSL into Ubuntu, which makes it hard to test linux-generic with -m32. So currently, I'm not testing 32 bit build either.
>
> -Petri

Yes it's test for 32 bit. I use odp-check scripts. But I don't remember 
if I installed something or it did it automatically.

>
>> -----Original Message-----
>> From: lng-odp [mailto:lng-odp-bounces@lists.linaro.org] On Behalf Of EXT
>> Savolainen, Petri (Nokia - FI/Espoo)
>> Sent: Tuesday, December 08, 2015 1:02 PM
>> To: EXT Maxim Uvarov; lng-odp@lists.linaro.org
>> Subject: Re: [lng-odp] [API-NEXT PATCH v7 0/9] api: time: update local
>> time to be monotonic
>>
>> Agree, it's a bug and the test would spin forever. Is this a build error?
>> Ivan should have built the code successfully before sending... or do we
>> have different warning levels enabled on different make targets?
>>
>> -Petri
>>
>>> -----Original Message-----
>>> From: EXT Maxim Uvarov [mailto:maxim.uvarov@linaro.org]
>>> Sent: Tuesday, December 08, 2015 12:41 PM
>>> To: lng-odp@lists.linaro.org; Petri Savolainen
>>> Subject: Re: [lng-odp] [API-NEXT PATCH v7 0/9] api: time: update local
>>> time to be monotonic
>>>
>>> That patch serries looks ok, instead of one overrun of 32 bit counter.
>>> I can fix it just in place.
>>>
>>> Petri, agree?
>>>
>>> time.c: In function 'time_test_monotony':
>>> time.c:60:15: error: comparison is always true due to limited range of
>>> data type [-Werror=type-limits]
>>>     while (count < BUSY_LOOP_CNT_LONG) {
>>>
>>> --- a/test/validation/time/time.c
>>> +++ b/test/validation/time/time.c
>>> @@ -45,7 +45,7 @@ void time_test_odp_conversion(void)
>>>
>>>    void time_test_monotony(void)
>>>    {
>>> -       volatile unsigned long count = 0;
>>> +       volatile uint64_t count = 0;
>>>           odp_time_t t1, t2, t3;
>>>           uint64_t ns1, ns2, ns3;
>>>
>>> Maxim.
>>>
>>>
>>> On 12/04/2015 20:51, Ivan Khoronzhuk wrote:
>>>> This series is intended to modify time API to be used as monotonic
>> wall
>>>> time in order to simplify time API usage and create prerequisites for
>>>> adding global time API.
>>>>
>>>> Since v6:
>>>> - changed patch order a little to pass validation tests
>>>> - fixed issue with pktio perf test
>>>> - no functional changes
>>>>
>>>> Since v5:
>>>>     linux-generic: align with new wall time API
>>>> - deleted _odp prefix for local functions
>>>> - avoided modulo operation
>>>> - used common global var for start time
>>>>
>>>> Since v3:
>>>> - "api: time: make odp_local_time to be monotonic wall time"
>>>>     splitted on;
>>>>     "linux-generic: align with new wall time API"
>>>>     "test/example: use local time API as wall time"
>>>> - increased BUSY_LOOP_CNT to fit in resolution and 4+ sec
>>>>
>>>> Since v2:
>>>> - removed patch changing type of ODP_TIME_*
>>>> - added new patch:
>>>>     test: performance: pktio: don't use direct arithmetic operations
>> with
>>>>       odp_time_t
>>>> - added new patch:
>>>>     performance: sched: use ODP time API instead of clock_gettime
>>>> - combined monotonic and wall time patches
>>>> - removed odp_time_local_val() and odp_time_val_to_ns()
>>>> - replaced terms monotonic and wall in API desc
>>>>
>>>> Since v1:
>>>> - corrected name of the series to be api-next
>>>> - use thread local for holding start time
>>>>
>>>> Ivan Khoronzhuk (9):
>>>>     validation: time: don't assign int directly to odp_time_t
>>>>     test: performance: pktio: don't use direct arithmetic operations
>> with
>>>>       odp_time_t
>>>>     linux-generic: schedule: use schedule time in ns
>>>>     linux-generic: odp_time: don't use cpu cycle API to get time
>>>>     performance: sched: use ODP time API instead of clock_gettime
>>>>     api: time: make odp_local_time to be monotonic wall time
>>>>     validation: time: align tests with current time API
>>>>     linux-generic: align with new wall time API
>>>>     test/example: use local time API as wall time
>>>>
>>>>    example/generator/odp_generator.c                  |  10 +-
>>>>    include/odp/api/time.h                             |   3 +-
>>>>    platform/linux-generic/Makefile.am                 |   1 -
>>>>    .../linux-generic/include/odp/plat/time_types.h    |   6 +-
>>>>    platform/linux-generic/include/odp_cpu_internal.h  |  29 ---
>>>>    platform/linux-generic/include/odp_internal.h      |   2 +
>>>>    platform/linux-generic/odp_cpu.c                   |   6 +-
>>>>    platform/linux-generic/odp_init.c                  |   4 +
>>>>    platform/linux-generic/odp_schedule.c              |  18 +-
>>>>    platform/linux-generic/odp_time.c                  | 112 +++++++---
>>>>    test/performance/odp_pktio_perf.c                  |  24 +--
>>>>    test/performance/odp_scheduling.c                  |  37 +---
>>>>    test/validation/pktio/pktio.c                      |  21 +-
>>>>    test/validation/time/time.c                        | 228
>>> ++++++++++++++++++---
>>>>    test/validation/time/time.h                        |   7 +-
>>>>    15 files changed, 346 insertions(+), 162 deletions(-)
>>>>    delete mode 100644 platform/linux-generic/include/odp_cpu_internal.h
>>>>
>> _______________________________________________
>> lng-odp mailing list
>> lng-odp@lists.linaro.org
>> https://lists.linaro.org/mailman/listinfo/lng-odp

Patch

--- a/test/validation/time/time.c
+++ b/test/validation/time/time.c
@@ -45,7 +45,7 @@  void time_test_odp_conversion(void)

  void time_test_monotony(void)
  {
-       volatile unsigned long count = 0;
+       volatile uint64_t count = 0;
         odp_time_t t1, t2, t3;
         uint64_t ns1, ns2, ns3;