Support for PC platform (#12)
* improvements for cross-platform compiling * moved tactility-core to libs/ * splitup improvements * remove git/gitmodules from freertos * better platformbetter platform checks * added build scripts * delete mbedtls * re-add mbedtls * fixes and improvements * added pc build * simplify build scripts * revert build scrpit * updated builds * fix for pc * fix for pc * fix for build
This commit is contained in:
committed by
GitHub
parent
c830c66063
commit
a94baf0d00
@@ -0,0 +1,136 @@
|
||||
/* BEGIN_HEADER */
|
||||
|
||||
/* This test module exercises the platform_* module. Since, depending on the
|
||||
* underlying operating system, the time routines are not always reliable,
|
||||
* this suite only performs very basic sanity checks of the timing API.
|
||||
*/
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#if defined(MBEDTLS_HAVE_TIME)
|
||||
#include "mbedtls/platform_time.h"
|
||||
|
||||
#if defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__) || \
|
||||
defined(__MINGW32__) || defined(_WIN64)
|
||||
#include <windows.h>
|
||||
#elif _POSIX_C_SOURCE >= 199309L
|
||||
#include <time.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
void sleep_ms(int milliseconds)
|
||||
{
|
||||
#if defined(_WIN32) || defined(WIN32) || defined(__CYGWIN__) || \
|
||||
defined(__MINGW32__) || defined(_WIN64)
|
||||
Sleep(milliseconds);
|
||||
#elif _POSIX_C_SOURCE >= 199309L
|
||||
struct timespec ts;
|
||||
ts.tv_sec = milliseconds / 1000;
|
||||
ts.tv_nsec = (milliseconds % 1000) * 1000000;
|
||||
nanosleep(&ts, NULL);
|
||||
#else
|
||||
usleep(milliseconds * 1000);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/* END_HEADER */
|
||||
|
||||
/* BEGIN_DEPENDENCIES */
|
||||
|
||||
/* END_DEPENDENCIES */
|
||||
|
||||
/* BEGIN_CASE depends_on:MBEDTLS_HAVE_TIME */
|
||||
void time_get_milliseconds()
|
||||
{
|
||||
mbedtls_ms_time_t current = mbedtls_ms_time();
|
||||
(void) current;
|
||||
/* This goto is added to avoid warnings from the generated code. */
|
||||
goto exit;
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE depends_on:MBEDTLS_HAVE_TIME */
|
||||
void time_get_seconds()
|
||||
{
|
||||
mbedtls_time_t current = mbedtls_time(NULL);
|
||||
(void) current;
|
||||
/* This goto is added to avoid warnings from the generated code. */
|
||||
goto exit;
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE depends_on:MBEDTLS_HAVE_TIME */
|
||||
void time_delay_milliseconds(int delay_ms)
|
||||
{
|
||||
mbedtls_ms_time_t current = mbedtls_ms_time();
|
||||
mbedtls_ms_time_t elapsed_ms;
|
||||
|
||||
/*
|
||||
* WARNING: DO NOT ENABLE THIS TEST. We keep the code here to document the
|
||||
* reason.
|
||||
*
|
||||
* Windows CI reports random test fail on platform-suite. It might
|
||||
* be caused by this case.
|
||||
*/
|
||||
sleep_ms(delay_ms);
|
||||
|
||||
elapsed_ms = mbedtls_ms_time() - current;
|
||||
TEST_ASSERT(elapsed_ms >= delay_ms && elapsed_ms < 4000 + delay_ms);
|
||||
/* This goto is added to avoid warnings from the generated code. */
|
||||
goto exit;
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE depends_on:MBEDTLS_HAVE_TIME */
|
||||
|
||||
/*
|
||||
* WARNING: DO NOT ENABLE THIS TEST. We keep the code here to document the
|
||||
* reason.
|
||||
*
|
||||
* The test often failed on the CI. See #1517. CI failures cannot be
|
||||
* completely avoided due to out-of-sync clock sources.
|
||||
*/
|
||||
void time_delay_seconds(int delay_secs)
|
||||
{
|
||||
mbedtls_time_t current = mbedtls_time(NULL);
|
||||
mbedtls_time_t elapsed_secs;
|
||||
|
||||
sleep_ms(delay_secs * 1000);
|
||||
|
||||
elapsed_secs = mbedtls_time(NULL) - current;
|
||||
|
||||
/*
|
||||
* `mbedtls_time()` was defined as c99 function `time()`, returns the number
|
||||
* of seconds since the Epoch. And it is affected by discontinuous changes
|
||||
* from automatic drift adjustment or time setting system call. The POSIX.1
|
||||
* specification for clock_settime says that discontinuous changes in
|
||||
* CLOCK_REALTIME should not affect `nanosleep()`.
|
||||
*
|
||||
* If discontinuous changes occur during `nanosleep()`, we will get
|
||||
* `elapsed_secs < delay_secs` for backward or `elapsed_secs > delay_secs`
|
||||
* for forward.
|
||||
*
|
||||
* The following tolerance windows cannot be guaranteed.
|
||||
* PLEASE DO NOT ENABLE IT IN CI TEST.
|
||||
*/
|
||||
TEST_ASSERT(elapsed_secs - delay_secs >= -1 &&
|
||||
elapsed_secs - delay_secs < 4);
|
||||
/* This goto is added to avoid warnings from the generated code. */
|
||||
goto exit;
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
/* BEGIN_CASE */
|
||||
void check_mbedtls_calloc_overallocation(intmax_t num, intmax_t size)
|
||||
{
|
||||
unsigned char *buf;
|
||||
buf = mbedtls_calloc((size_t) num, (size_t) size);
|
||||
/* Dummy usage of the pointer to prevent optimizing it */
|
||||
mbedtls_printf("calloc pointer : %p\n", buf);
|
||||
TEST_ASSERT(buf == NULL);
|
||||
|
||||
exit:
|
||||
mbedtls_free(buf);
|
||||
}
|
||||
/* END_CASE */
|
||||
Reference in New Issue
Block a user