src/ssx/ssx/ssx_timer_init.c
/// Create (initialize) a preemptible timer.
///
/// \param timer The SsxTimer to initialize.
///
/// \param callback The timer callback
///
/// \param arg Private data provided to the callback.
///
/// Once created with ssx_timer_create() a timer can be scheduled with
/// ssx_timer_schedule() or ssx_timer_schedule_absolute(), which queues the
/// timer in the kernel time queue.  Timers can be cancelled by a call of
/// ssx_timer_cancel().
///
/// Timers created with ssx_timer_create() are always run as noncritical
/// interrupt handlers with interrupt preemption enabled. Timer callbacks are
/// free to enter critical sections of any priorioty if required, but must
/// always exit with noncritical interrupts enabled.
///
/// Caution: SSX has no way to know if an SsxTimer structure provided to
/// ssx_timer_create() is safe to use as a timer, and will silently modify
/// whatever memory is provided.
///
/// Return values other then SSX_OK (0) are errors; see \ref ssx_errors
///
/// \retval 0 Successful completion
///
/// \retval -SSX_INVALID_TIMER_AT_CREATE The \a timer is a null (0) pointer.
Create (initialize) a preemptible timer.
\param timer The SsxTimer to initialize.

\param callback The timer callback

\param arg Private data provided to the callback.

Once created with ssx_timer_create() a timer can be scheduled with
ssx_timer_schedule() or ssx_timer_schedule_absolute(), which queues the
timer in the kernel time queue.  Timers can be cancelled by a call of
ssx_timer_cancel().

Timers created with ssx_timer_create() are always run as noncritical
interrupt handlers with interrupt preemption enabled. Timer callbacks are
free to enter critical sections of any priorioty if required, but must
always exit with noncritical interrupts enabled.

SSX has no way to know if an SsxTimer structure provided to
ssx_timer_create() is safe to use as a timer, and will silently modify
whatever memory is provided.

Return values other then SSX_OK (0) are errors; see \ref ssx_errors

\retval 0 Successful completion

\retval -SSX_INVALID_TIMER_AT_CREATE The \a timer is a null (0) pointer.
Create ( initialize ) a preemptible timer . \ param timer The SsxTimer to initialize . \ param callback The timer callback \ param arg Private data provided to the callback . Once created with ssx_timer_create () a timer can be scheduled with ssx_timer_schedule () or ssx_timer_schedule_absolute () which queues the timer in the kernel time queue . Timers can be cancelled by a call of ssx_timer_cancel () . Timers created with ssx_timer_create () are always run as noncritical interrupt handlers with interrupt preemption enabled . Timer callbacks are free to enter critical sections of any priorioty if required but must always exit with noncritical interrupts enabled . SSX has no way to know if an SsxTimer structure provided to ssx_timer_create () is safe to use as a timer and will silently modify whatever memory is provided . Return values other then SSX_OK ( 0 ) are errors ; see \ ref ssx_errors \ retval 0 Successful completion \ retval - SSX_INVALID_TIMER_AT_CREATE The \ a timer is a null ( 0 ) pointer .
int
ssx_timer_create(SsxTimer*         timer,
                 SsxTimerCallback callback,
                 void*             arg)
{
    return _ssx_timer_create(timer, callback, arg,
                             SSX_TIMER_CALLBACK_PREEMPTIBLE);
}
int ssx_timer_create ( SsxTimer * timer , SsxTimerCallback callback , void * arg ) { return _ssx_timer_create ( timer , callback , arg , SSX_TIMER_CALLBACK_PREEMPTIBLE ) ; }
Create (initialize) a preemptible timer.
Create ( initialize ) a preemptible timer .