\doxysection{src/core/timer.c File Reference} \label{timer_8c}\index{src/core/timer.c@{src/core/timer.c}} {\ttfamily \#include $<$assert.\+h$>$}\newline {\ttfamily \#include $<$string.\+h$>$}\newline {\ttfamily \#include $<$limits.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/timer.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/timer\+\_\+compat.\+h$>$}\newline {\ttfamily \#include $<$osmocom/core/linuxlist.\+h$>$}\newline \doxysubsection*{Functions} \begin{DoxyCompactItemize} \item static void \textbf{ \+\_\+\+\_\+add\+\_\+timer} (struct \textbf{ osmo\+\_\+timer\+\_\+list} $\ast$timer) \item void \textbf{ osmo\+\_\+timer\+\_\+setup} (struct \textbf{ osmo\+\_\+timer\+\_\+list} $\ast$timer, void($\ast$cb)(void $\ast$\textbf{ data}), void $\ast$\textbf{ data}) \begin{DoxyCompactList}\small\item\em set up timer callback and data \end{DoxyCompactList}\item void \textbf{ osmo\+\_\+timer\+\_\+add} (struct \textbf{ osmo\+\_\+timer\+\_\+list} $\ast$timer) \begin{DoxyCompactList}\small\item\em add a new timer to the timer management \end{DoxyCompactList}\item void \textbf{ osmo\+\_\+timer\+\_\+schedule} (struct \textbf{ osmo\+\_\+timer\+\_\+list} $\ast$timer, int seconds, int microseconds) \begin{DoxyCompactList}\small\item\em schedule a timer at a given future relative time \end{DoxyCompactList}\item void \textbf{ osmo\+\_\+timer\+\_\+del} (struct \textbf{ osmo\+\_\+timer\+\_\+list} $\ast$timer) \begin{DoxyCompactList}\small\item\em delete a timer from timer management \end{DoxyCompactList}\item int \textbf{ osmo\+\_\+timer\+\_\+pending} (const struct \textbf{ osmo\+\_\+timer\+\_\+list} $\ast$timer) \begin{DoxyCompactList}\small\item\em check if given timer is still pending \end{DoxyCompactList}\item int \textbf{ osmo\+\_\+timer\+\_\+remaining} (const struct \textbf{ osmo\+\_\+timer\+\_\+list} $\ast$timer, const struct timeval $\ast$now, struct timeval $\ast$remaining) \begin{DoxyCompactList}\small\item\em compute the remaining time of a timer \end{DoxyCompactList}\item struct timeval $\ast$ \textbf{ osmo\+\_\+timers\+\_\+nearest} (void) \begin{DoxyCompactList}\small\item\em Determine time between now and the nearest timer. \end{DoxyCompactList}\item int \textbf{ osmo\+\_\+timers\+\_\+nearest\+\_\+ms} (void) \begin{DoxyCompactList}\small\item\em Determine time between now and the nearest timer in milliseconds. \end{DoxyCompactList}\item static void \textbf{ update\+\_\+nearest} (struct timeval $\ast$cand, struct timeval $\ast$current) \item void \textbf{ osmo\+\_\+timers\+\_\+prepare} (void) \begin{DoxyCompactList}\small\item\em Find the nearest time and update nearest\+\_\+p. \end{DoxyCompactList}\item int \textbf{ osmo\+\_\+timers\+\_\+update} (void) \begin{DoxyCompactList}\small\item\em fire all timers... and remove them \end{DoxyCompactList}\item int \textbf{ osmo\+\_\+timers\+\_\+check} (void) \begin{DoxyCompactList}\small\item\em Check how many timers we have in the system. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection*{Variables} \begin{DoxyCompactItemize} \item static \+\_\+\+\_\+thread struct timeval \textbf{ nearest} \item static \+\_\+\+\_\+thread struct timeval $\ast$ \textbf{ nearest\+\_\+p} \item static \+\_\+\+\_\+thread struct \textbf{ rb\+\_\+root} \textbf{ timer\+\_\+root} = \textbf{ RB\+\_\+\+ROOT} \end{DoxyCompactItemize}