Document AVR dependency.
[bertos.git] / drv / timer.h
index 28672049d321bb5bb854daa925828451e1d9c2cb..da5a5d1c87ec3e544f7165c44eefa80918c861c9 100755 (executable)
@@ -1,7 +1,7 @@
 /*!
  * \file
  * <!--
- * Copyright 2003,2004 Develer S.r.l. (http://www.develer.com/)
+ * Copyright 2003, 2004 Develer S.r.l. (http://www.develer.com/)
  * Copyright 2000 Bernardo Innocenti <bernie@develer.com>
  * This file is part of DevLib - See devlib/README for information.
  * -->
 
 /*
  * $Log$
+ * Revision 1.10  2004/07/21 00:13:57  bernie
+ * Put timer driver on diet.
+ *
+ * Revision 1.9  2004/07/20 23:45:01  bernie
+ * Finally remove redundant protos.
+ *
  * Revision 1.8  2004/07/18 21:57:32  bernie
  * timer_gettick(): Rename to timer_tick() and document better.
  *
 #include "compiler.h"
 #include <mware/list.h>
 
+/*! Number of timer ticks per second. */
+#define TICKS_PER_SEC       1000
+
+/* Function protos */
+extern void timer_init(void);
+extern void timer_delay(time_t time);
+
+#ifndef CONFIG_TIMER_DISABLE_UDELAY
+extern void timer_udelay(utime_t utime);
+#endif
+
+
+#ifndef CONFIG_TIMER_DISABLE_EVENTS
+
 #ifdef CONFIG_KERNEL
        #include <kern/event.h>
 #else
        #include <mware/event.h>
 #endif
 
-/*! Number of timer ticks per second. */
-#define TICKS_PER_SEC       1000
-
+/*!
+ * The timer driver supports multiple ssynchronous timers
+ * that can trigger an event when they expire.
+ *
+ * \sa timer_add()
+ * \sa timer_abort()
+ */
 typedef struct Timer
 {
        Node   link;      /*!< Link into timers queue */
@@ -64,21 +88,12 @@ typedef struct Timer
        Event  expire;    /*!< Event to execute when the timer expires */
 } Timer;
 
-/* Function protos */
-extern void timer_init(void);
 extern void timer_add(Timer *timer);
 extern Timer *timer_abort(Timer *timer);
-extern void timer_delay(time_t time);
-extern void timer_udelay(utime_t utime);
-INLINE time_t timer_tick(void);
-INLINE time_t timer_tick_unlocked(void);
-INLINE void timer_set_event_softint(Timer* timer, Hook func, void* user_data);
-INLINE void timer_set_delay(Timer* timer, time_t delay);
 
 #if defined(CONFIG_KERN_SIGNALS) && CONFIG_KERN_SIGNALS
 
 /*! Set the timer so that it sends a signal when it expires */
-INLINE void timer_set_event_signal(Timer* timer, struct Process* proc, sigset_t sigs);
 INLINE void timer_set_event_signal(Timer* timer, struct Process* proc, sigset_t sigs)
 {
        event_initSignal(&timer->expire, proc, sigs);
@@ -98,6 +113,7 @@ INLINE void timer_set_delay(Timer* timer, time_t delay)
        timer->delay = delay;
 }
 
+#endif /* CONFIG_TIMER_DISABLE_EVENTS */
 
 extern volatile time_t _clock;
 
@@ -142,8 +158,9 @@ INLINE time_t timer_tick(void)
 
 
 /*!
- * Like \c timer_tick, faster version to be called
- * from interrupt context only.
+ * Faster version of timer_tick(), to be called only when the timer
+ * interrupt is disabled (DISABLE_INTS) or overridden by a
+ * higher-priority or non-nesting interrupt.
  *
  * \sa timer_tick
  */