X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Ftimer.h;h=c2648daf56bb2d775a0686389adf1d208f0002d3;hb=50cc352d570076bb1c5e6a79764da95681ef0887;hp=c77936adb03dc482dfb88fe5664b092c46ea792d;hpb=766a22ae58928039e82f428d17a8a944ab2fb553;p=bertos.git diff --git a/drv/timer.h b/drv/timer.h old mode 100755 new mode 100644 index c77936ad..c2648daf --- a/drv/timer.h +++ b/drv/timer.h @@ -1,9 +1,34 @@ -/*! +/** * \file * * * \version $Id$ @@ -15,6 +40,18 @@ /*#* *#* $Log$ + *#* Revision 1.33 2007/06/07 14:35:12 batt + *#* Merge from project_ks. + *#* + *#* Revision 1.32 2007/01/09 08:57:19 bernie + *#* Remove excess parentheses. + *#* + *#* Revision 1.31 2006/07/19 12:56:26 bernie + *#* Convert to new Doxygen style. + *#* + *#* Revision 1.30 2006/02/24 00:26:49 bernie + *#* Fixes for CONFIG_KERNEL. + *#* *#* Revision 1.29 2006/02/21 21:28:02 bernie *#* New time handling based on TIMER_TICKS_PER_SEC to support slow timers with ticks longer than 1ms. *#* @@ -122,7 +159,7 @@ extern volatile ticks_t _clock; -/*! +/** * \brief Return the system tick counter (expressed in ticks) * * The result is guaranteed to increment monotonically, @@ -152,23 +189,19 @@ INLINE ticks_t timer_clock(void) return result; } -/*! +/** * Faster version of timer_clock(), to be called only when the timer * interrupt is disabled (DISABLE_INTS) or overridden by a * higher-priority or non-nesting interrupt. * - * \sa timer_ticks + * \sa timer_clock */ INLINE ticks_t timer_clock_unlocked(void) { return _clock; } - - -//TODO: take care of slow timers so add convertions for seconds to ticks and viceversa. - -/*! Convert \a ms [ms] to ticks. */ +/** Convert \a ms [ms] to ticks. */ INLINE ticks_t ms_to_ticks(mtime_t ms) { #if TIMER_TICKS_PER_SEC < 1000 @@ -180,7 +213,7 @@ INLINE ticks_t ms_to_ticks(mtime_t ms) #endif } -/*! Convert \a us [us] to ticks. */ +/** Convert \a us [us] to ticks. */ INLINE ticks_t us_to_ticks(utime_t us) { #if TIMER_TICKS_PER_SEC < 1000 @@ -192,7 +225,7 @@ INLINE ticks_t us_to_ticks(utime_t us) #endif } -/*! Convert \a ticks [ticks] to ms. */ +/** Convert \a ticks [ticks] to ms. */ INLINE mtime_t ticks_to_ms(ticks_t ticks) { #if TIMER_TICKS_PER_SEC < 1000 @@ -204,7 +237,7 @@ INLINE mtime_t ticks_to_ms(ticks_t ticks) #endif } -/*! Convert \a ticks [ticks] to us. */ +/** Convert \a ticks [ticks] to us. */ INLINE utime_t ticks_to_us(ticks_t ticks) { #if TIMER_TICKS_PER_SEC < 1000 @@ -216,23 +249,23 @@ INLINE utime_t ticks_to_us(ticks_t ticks) #endif } -/*! Convert \a us [us] to hpticks */ +/** Convert \a us [us] to hpticks */ INLINE hptime_t us_to_hptime(utime_t us) { #if TIMER_HW_HPTICKS_PER_SEC > 10000000UL - return(us * ((TIMER_HW_HPTICKS_PER_SEC + 500000UL) / 1000000UL)); + return us * ((TIMER_HW_HPTICKS_PER_SEC + 500000UL) / 1000000UL); #else - return((us * TIMER_HW_HPTICKS_PER_SEC + 500000UL) / 1000000UL); + return (us * TIMER_HW_HPTICKS_PER_SEC + 500000UL) / 1000000UL; #endif } -/*! Convert \a hpticks [hptime] to usec */ +/** Convert \a hpticks [hptime] to usec */ INLINE utime_t hptime_to_us(hptime_t hpticks) { #if TIMER_HW_HPTICKS_PER_SEC < 100000UL - return(hpticks * (1000000UL / TIMER_HW_HPTICKS_PER_SEC)); + return hpticks * (1000000UL / TIMER_HW_HPTICKS_PER_SEC); #else - return((hpticks * 1000000UL) / TIMER_HW_HPTICKS_PER_SEC); + return (hpticks * 1000000UL) / TIMER_HW_HPTICKS_PER_SEC; #endif /* TIMER_HW_HPTICKS_PER_SEC < 100000UL */ } @@ -257,7 +290,7 @@ INLINE void timer_udelay(utime_t delay) #include -/*! +/** * The timer driver supports multiple synchronous timers * that can trigger an event when they expire. * @@ -266,27 +299,27 @@ INLINE void timer_udelay(utime_t delay) */ typedef struct Timer { - Node link; /*!< Link into timers queue */ - ticks_t _delay; /*!< Timer delay in ms */ - ticks_t tick; /*!< Timer will expire at this tick */ - Event expire; /*!< Event to execute when the timer expires */ + Node link; /**< Link into timers queue */ + ticks_t _delay; /**< Timer delay in ms */ + ticks_t tick; /**< Timer will expire at this tick */ + Event expire; /**< Event to execute when the timer expires */ DB(uint16_t magic;) } Timer; -/*! Timer is active when Timer.magic contains this value (for debugging purposes). */ +/** Timer is active when Timer.magic contains this value (for debugging purposes). */ #define TIMER_MAGIC_ACTIVE 0xABBA #define TIMER_MAGIC_INACTIVE 0xBAAB extern void timer_add(Timer *timer); extern Timer *timer_abort(Timer *timer); -/*! Set the timer so that it calls an user hook when it expires */ +/** Set the timer so that it calls an user hook when it expires */ INLINE void timer_set_event_softint(Timer *timer, Hook func, iptr_t user_data) { event_initSoftInt(&timer->expire, func, user_data); } -/*! Set the timer delay (the time before the event will be triggered) */ +/** Set the timer delay (the time before the event will be triggered) */ INLINE void timer_setDelay(Timer *timer, ticks_t delay) { timer->_delay = delay; @@ -296,7 +329,7 @@ INLINE void timer_setDelay(Timer *timer, ticks_t delay) #if defined(CONFIG_KERN_SIGNALS) && CONFIG_KERN_SIGNALS -/*! Set the timer so that it sends a signal when it expires */ +/** Set the timer so that it sends a signal when it expires */ INLINE void timer_set_event_signal(Timer *timer, struct Process *proc, sigmask_t sigs) { event_initSignal(&timer->expire, proc, sigs);