iPXE
|
Retry timers. More...
#include <ipxe/list.h>
Go to the source code of this file.
Data Structures | |
struct | retry_timer |
A retry timer. More... | |
Macros | |
#define | DEFAULT_MIN_TIMEOUT ( TICKS_PER_SEC / 4 ) |
Default minimum timeout value (in ticks) More... | |
#define | DEFAULT_MAX_TIMEOUT ( 10 * TICKS_PER_SEC ) |
Default maximum timeout value (in ticks) More... | |
#define | TIMER_INIT(expired_fn) |
Initialise a static timer. More... | |
Functions | |
FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
static | __attribute__ ((always_inline)) void timer_init(struct retry_timer *timer |
Initialise a timer. More... | |
void | start_timer (struct retry_timer *timer) |
Start timer. More... | |
void | start_timer_fixed (struct retry_timer *timer, unsigned long timeout) |
Start timer with a specified timeout. More... | |
void | stop_timer (struct retry_timer *timer) |
Stop timer. More... | |
void | retry_poll (void) |
Poll the retry timer list. More... | |
static void | start_timer_nodelay (struct retry_timer *timer) |
Start timer with no delay. More... | |
Variables | |
static void(* | expired )(struct retry_timer *timer, int over) |
static void(*) struct refcnt | refcnt ) |
static unsigned long | min |
static unsigned long unsigned long | max |
Retry timers.
Definition in file retry.h.
#define DEFAULT_MIN_TIMEOUT ( TICKS_PER_SEC / 4 ) |
#define DEFAULT_MAX_TIMEOUT ( 10 * TICKS_PER_SEC ) |
#define TIMER_INIT | ( | expired_fn | ) |
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
|
inlinestatic |
Initialise a timer.
Set minimum and maximum timeouts.
Test to see if timer is currently running.
timer | Retry timer |
expired | Timer expired callback |
refcnt | Reference counter, or NULL |
timer | Retry timer |
running | Non-zero if timer is running |
timer | Retry timer |
min | Minimum timeout (in ticks), or zero to use default |
max | Maximum timeout (in ticks), or zero to use default |
void start_timer | ( | struct retry_timer * | timer | ) |
Start timer.
timer | Retry timer |
This starts the timer running with the current timeout value (rounded up to the minimum timeout value). If stop_timer() is not called before the timer expires, the timer will be stopped and the timer's callback function will be called.
Definition at line 93 of file retry.c.
References DEFAULT_MIN_TIMEOUT, min, MIN_TIMEOUT, start_timer_fixed(), and timeout().
Referenced by aoecmd_tx(), dhcp_tx(), dhcpv6_timer_expired(), dns_send_packet(), ib_mi_timer_expired(), ipv6conf_expired(), neighbour_expired(), ntp_expired(), slam_master_timer_expired(), slam_slave_timer_expired(), slam_socket_deliver(), tcp_xmit_sack(), tftp_send_packet(), xcm_close(), and xcm_reopen().
void start_timer_fixed | ( | struct retry_timer * | timer, |
unsigned long | timeout | ||
) |
Start timer with a specified timeout.
timer | Retry timer |
timeout | Timeout, in ticks |
This starts the timer running with the specified timeout value. If stop_timer() is not called before the timer expires, the timer will be stopped and the timer's callback function will be called.
Definition at line 64 of file retry.c.
References currticks(), DBGC2, list_add, ref_get, and timeout().
Referenced by dhcp_defer(), eapol_eap_rx(), eapol_expired(), efi_watchdog_expired(), exanic_expired(), exanic_open(), fc_link_err(), fc_link_expired(), fc_xchg_rx(), fc_xchg_tx(), fcoe_expired(), fragment_reassemble(), gve_open(), gve_watchdog(), http_transfer_complete(), ipair_rx_pair_error(), iphone_expired(), ipv6conf_expired(), netdev_link_block(), peerblk_open(), peerblk_raw_open(), peerblk_raw_rx(), peerblk_retrieval_open(), peerblk_retrieval_rx(), peerdisc_expired(), pinger_expired(), pool_add(), sandev_command(), slam_mc_socket_deliver(), slam_open(), start_timer(), start_timer_nodelay(), tcp_keepalive_expired(), tcp_rx(), tcp_rx_ack(), xcm_keepalive(), xcm_reopen(), xsigo_discover(), xsigo_ib_open(), and xsigo_xcm_complete().
void stop_timer | ( | struct retry_timer * | timer | ) |
Stop timer.
timer | Retry timer |
This stops the timer and updates the timer's timeout value.
Definition at line 117 of file retry.c.
References currticks(), DBGC, DBGC2, list_del, and ref_put.
Referenced by aoecmd_close(), dhcp_finished(), dhcp_set_state(), dhcpv6_finished(), dns_done(), dns_xfer_deliver(), eapol_eap_rx(), eapol_notify(), efi_watchdog_stop(), exanic_close(), fc_link_stop(), fc_link_up(), fc_xchg_close(), fcoe_close(), fcoe_expired(), fcoe_reset(), fragment_reassemble(), gve_close(), http_close(), ib_destroy_madx(), ipair_close(), iphone_close(), ipv6conf_done(), ipv6conf_rx_router_advertisement(), neighbour_destroy(), neighbour_discovered(), netdev_close(), netdev_link_err(), netdev_link_unblock(), ntp_close(), peerblk_reset(), peerblk_retrieval_close(), peerdisc_destroy(), pinger_close(), pool_del(), sandev_command_close(), slam_finished(), slam_mc_socket_deliver(), slam_socket_deliver(), tcp_close(), tcp_rx(), tcp_rx_ack(), tftp_done(), tftp_send_packet(), xcm_close(), xcm_destroy(), xcm_reopen(), xsigo_ib_notify(), and xsigo_ib_remove().
void retry_poll | ( | void | ) |
Poll the retry timer list.
Definition at line 197 of file retry.c.
References currticks(), retry_timer::list, list_for_each_entry, timer, and timer_expired().
Referenced by eoib_poll(), ipoib_poll(), and retry_step().
|
inlinestatic |
Start timer with no delay.
timer | Retry timer |
This starts the timer running with a zero timeout value.
Definition at line 99 of file retry.h.
References start_timer_fixed().
Referenced by dhcp_set_state(), dhcpv6_set_state(), dns_resolv(), eapol_notify(), efi_watchdog_start(), fc_link_start(), fcoe_expired(), fcoe_reset(), ib_create_madx(), imux_close(), ipair_create(), ipair_rx_pair(), ipair_rx_pubkey(), ipair_rx_session_error(), iphone_open(), neighbour_discover(), ntp_window_changed(), peerblk_discovered(), peerblk_done(), peerdisc_create(), pinger_window_changed(), start_ipv6conf(), tcp_open(), tftp_core_open(), tftp_send_packet(), tftp_timer_expired(), xcm_create(), xcm_list(), xsigo_ib_notify(), xsigo_ib_open(), and xsigo_ib_probe().
void( * expired) (struct retry_timer *timer, int over) |
timer max |