On 2014-08-21 14:58, Petri Savolainen wrote:
> - Start POSIX timer in odp_timer_create
> - return correct value int odp_timeout_tick
> 
> Signed-off-by: Petri Savolainen <[email protected]>
> ---
>  platform/linux-generic/odp_timer.c | 127 
> ++++++++++++++++++++++++-------------
>  1 file changed, 83 insertions(+), 44 deletions(-)
> 
> diff --git a/platform/linux-generic/odp_timer.c 
> b/platform/linux-generic/odp_timer.c
> index 73a690b..1bf37f9 100644
> --- a/platform/linux-generic/odp_timer.c
> +++ b/platform/linux-generic/odp_timer.c
> @@ -29,9 +29,11 @@ typedef struct {
>  } tick_t;
>  
>  typedef struct {
> +     int               allocated;
>       volatile int      active;
>       volatile uint64_t cur_tick;
>       timer_t           timerid;
> +     odp_timer_t       timer_hdl;
>       odp_buffer_pool_t pool;
>       uint64_t          resolution_ns;
>       uint64_t          max_ticks;
> @@ -40,8 +42,10 @@ typedef struct {
>  } timer_ring_t;
>  
>  typedef struct {
> -     timer_ring_t     timer[NUM_TIMERS];
> -     odp_atomic_int_t num_timers;
> +     odp_spinlock_t lock;
> +     int            num_timers;
> +     timer_ring_t   timer[NUM_TIMERS];
> +
>  } timer_global_t;

[...]

>  
> -     odp_timer.timer[id].pool          = pool;
> -     odp_timer.timer[id].resolution_ns = RESOLUTION_NS;
> -     odp_timer.timer[id].max_ticks     = MAX_TICKS;
> +     timer = &odp_timer.timer[id];
> +     timer->allocated = 1;
> +     odp_timer.num_timers++;
> +
> +     odp_spinlock_unlock(&odp_timer.lock);
> +
> +     timer_hdl = id + 1;
> +
> +     timer->timer_hdl     = timer_hdl;
> +     timer->pool          = pool;

pool change to pool_hdl

> +     timer->resolution_ns = RESOLUTION_NS;
> +     timer->max_ticks     = MAX_TICKS;
> +
> +     for (i = 0; i < MAX_TICKS; i++) {
> +             odp_spinlock_init(&timer->tick[i].lock);
> +             timer->tick[i].list = NULL;
> +     }
>  
> +     timer->active = 1;
>       odp_sync_stores();
>  
> -     odp_timer.timer[id].active = 1;
> +     timer_start(timer);
>  
> -     return id + 1;
> +     return timer_hdl;
>  }
>  
> -odp_timer_tmo_t odp_timer_absolute_tmo(odp_timer_t timer, uint64_t tmo_tick,
> +odp_timer_tmo_t odp_timer_absolute_tmo(odp_timer_t timer_hdl, uint64_t 
> tmo_tick,
>                                      odp_queue_t queue, odp_buffer_t buf)
>  {
>       int id;
> @@ -269,10 +306,12 @@ odp_timer_tmo_t odp_timer_absolute_tmo(odp_timer_t 
> timer, uint64_t tmo_tick,
>       timeout_t *new_tmo;
>       odp_buffer_t tmo_buf;
>       odp_timeout_hdr_t *tmo_hdr;
> +     timer_ring_t *timer;
>  
> -     id = timer - 1;
> +     id = timer_hdl - 1;

I got confused here, whats the difference between timerid and id and timer_hdl?

Cheers,
Anders

_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to