From 4f0bc181b60325bd2b5deffd3060229ff63a46da Mon Sep 17 00:00:00 2001 From: Abhishek Sagar Date: Fri, 23 Oct 2020 23:09:05 -0700 Subject: [PATCH] made posix timer as embedded timer instead of 'has a' timer within wrapper timer --- WheelTimer/libtimer/Course/timerlib.h | 59 +++++++++++++++++++++++++++ WheelTimer/libtimer/timerlib.c | 2 - 2 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 WheelTimer/libtimer/Course/timerlib.h diff --git a/WheelTimer/libtimer/Course/timerlib.h b/WheelTimer/libtimer/Course/timerlib.h new file mode 100644 index 0000000..f97a791 --- /dev/null +++ b/WheelTimer/libtimer/Course/timerlib.h @@ -0,0 +1,59 @@ +/* + * ===================================================================================== + * + * Filename: timerlib.h + * + * Description: This file is a wrapper over Timer POSIX Timer library + * + * Version: 1.0 + * Created: 10/12/2020 01:47:16 PM + * Revision: none + * Compiler: gcc + * + * Author: ABHISHEK SAGAR (), sachinites@gmail.com + * Organization: Juniper Networks + * + * ===================================================================================== + */ + +#ifndef __TIMER_WRAP__ +#define __TIMER_WRAP__ + +#include +#include +#include +#include +#include +#include + +typedef enum{ + + TIMER_INIT, + TIMER_DELETED, + TIMER_PAUSED, + TIMER_CANCELLED, + TIMER_RESUMED, + TIMER_RUNNING, +} TIMER_STATE_T; + +typedef struct Timer_{ + + /* Timer config */ + timer_t posix_timer; + void *user_arg; + unsigned long exp_timer; /* in milli-sec */ + unsigned long sec_exp_timer; /* in milli-sec */ + uint32_t thresdhold; /* No of times to invoke the timer callback */ + void (*cb)(struct Timer_ *, void *); /* Timer Callback */ + bool exponential_backoff; + + /* place holder value to store + * dynamic attributes of timer */ + unsigned long time_remaining; /* Time left for paused timer for next expiration */ + uint32_t invocation_counter; + struct itimerspec ts; + unsigned long exp_back_off_time; + TIMER_STATE_T timer_state; +} Timer_t; + +#endif /* __TIMER_WRAP__ */ diff --git a/WheelTimer/libtimer/timerlib.c b/WheelTimer/libtimer/timerlib.c index 7e7ea22..9ed5f62 100644 --- a/WheelTimer/libtimer/timerlib.c +++ b/WheelTimer/libtimer/timerlib.c @@ -151,8 +151,6 @@ delete_timer(Timer_t *timer){ int rc; rc = timer_delete(*(timer->posix_timer)); assert(rc >= 0); - free(timer->posix_timer); - timer->posix_timer = NULL; timer->user_arg = NULL; /* User arg need to be freed by Appln */ timer_set_state(timer, TIMER_DELETED); }