1 #ifndef __LWP_WATCHDOG_INL__
2 #define __LWP_WATCHDOG_INL__
4 static __inline__ void __lwp_wd_initialize(wd_cntrl *wd,wd_service_routine routine,u32 id,void *usr_data)
6 wd->state = LWP_WD_INACTIVE;
9 wd->usr_data = usr_data;
12 static __inline__ wd_cntrl* __lwp_wd_first(lwp_queue *queue)
14 return (wd_cntrl*)queue->first;
17 static __inline__ wd_cntrl* __lwp_wd_last(lwp_queue *queue)
19 return (wd_cntrl*)queue->last;
22 static __inline__ wd_cntrl* __lwp_wd_next(wd_cntrl *wd)
24 return (wd_cntrl*)wd->node.next;
27 static __inline__ wd_cntrl* __lwp_wd_prev(wd_cntrl *wd)
29 return (wd_cntrl*)wd->node.prev;
32 static __inline__ void __lwp_wd_activate(wd_cntrl *wd)
34 wd->state = LWP_WD_ACTIVE;
37 static __inline__ void __lwp_wd_deactivate(wd_cntrl *wd)
39 wd->state = LWP_WD_REMOVE;
42 static __inline__ u32 __lwp_wd_isactive(wd_cntrl *wd)
44 return (wd->state==LWP_WD_ACTIVE);
47 static __inline__ u64 __lwp_wd_calc_ticks(const struct timespec *time)
51 ticks = secs_to_ticks(time->tv_sec);
52 ticks += nanosecs_to_ticks(time->tv_nsec);
57 static __inline__ void __lwp_wd_tickle_ticks()
59 __lwp_wd_tickle(&_wd_ticks_queue);
62 static __inline__ void __lwp_wd_insert_ticks(wd_cntrl *wd,s64 interval)
64 wd->start = gettime();
65 wd->fire = (wd->start+LWP_WD_ABS(interval));
66 __lwp_wd_insert(&_wd_ticks_queue,wd);
69 static __inline__ void __lwp_wd_adjust_ticks(u32 dir,s64 interval)
71 __lwp_wd_adjust(&_wd_ticks_queue,dir,interval);
74 static __inline__ void __lwp_wd_remove_ticks(wd_cntrl *wd)
76 __lwp_wd_remove(&_wd_ticks_queue,wd);
79 static __inline__ void __lwp_wd_reset(wd_cntrl *wd)
81 __lwp_wd_remove(&_wd_ticks_queue,wd);
82 __lwp_wd_insert(&_wd_ticks_queue,wd);