timing.h File Reference

Portable interface to timeouts and to the CPU cycle counter. More...

#include "config.h"
#include <stdint.h>
Include dependency graph for timing.h:

Go to the source code of this file.

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.
unsigned long mbedtls_timing_get_timer (struct mbedtls_timing_hr_time *val, int reset)
 Return the elapsed time in milliseconds.
void mbedtls_set_alarm (int seconds)
 Setup an alarm clock.
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().).
int mbedtls_timing_get_delay (void *data)
 Get the status of delays (Memory helper: number of delays passed.).
int mbedtls_timing_self_test (int verbose)
 Checkup routine.

Variables

volatile int mbedtls_timing_alarmed

Detailed Description

Portable interface to timeouts and to the CPU cycle counter.

Definition in file timing.h.


Function Documentation

void mbedtls_set_alarm ( int  seconds  ) 

Setup an alarm clock.

Parameters:
seconds delay 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:
data Pointer 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:
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.
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:
data Pointer to timing data. Must point to a valid mbedtls_timing_delay_context struct.
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.
Note:
To set a single delay, either use mbedtls_timing_set_timer directly or use this function with int_ms == fin_ms.

Variable Documentation

volatile int mbedtls_timing_alarmed

Generated on 10 Aug 2020 for mbed TLS v2.7.16 by  doxygen 1.6.1