In the new Timer API and implementation, destroying a timer pool will
disarm all timers and remove any corresponding usage of kernel
functionality.



On 8 July 2014 17:25, Mike Holmes <[email protected]> wrote:

> I have not tested this, but I think we need to apply this to unlock other
> work. The new timer implementation needs to be translated from C++ before
> it can be applied and Ola is on Vacation this month so it will be a while.
>
> Thus +1 form me.
>
>
> On 8 July 2014 10:42, Maxim Uvarov <[email protected]> wrote:
>
>> Implement function to disarm all timers. Needed in case of
>> normal exit from application.
>> Signed-off-by: Maxim Uvarov <[email protected]>
>> ---
>>  One more call to apply this patch. This is needed for clean exit from
>>  applications like tcpdump, snort odp accelerated. This can be replaced
>>  with new implementation when it will be done.
>>
>>  Best regards,
>>  Maxim.
>>
>>  platform/linux-generic/include/odp_internal.h |  1 +
>>  platform/linux-generic/source/odp_timer.c     | 24
>> ++++++++++++++++++++++++
>>  2 files changed, 25 insertions(+)
>>
>> diff --git a/platform/linux-generic/include/odp_internal.h
>> b/platform/linux-generic/include/odp_internal.h
>> index fb3be79..9b0769e 100644
>> --- a/platform/linux-generic/include/odp_internal.h
>> +++ b/platform/linux-generic/include/odp_internal.h
>> @@ -38,6 +38,7 @@ int odp_schedule_init_global(void);
>>  int odp_schedule_init_local(void);
>>
>>  int odp_timer_init_global(void);
>> +int odp_timer_disarm_all(void);
>>
>>  #ifdef __cplusplus
>>  }
>> diff --git a/platform/linux-generic/source/odp_timer.c
>> b/platform/linux-generic/source/odp_timer.c
>> index 6fb5025..98ffde3 100644
>> --- a/platform/linux-generic/source/odp_timer.c
>> +++ b/platform/linux-generic/source/odp_timer.c
>> @@ -217,6 +217,30 @@ int odp_timer_init_global(void)
>>         return 0;
>>  }
>>
>> +int odp_timer_disarm_all(void)
>> +{
>> +       int timers;
>> +       struct itimerspec ispec;
>> +
>> +       timers = odp_atomic_load_int(&odp_timer.num_timers);
>> +
>> +       ispec.it_interval.tv_sec  = 0;
>> +       ispec.it_interval.tv_nsec = 0;
>> +       ispec.it_value.tv_sec     = 0;
>> +       ispec.it_value.tv_nsec    = 0;
>> +
>> +       for (; timers >= 0; timers--) {
>> +               if (timer_settime(odp_timer.timer[timers].timerid,
>> +                                 0, &ispec, NULL)) {
>> +                       ODP_DBG("Timer reset failed\n");
>> +                       return -1;
>> +               }
>> +               odp_atomic_fetch_sub_int(&odp_timer.num_timers, 1);
>> +       }
>> +
>> +       return 0;
>> +}
>> +
>>  odp_timer_t odp_timer_create(const char *name, odp_buffer_pool_t pool,
>>                              uint64_t resolution, uint64_t min_tmo,
>>                              uint64_t max_tmo)
>> --
>> 1.8.5.1.163.gd7aced9
>>
>>
>> _______________________________________________
>> lng-odp mailing list
>> [email protected]
>> http://lists.linaro.org/mailman/listinfo/lng-odp
>>
>
>
>
> --
> *Mike Holmes*
> Linaro Technical Manager / Lead
> LNG - ODP
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> http://lists.linaro.org/mailman/listinfo/lng-odp
>
>
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to