aboutsummaryrefslogtreecommitdiffstats
path: root/timer.c
diff options
context:
space:
mode:
authorreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2005-05-08 04:32:45 +0000
committerreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2005-05-08 04:32:45 +0000
commitdbf5d92605a9db10e3e3cb154d03a515c5d5c5af (patch)
tree501d5dda3ce90fe924b893e487d9ef9f0683382b /timer.c
parenta1c471e9fb7cadb68bb182ab2e9715a0aa092386 (diff)
downloadlcd4linux-dbf5d92605a9db10e3e3cb154d03a515c5d5c5af.tar.gz
[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
Diffstat (limited to 'timer.c')
-rw-r--r--timer.c233
1 files changed, 120 insertions, 113 deletions
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; 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 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; i<nTimers; i++) {
- if (Timers[i].active == 0) continue;
- if (timercmp(&Timers[i].when, &now, <=)) {
- flag=1;
- /* callback */
- if (Timers[i].callback!=NULL) {
- Timers[i].callback(Timers[i].data);
- }
- /* respawn or delete timer */
- if (Timers[i].one_shot) {
- Timers[i].active=0;
- } else {
- Timers[i].when=now;
- timer_inc (&Timers[i].when, Timers[i].interval);
- }
+ 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; i < nTimers; i++) {
+ if (Timers[i].active == 0)
+ continue;
+ if (timercmp(&Timers[i].when, &now, <=)) {
+ flag = 1;
+ /* callback */
+ if (Timers[i].callback != NULL) {
+ Timers[i].callback(Timers[i].data);
+ }
+ /* respawn or delete timer */
+ if (Timers[i].one_shot) {
+ Timers[i].active = 0;
+ } else {
+ Timers[i].when = now;
+ timer_inc(&Timers[i].when, Timers[i].interval);
+ }
+ }
+ }
+
+ /* find next timer */
+ flag = 1;
+ min = -1;
+ for (i = 0; i < nTimers; i++) {
+ if (Timers[i].active == 0)
+ continue;
+ if (flag || timercmp(&Timers[i].when, &Timers[min].when, <)) {
+ flag = 0;
+ min = i;
+ }
+ }
+
+ if (min < 0) {
+ error("huh? not one single timer left? dazed and confused...");
+ return -1;
}
- }
-
- /* find next timer */
- flag=1;
- min=-1;
- for (i=0; i<nTimers; i++) {
- if (Timers[i].active == 0) continue;
- if (flag || timercmp(&Timers[i].when, &Timers[min].when, <)) {
- flag=0;
- min=i;
+
+ /* 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;
}
- }
-
- 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;
+ }
}