Add milliseconds time function
We provide windows and posix implementation for it. With MBEDTLS_PLATFORM_MS_TIME_ALT, user can provide their own implementation. Signed-off-by: Jerry Yu <jerry.h.yu@arm.com>
This commit is contained in:
parent
eba0ab5db2
commit
38257491aa
5 changed files with 58 additions and 1 deletions
|
@ -454,6 +454,12 @@
|
||||||
#error "MBEDTLS_PLATFORM_MS_TIME_TYPE_MACRO defined, but not all prerequisites"
|
#error "MBEDTLS_PLATFORM_MS_TIME_TYPE_MACRO defined, but not all prerequisites"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_PLATFORM_MS_TIME_ALT) && \
|
||||||
|
( !defined(MBEDTLS_PLATFORM_C) || \
|
||||||
|
!defined(MBEDTLS_HAVE_TIME) )
|
||||||
|
#error "MBEDTLS_PLATFORM_MS_TIME_ALT defined, but not all prerequisites"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) &&\
|
#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) &&\
|
||||||
( !defined(MBEDTLS_PLATFORM_C) ||\
|
( !defined(MBEDTLS_PLATFORM_C) ||\
|
||||||
!defined(MBEDTLS_HAVE_TIME) )
|
!defined(MBEDTLS_HAVE_TIME) )
|
||||||
|
|
|
@ -234,6 +234,7 @@
|
||||||
//#define MBEDTLS_PLATFORM_VSNPRINTF_ALT
|
//#define MBEDTLS_PLATFORM_VSNPRINTF_ALT
|
||||||
//#define MBEDTLS_PLATFORM_NV_SEED_ALT
|
//#define MBEDTLS_PLATFORM_NV_SEED_ALT
|
||||||
//#define MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT
|
//#define MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT
|
||||||
|
//#define MBEDTLS_PLATFORM_MS_TIME_ALT
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \def MBEDTLS_DEPRECATED_WARNING
|
* \def MBEDTLS_DEPRECATED_WARNING
|
||||||
|
|
|
@ -45,6 +45,16 @@ typedef MBEDTLS_PLATFORM_MS_TIME_TYPE_MACRO mbedtls_ms_time_t;
|
||||||
typedef signed long long mbedtls_ms_time_t;
|
typedef signed long long mbedtls_ms_time_t;
|
||||||
#endif /* MBEDTLS_PLATFORM_MS_TIME_TYPE_MACRO */
|
#endif /* MBEDTLS_PLATFORM_MS_TIME_TYPE_MACRO */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Get time in milliseconds.
|
||||||
|
*
|
||||||
|
* \return Current time in milliseconds
|
||||||
|
*
|
||||||
|
* \note If MBEDTLS_PLATFORM_MS_TIME_ALT defined, users can provide their own
|
||||||
|
* implementation.
|
||||||
|
*/
|
||||||
|
mbedtls_ms_time_t mbedtls_ms_time(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The function pointers for time
|
* The function pointers for time
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -165,3 +165,43 @@ extern inline void mbedtls_put_unaligned_uint32(void *p, uint32_t x);
|
||||||
extern inline uint64_t mbedtls_get_unaligned_uint64(const void *p);
|
extern inline uint64_t mbedtls_get_unaligned_uint64(const void *p);
|
||||||
|
|
||||||
extern inline void mbedtls_put_unaligned_uint64(void *p, uint64_t x);
|
extern inline void mbedtls_put_unaligned_uint64(void *p, uint64_t x);
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_HAVE_TIME) && !defined(MBEDTLS_PLATFORM_MS_TIME_ALT)
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
|
#if !defined(_WIN32) && (defined(unix) || \
|
||||||
|
defined(__unix) || defined(__unix__) || (defined(__APPLE__) && \
|
||||||
|
defined(__MACH__)))
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif /* !_WIN32 && (unix || __unix || __unix__ ||
|
||||||
|
* (__APPLE__ && __MACH__)) */
|
||||||
|
#if (defined(_POSIX_VERSION) && _POSIX_VERSION >= 199309L)
|
||||||
|
mbedtls_ms_time_t mbedtls_ms_time(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct timespec tv;
|
||||||
|
mbedtls_ms_time_t current_ms;
|
||||||
|
|
||||||
|
ret = clock_gettime(CLOCK_REALTIME, &tv);
|
||||||
|
if (ret) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
current_ms = tv.tv_sec;
|
||||||
|
|
||||||
|
return current_ms*1000 + tv.tv_nsec / 1000000;
|
||||||
|
}
|
||||||
|
#elif defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__) || \
|
||||||
|
defined(__MINGW32__) || defined(_WIN64)
|
||||||
|
#include <windows.h>
|
||||||
|
mbedtls_ms_time_t mbedtls_ms_time(void)
|
||||||
|
{
|
||||||
|
SYSTEMTIME st;
|
||||||
|
|
||||||
|
GetSystemTime(&st);
|
||||||
|
return time(NULL)*1000LL + st.wMilliseconds;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#error "No mbedtls_ms_time available"
|
||||||
|
#endif
|
||||||
|
#endif /* MBEDTLS_HAVE_TIME && !MBEDTLS_PLATFORM_MS_TIME_ALT */
|
||||||
|
|
|
@ -229,7 +229,7 @@ def is_seamless_alt(name):
|
||||||
Exclude alternative implementations of library functions since they require
|
Exclude alternative implementations of library functions since they require
|
||||||
an implementation of the relevant functions and an xxx_alt.h header.
|
an implementation of the relevant functions and an xxx_alt.h header.
|
||||||
"""
|
"""
|
||||||
if name == 'MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT':
|
if name in ('MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT', 'MBEDTLS_PLATFORM_MS_TIME_ALT'):
|
||||||
# Similar to non-platform xxx_ALT, requires platform_alt.h
|
# Similar to non-platform xxx_ALT, requires platform_alt.h
|
||||||
return False
|
return False
|
||||||
return name.startswith('MBEDTLS_PLATFORM_')
|
return name.startswith('MBEDTLS_PLATFORM_')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue