libosmocore 0.9.6-23.20170220git32ee5af8.fc42
Osmocom core library
|
Files | |
file | timer.h |
Osmocom timer handling routines. | |
file | timer_compat.h |
Compatibility header with some helpers. | |
file | timer.c |
file | timer_gettimeofday.c |
Data Structures | |
struct | osmo_timer_list |
A structure representing a single instance of a timer. More... | |
Macros | |
#define | timerisset(tvp) |
#define | timerclear(tvp) |
#define | timercmp(a, b, CMP) |
#define | timeradd(a, b, result) |
#define | timersub(a, b, result) |
Functions | |
void | osmo_timer_add (struct osmo_timer_list *timer) |
add a new timer to the timer management | |
void | osmo_timer_schedule (struct osmo_timer_list *timer, int seconds, int microseconds) |
schedule a timer at a given future relative time | |
void | osmo_timer_del (struct osmo_timer_list *timer) |
delete a timer from timer management | |
int | osmo_timer_pending (struct osmo_timer_list *timer) |
check if given timer is still pending | |
int | osmo_timer_remaining (const struct osmo_timer_list *timer, const struct timeval *now, struct timeval *remaining) |
compute the remaining time of a timer | |
struct timeval * | osmo_timers_nearest (void) |
Determine time between now and the nearest timer. | |
void | osmo_timers_prepare (void) |
Find the nearest time and update nearest_p. | |
int | osmo_timers_update (void) |
fire all timers... and remove them | |
int | osmo_timers_check (void) |
Check how many timers we have in the system. | |
int | osmo_gettimeofday (struct timeval *tv, struct timezone *tz) |
shim around gettimeofday to be able to set the time manually. To override, set osmo_gettimeofday_override == true and set the desired current time in osmo_gettimeofday_override_time. | |
void | osmo_gettimeofday_override_add (time_t secs, suseconds_t usecs) |
convenience function to advance the fake time. Add the given values to osmo_gettimeofday_override_time. | |
static void | __add_timer (struct osmo_timer_list *timer) |
static void | update_nearest (struct timeval *cand, struct timeval *current) |
Variables | |
bool | osmo_gettimeofday_override |
struct timeval | osmo_gettimeofday_override_time |
static struct timeval | nearest |
static struct timeval * | nearest_p |
static struct rb_root | timer_root = RB_ROOT |
bool | osmo_gettimeofday_override = false |
struct timeval | osmo_gettimeofday_override_time = { 23, 424242 } |
#define timeradd | ( | a, | |
b, | |||
result ) |
#define timerclear | ( | tvp | ) |
#define timercmp | ( | a, | |
b, | |||
CMP ) |
#define timerisset | ( | tvp | ) |
#define timersub | ( | a, | |
b, | |||
result ) |
void osmo_timer_add | ( | struct osmo_timer_list * | timer | ) |
add a new timer to the timer management
timer management
[in] | timer | the timer that should be added |
References osmo_timer_list::active, INIT_LLIST_HEAD, osmo_timer_list::list, and osmo_timer_del().
Referenced by osmo_timer_schedule().
void osmo_timer_del | ( | struct osmo_timer_list * | timer | ) |
delete a timer from timer management
[in] | timer | the to-be-deleted timer |
This function can be used to delete a previously added/scheduled timer from the timer management code.
References osmo_timer_list::active, osmo_timer_list::list, llist_del_init(), llist_empty(), and osmo_timer_list::node.
Referenced by _osmo_fsm_inst_state_chg(), osmo_fsm_inst_free(), osmo_timer_add(), and osmo_timers_update().
int osmo_timer_pending | ( | struct osmo_timer_list * | timer | ) |
check if given timer is still pending
[in] | timer | the to-be-checked timer |
This function can be used to determine whether a given timer has alredy expired (returns 0) or is still pending (returns 1)
References osmo_timer_list::active.
int osmo_timer_remaining | ( | const struct osmo_timer_list * | timer, |
const struct timeval * | now, | ||
struct timeval * | remaining ) |
compute the remaining time of a timer
[in] | timer | the to-be-checked timer |
[in] | now | the current time (NULL if not known) |
[out] | remaining | remaining time until timer fires |
This function can be used to determine the amount of time remaining until the expiration of the timer.
References osmo_gettimeofday(), and osmo_timer_list::timeout.
void osmo_timer_schedule | ( | struct osmo_timer_list * | timer, |
int | seconds, | ||
int | microseconds ) |
schedule a timer at a given future relative time
[in] | timer | the to-be-added timer |
[in] | seconds | number of seconds from now |
[in] | microseconds | number of microseconds from now |
This function can be used to (re-)schedule a given timer at a specified number of seconds+microseconds in the future. It will internally add it to the timer management data structures, thus osmo_timer_add() is automatically called.
References osmo_gettimeofday(), osmo_timer_add(), and osmo_timer_list::timeout.
Referenced by _osmo_fsm_inst_state_chg(), and rate_ctr_init().
int osmo_timers_check | ( | void | ) |
Check how many timers we have in the system.
struct timeval * osmo_timers_nearest | ( | void | ) |
Determine time between now and the nearest timer.
if we have a nearest time return the delta between the current time and the time of the nearest timer. If the nearest timer timed out return NULL and then we will dispatch everything after the select
Referenced by osmo_select_main().
|
extern |
timer override
Referenced by osmo_gettimeofday().
bool osmo_gettimeofday_override = false |
timer override
Referenced by osmo_gettimeofday().