timer: Cleanup and warning removal from driver and test
[bertos.git] / bertos / emul / timer_posix.c
index e6149cead7f43d5e2a3058b381e86716ea2109d0..ede534063a3fd05100acebe729dc5ed2b18a02ae 100644 (file)
  * invalidate any other reasons why the executable file might be covered by
  * the GNU General Public License.
  *
- * Copyright 2005,2008 Develer S.r.l. (http://www.develer.com/)
- *
+ * Copyright 2005, 2008 Develer S.r.l. (http://www.develer.com/)
  * -->
  *
  * \version $Id$
  *
- * \author Bernardo Innocenti <bernie@develer.com>
- *
+ * \author Bernie Innocenti <bernie@codewiz.org>
  * \brief Low-level timer module for Qt emulator (implementation).
  */
 #include <cfg/compiler.h> // hptime.t
@@ -50,6 +48,9 @@ void timer_isr(int);
 /// HW dependent timer initialization.
 static void timer_hw_init(void)
 {
+#if CONFIG_KERN_IRQ
+       irq_register(SIGALRM, timer_isr);
+#else // ! CONFIG_KERN_IRQ
        struct sigaction sa;
        memset(&sa, 0, sizeof(sa));
 
@@ -59,9 +60,10 @@ static void timer_hw_init(void)
        sigaddset(&sa.sa_mask, SIGALRM);
        sa.sa_flags = SA_RESTART;
        sigaction(SIGALRM, &sa, NULL);
+#endif // CONFIG_KERN_IRQ
 
        // Setup POSIX realtime timer to interrupt every 1/TIMER_TICKS_PER_SEC.
-       static struct itimerval itv =
+       static const struct itimerval itv =
        {
                { 0, 1000000 / TIMER_TICKS_PER_SEC }, /* it_interval */
                { 0, 1000000 / TIMER_TICKS_PER_SEC }  /* it_value */
@@ -69,7 +71,19 @@ static void timer_hw_init(void)
        setitimer(ITIMER_REAL, &itv, NULL);
 }
 
+static void timer_hw_cleanup(void)
+{
+       static const struct itimerval itv =
+       {
+               { 0, 0 }, /* it_interval */
+               { 0, 0 }  /* it_value */
+       };
+       setitimer(ITIMER_REAL, &itv, NULL);
+}
+
 INLINE hptime_t timer_hw_hpread(void)
 {
        return hptime_get();
 }
+
+#define timer_hw_triggered() (true)