From 376983ae4c0de59abd025dbbc3d2f861cdbfc141 Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Wed, 2 May 2012 15:44:40 +0200 Subject: [PATCH] DDE kit: Timer add schedule function form timers Added 'dde_kit_timer_schedule_absolute' to timer interface. --- os/include/dde_kit/timer.h | 10 ++++++++++ os/src/lib/dde_kit/timer.cc | 10 +++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/os/include/dde_kit/timer.h b/os/include/dde_kit/timer.h index 23bc38e46a..fff47dda29 100644 --- a/os/include/dde_kit/timer.h +++ b/os/include/dde_kit/timer.h @@ -62,6 +62,16 @@ struct dde_kit_timer *dde_kit_timer_add(void (*fn)(void *), void *priv, */ void dde_kit_timer_del(struct dde_kit_timer *timer); + +/** + * Schedule absolute timeout + * + * \param timer timer reference + * \param timeout absolute timeout (in DDE kit ticks) + */ +void dde_kit_timer_schedule_absolute(struct dde_kit_timer *timer, unsigned long timeout); + + /** * Check whether a timer is pending * diff --git a/os/src/lib/dde_kit/timer.cc b/os/src/lib/dde_kit/timer.cc index 0bc23654f6..2406cb53fc 100644 --- a/os/src/lib/dde_kit/timer.cc +++ b/os/src/lib/dde_kit/timer.cc @@ -149,8 +149,12 @@ class dde_kit_timer : public Alarm, public List::Element public: dde_kit_timer(void (*handler)(void *), void *priv, unsigned long absolute_timeout) - : _handler(handler), _priv(priv), _pending(true) + : _handler(handler), _priv(priv), _pending(true) { + schedule(absolute_timeout); } + + void schedule(unsigned long absolute_timeout) { + _pending = true; _timer_thread->schedule_absolute(this, absolute_timeout); } @@ -183,6 +187,10 @@ extern "C" struct dde_kit_timer *dde_kit_timer_add(void (*fn)(void *), void *pri } +extern "C" void dde_kit_timer_schedule_absolute(struct dde_kit_timer *timer, unsigned long timeout) { + timer->schedule(timeout); } + + extern "C" void dde_kit_timer_del(struct dde_kit_timer *timer) { try {