mbed TLS  Version 2.9.0
SSL/TLS Library for the Embedded Space
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
timing.h File Reference

Data Structures

struct  mbedtls_timing_hr_time
 timer structure More...
 
struct  mbedtls_timing_delay_context
 Context for mbedtls_timing_set/get_delay() More...
 

Functions

unsigned long mbedtls_timing_hardclock (void)
 Return the CPU cycle counter value. More...
 
unsigned long mbedtls_timing_get_timer (struct mbedtls_timing_hr_time *val, int reset)
 Return the elapsed time in milliseconds. More...
 
void mbedtls_set_alarm (int seconds)
 Setup an alarm clock. More...
 
void mbedtls_timing_set_delay (void *data, uint32_t int_ms, uint32_t fin_ms)
 Set a pair of delays to watch (See mbedtls_timing_get_delay().) More...
 
int mbedtls_timing_get_delay (void *data)
 Get the status of delays (Memory helper: number of delays passed.) More...
 
int mbedtls_timing_self_test (int verbose)
 Checkup routine. More...
 

Variables

volatile int mbedtls_timing_alarmed
 

Description

Portable interface to timeouts and to the CPU cycle counter.


Data Structure Documentation

struct mbedtls_timing_hr_time

timer structure

Data Fields
unsigned char opaque[32]
struct mbedtls_timing_delay_context

Context for mbedtls_timing_set/get_delay()

Data Fields
uint32_t fin_ms
uint32_t int_ms
struct mbedtls_timing_hr_time timer

Function Documentation

void mbedtls_set_alarm ( int  seconds)

Setup an alarm clock.

Parameters
secondsdelay before the "mbedtls_timing_alarmed" flag is set (must be >=0)
Warning
Only one alarm at a time is supported. In a threaded context, this means one for the whole process, not one per thread.
int mbedtls_timing_get_delay ( void *  data)

Get the status of delays (Memory helper: number of delays passed.)

Parameters
dataPointer to timing data Must point to a valid mbedtls_timing_delay_context struct.
Returns
-1 if cancelled (fin_ms = 0), 0 if none of the delays are passed, 1 if only the intermediate delay is passed, 2 if the final delay is passed.
unsigned long mbedtls_timing_get_timer ( struct mbedtls_timing_hr_time val,
int  reset 
)

Return the elapsed time in milliseconds.

Parameters
valpoints to a timer structure
resetIf 0, query the elapsed time. Otherwise (re)start the timer.
Returns
Elapsed time since the previous reset in ms. When restarting, this is always 0.
Note
To initialize a timer, call this function with reset=1.
            Determining the elapsed time and resetting the timer is not
            atomic on all platforms, so after the sequence
            `{ get_timer(1); ...; time1 = get_timer(1); ...; time2 =
            get_timer(0) }` the value time1+time2 is only approximately
            the delay since the first reset.
unsigned long mbedtls_timing_hardclock ( void  )

Return the CPU cycle counter value.

Warning
This is only a best effort! Do not rely on this! In particular, it is known to be unreliable on virtual machines.
Note
This value starts at an unspecified origin and may wrap around.
int mbedtls_timing_self_test ( int  verbose)

Checkup routine.

Returns
0 if successful, or 1 if a test failed
void mbedtls_timing_set_delay ( void *  data,
uint32_t  int_ms,
uint32_t  fin_ms 
)

Set a pair of delays to watch (See mbedtls_timing_get_delay().)

Parameters
dataPointer to timing data. Must point to a valid mbedtls_timing_delay_context struct.
int_msFirst (intermediate) delay in milliseconds. The effect if int_ms > fin_ms is unspecified.
fin_msSecond (final) delay in milliseconds. Pass 0 to cancel the current delay.
Note
To set a single delay, either use mbedtls_timing_set_timer directly or use this function with int_ms == fin_ms.