8a9e2cf6f925eb5e271501c2d07ad7493077b863
[people/xl0/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 /** Effective maximum retry count for exponential backoff calculation */
13 #define BACKOFF_LIMIT 5
14
15 /** A retry timer */
16 struct retry_timer {
17         /** List of active timers */
18         struct list_head list;
19         /** Base timeout (in ticks) */
20         unsigned int base;
21         /** Retry count */
22         unsigned int retries;
23         /** Expiry time (in ticks) */
24         unsigned long expiry;
25         /** Timer expired callback
26          *
27          * @v timer     Retry timer
28          */
29         void ( * expired ) ( struct retry_timer *timer );
30 };
31
32 extern void start_timer ( struct retry_timer *timer );
33 extern void reset_timer ( struct retry_timer *timer );
34 extern void stop_timer ( struct retry_timer *timer );
35
36 #endif /* _GPXE_RETRY_H */