Added two more utility functions to the timer service:
* cancel_timer() cancels a timer, and returns true if the timer was running * is_timer_active() determines if the timer is currently running or not. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19393 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -93,6 +93,8 @@ struct net_stack_module_info {
|
||||
// timer
|
||||
void (*init_timer)(struct net_timer *timer, net_timer_func hook, void *data);
|
||||
void (*set_timer)(struct net_timer *timer, bigtime_t delay);
|
||||
bool (*cancel_timer)(struct net_timer *timer);
|
||||
bool (*is_timer_active)(struct net_timer *timer);
|
||||
};
|
||||
|
||||
#endif // NET_STACK_H
|
||||
|
||||
@@ -923,6 +923,8 @@ static net_stack_module_info sNetStackModule = {
|
||||
|
||||
init_timer,
|
||||
set_timer,
|
||||
cancel_timer,
|
||||
is_timer_active,
|
||||
};
|
||||
|
||||
static module_info sNetStarterModule = {
|
||||
|
||||
@@ -320,6 +320,28 @@ set_timer(net_timer *timer, bigtime_t delay)
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
cancel_timer(struct net_timer *timer)
|
||||
{
|
||||
BenaphoreLocker locker(sTimerLock);
|
||||
|
||||
if (timer->due <= 0)
|
||||
return false;
|
||||
|
||||
// this timer is scheduled, cancel it
|
||||
list_remove_item(&sTimers, timer);
|
||||
timer->due = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
is_timer_active(net_timer *timer)
|
||||
{
|
||||
return timer->due > 0;
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
init_timers(void)
|
||||
{
|
||||
|
||||
@@ -30,6 +30,8 @@ status_t clear_fifo(net_fifo *fifo);
|
||||
// timer
|
||||
void init_timer(net_timer *timer, net_timer_func hook, void *data);
|
||||
void set_timer(net_timer *timer, bigtime_t delay);
|
||||
bool cancel_timer(struct net_timer *timer);
|
||||
bool is_timer_active(net_timer *timer);
|
||||
status_t init_timers(void);
|
||||
void uninit_timers(void);
|
||||
|
||||
|
||||
@@ -186,6 +186,8 @@ static net_stack_module_info gNetStackModule = {
|
||||
|
||||
init_timer,
|
||||
set_timer,
|
||||
cancel_timer,
|
||||
is_timer_active,
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user