From dbf5d92605a9db10e3e3cb154d03a515c5d5c5af Mon Sep 17 00:00:00 2001 From: reinelt Date: Sun, 8 May 2005 04:32:45 +0000 Subject: [lcd4linux @ 2005-05-08 04:32:43 by reinelt] CodingStyle added and applied git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@547 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- timer.c | 233 +++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 120 insertions(+), 113 deletions(-) (limited to 'timer.c') diff --git a/timer.c b/timer.c index 0aac0a6..f6a3cf8 100644 --- a/timer.c +++ b/timer.c @@ -1,4 +1,4 @@ -/* $Id: timer.c,v 1.12 2005/01/18 06:30:24 reinelt Exp $ +/* $Id: timer.c,v 1.13 2005/05/08 04:32:45 reinelt Exp $ * * generic timer handling * @@ -21,6 +21,9 @@ * * * $Log: timer.c,v $ + * Revision 1.13 2005/05/08 04:32:45 reinelt + * CodingStyle added and applied + * * Revision 1.12 2005/01/18 06:30:24 reinelt * added (C) to all copyright statements * @@ -106,137 +109,141 @@ typedef struct TIMER { - void (*callback)(void *data); - void *data; - struct timeval when; - int interval; - int one_shot; - int active; + void (*callback) (void *data); + void *data; + struct timeval when; + int interval; + int one_shot; + int active; } TIMER; -TIMER *Timers=NULL; -int nTimers=0; +TIMER *Timers = NULL; +int nTimers = 0; -static void timer_inc (struct timeval *tv, const int msec) +static void timer_inc(struct timeval *tv, const int msec) { - tv->tv_sec += msec / 1000; - tv->tv_usec += (msec - 1000*(msec/1000)) * 1000; - - if (tv->tv_usec >= 1000000) { - tv->tv_usec -= 1000000; - tv->tv_sec++; - } + tv->tv_sec += msec / 1000; + tv->tv_usec += (msec - 1000 * (msec / 1000)) * 1000; + + if (tv->tv_usec >= 1000000) { + tv->tv_usec -= 1000000; + tv->tv_sec++; + } } -int timer_add (void (*callback)(void *data), void *data, const int interval, const int one_shot) +int timer_add(void (*callback) (void *data), void *data, const int interval, const int one_shot) { - int i; - struct timeval now; - - /* find a free slot */ - for (i=0; i=nTimers) { - nTimers++; - Timers=realloc(Timers, nTimers*sizeof(*Timers)); - } - - gettimeofday(&now, NULL); - - /* fill slot */ - Timers[i].callback = callback; - Timers[i].data = data; - Timers[i].when = now; - Timers[i].interval = interval; - Timers[i].one_shot = one_shot; - Timers[i].active = 1; - - /* if one-shot timer, don't fire now */ - if (one_shot) { - timer_inc (&Timers[i].when, interval); - } - - return 0; + int i; + struct timeval now; + + /* find a free slot */ + for (i = 0; i < nTimers; i++) { + if (Timers[i].active == 0) + break; + } + + /* none found, allocate a new slot */ + if (i >= nTimers) { + nTimers++; + Timers = realloc(Timers, nTimers * sizeof(*Timers)); + } + + gettimeofday(&now, NULL); + + /* fill slot */ + Timers[i].callback = callback; + Timers[i].data = data; + Timers[i].when = now; + Timers[i].interval = interval; + Timers[i].one_shot = one_shot; + Timers[i].active = 1; + + /* if one-shot timer, don't fire now */ + if (one_shot) { + timer_inc(&Timers[i].when, interval); + } + + return 0; } -int timer_process (struct timespec *delay) +int timer_process(struct timespec *delay) { - int i, flag, min; - struct timeval now; - - /* the current moment */ - gettimeofday(&now, NULL); - - /* sanity check */ - if (nTimers==0) { - error ("huh? not one single timer to process? dazed and confused..."); - return -1; - } - - /* process expired timers */ - flag=0; - for (i=0; itv_sec = Timers[min].when.tv_sec - now.tv_sec; + delay->tv_nsec = Timers[min].when.tv_usec - now.tv_usec; + if (delay->tv_nsec < 0) { + delay->tv_sec--; + delay->tv_nsec += 1000000; } - } - - if (min<0) { - error ("huh? not one single timer left? dazed and confused..."); - return -1; - } - - /* delay until next timer event */ - delay->tv_sec = Timers[min].when.tv_sec - now.tv_sec; - delay->tv_nsec = Timers[min].when.tv_usec - now.tv_usec; - if (delay->tv_nsec<0) { - delay->tv_sec--; - delay->tv_nsec += 1000000; - } - /* nanoseconds!! */ - delay->tv_nsec *= 1000; - - return 0; - + /* nanoseconds!! */ + delay->tv_nsec *= 1000; + + return 0; + } -void timer_exit(void) { +void timer_exit(void) +{ - nTimers=0; + nTimers = 0; - if (Timers != NULL) { - free(Timers);; - Timers = NULL; - } + if (Timers != NULL) { + free(Timers);; + Timers = NULL; + } } -- cgit v1.2.3