File timing.h
Portable interface to timeouts and to the CPU cycle counter.
Functions
-
unsigned long mbedtls_timing_hardclock(void)
Return the CPU cycle counter value.
Note
This value starts at an unspecified origin and may wrap around.
Warning
This is only a best effort! Do not rely on this! In particular, it is known to be unreliable on virtual machines.
-
unsigned long mbedtls_timing_get_timer(struct mbedtls_timing_hr_time *val, int reset)
Return the elapsed time in milliseconds.
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.- Parameters
val – points to a timer structure
reset – If 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.
-
void mbedtls_set_alarm(int seconds)
Setup an alarm clock.
Warning
Only one alarm at a time is supported. In a threaded context, this means one for the whole process, not one per thread.
- Parameters
seconds – delay before the “mbedtls_timing_alarmed” flag is set (must be >=0)
-
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().)Note
To set a single delay, either use
mbedtls_timing_set_timerdirectly or use this function with int_ms == fin_ms.- Parameters
data – Pointer to timing data. Must point to a valid
mbedtls_timing_delay_contextstruct.int_ms – First (intermediate) delay in milliseconds. The effect if int_ms > fin_ms is unspecified.
fin_ms – Second (final) delay in milliseconds. Pass 0 to cancel the current delay.
-
int mbedtls_timing_get_delay(void *data)
Get the status of delays (Memory helper: number of delays passed.)
- Parameters
data – Pointer to timing data Must point to a valid
mbedtls_timing_delay_contextstruct.- 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.
-
int mbedtls_timing_self_test(int verbose)
Checkup routine.
- Returns
0 if successful, or 1 if a test failed
Variables
-
int mbedtls_timing_alarmed