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
|
// timer
|
||||||
void (*init_timer)(struct net_timer *timer, net_timer_func hook, void *data);
|
void (*init_timer)(struct net_timer *timer, net_timer_func hook, void *data);
|
||||||
void (*set_timer)(struct net_timer *timer, bigtime_t delay);
|
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
|
#endif // NET_STACK_H
|
||||||
|
|||||||
@@ -923,6 +923,8 @@ static net_stack_module_info sNetStackModule = {
|
|||||||
|
|
||||||
init_timer,
|
init_timer,
|
||||||
set_timer,
|
set_timer,
|
||||||
|
cancel_timer,
|
||||||
|
is_timer_active,
|
||||||
};
|
};
|
||||||
|
|
||||||
static module_info sNetStarterModule = {
|
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
|
status_t
|
||||||
init_timers(void)
|
init_timers(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ status_t clear_fifo(net_fifo *fifo);
|
|||||||
// timer
|
// timer
|
||||||
void init_timer(net_timer *timer, net_timer_func hook, void *data);
|
void init_timer(net_timer *timer, net_timer_func hook, void *data);
|
||||||
void set_timer(net_timer *timer, bigtime_t delay);
|
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);
|
status_t init_timers(void);
|
||||||
void uninit_timers(void);
|
void uninit_timers(void);
|
||||||
|
|
||||||
|
|||||||
@@ -186,6 +186,8 @@ static net_stack_module_info gNetStackModule = {
|
|||||||
|
|
||||||
init_timer,
|
init_timer,
|
||||||
set_timer,
|
set_timer,
|
||||||
|
cancel_timer,
|
||||||
|
is_timer_active,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user