7291db2345cc3b4281eb551529b326a452852d96
[gpxe.git] / src / include / gpxe / retry.h
1 #ifndef _GPXE_RETRY_H
2 #define _GPXE_RETRY_H
3
4 /** @file
5  *
6  * Retry timers
7  *
8  */
9
10 #include <gpxe/list.h>
11
12 /** A retry timer */
13 struct retry_timer {
14         /** List of active timers */
15         struct list_head list;
16         /** Timeout value (in ticks) */
17         unsigned long timeout;
18         /** Start time (in ticks) */
19         unsigned long start;
20         /** Retry count */
21         unsigned int count;
22         /** Timer expired callback
23          *
24          * @v timer     Retry timer
25          * @v fail      Failure indicator
26          *
27          * The timer will already be stopped when this method is
28          * called.  The failure indicator will be True if the retry
29          * timeout has already exceeded @c MAX_TIMEOUT.
30          */
31         void ( * expired ) ( struct retry_timer *timer, int over );
32 };
33
34 extern void start_timer ( struct retry_timer *timer );
35 extern void stop_timer ( struct retry_timer *timer );
36
37 #endif /* _GPXE_RETRY_H */