]> git.sesse.net Git - bcachefs-tools-debian/blob - include/linux/timer.h
bcache in userspace; userspace fsck
[bcachefs-tools-debian] / include / linux / timer.h
1 #ifndef __TOOLS_LINUX_TIMER_H
2 #define __TOOLS_LINUX_TIMER_H
3
4 #include <string.h>
5 #include <linux/types.h>
6
7 struct timer_list {
8         unsigned long           expires;
9         void                    (*function)(unsigned long);
10         unsigned long           data;
11         bool                    pending;
12 };
13
14 static inline void init_timer(struct timer_list *timer)
15 {
16         memset(timer, 0, sizeof(*timer));
17 }
18
19 #define __init_timer(_timer, _flags)    init_timer(_timer)
20
21 #define __setup_timer(_timer, _fn, _data, _flags)                       \
22         do {                                                            \
23                 __init_timer((_timer), (_flags));                       \
24                 (_timer)->function = (_fn);                             \
25                 (_timer)->data = (_data);                               \
26         } while (0)
27
28 #define setup_timer(timer, fn, data)                                    \
29         __setup_timer((timer), (fn), (data), 0)
30
31 static inline int timer_pending(const struct timer_list *timer)
32 {
33         return timer->pending;
34 }
35
36 int del_timer(struct timer_list * timer);
37 int del_timer_sync(struct timer_list *timer);
38
39 int mod_timer(struct timer_list *timer, unsigned long expires);
40 //extern int mod_timer_pending(struct timer_list *timer, unsigned long expires);
41
42 static inline void add_timer(struct timer_list *timer)
43 {
44         BUG_ON(timer_pending(timer));
45         mod_timer(timer, timer->expires);
46 }
47
48 void flush_timers(void);
49
50 #endif /* __TOOLS_LINUX_TIMER_H */