summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/gpxe/retry.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/include/gpxe/retry.h b/src/include/gpxe/retry.h
new file mode 100644
index 000000000..8a9e2cf6f
--- /dev/null
+++ b/src/include/gpxe/retry.h
@@ -0,0 +1,36 @@
+#ifndef _GPXE_RETRY_H
+#define _GPXE_RETRY_H
+
+/** @file
+ *
+ * Retry timers
+ *
+ */
+
+#include <gpxe/list.h>
+
+/** Effective maximum retry count for exponential backoff calculation */
+#define BACKOFF_LIMIT 5
+
+/** A retry timer */
+struct retry_timer {
+ /** List of active timers */
+ struct list_head list;
+ /** Base timeout (in ticks) */
+ unsigned int base;
+ /** Retry count */
+ unsigned int retries;
+ /** Expiry time (in ticks) */
+ unsigned long expiry;
+ /** Timer expired callback
+ *
+ * @v timer Retry timer
+ */
+ void ( * expired ) ( struct retry_timer *timer );
+};
+
+extern void start_timer ( struct retry_timer *timer );
+extern void reset_timer ( struct retry_timer *timer );
+extern void stop_timer ( struct retry_timer *timer );
+
+#endif /* _GPXE_RETRY_H */