mirror of https://github.com/ARMmbed/mbed-os.git
Use a SingletonPtr for the Timeout object in utest_shim.
Makes sure to initialize it, otherwize, it might be initialized in interrupt context.pull/2714/head
parent
3aeba87f41
commit
8a94c85eb0
|
@ -66,10 +66,7 @@ static volatile utest_v1_harness_callback_t minimal_callback;
|
||||||
static volatile utest_v1_harness_callback_t ticker_callback;
|
static volatile utest_v1_harness_callback_t ticker_callback;
|
||||||
|
|
||||||
// Timeout object used to control the scheduling of test case callbacks
|
// Timeout object used to control the scheduling of test case callbacks
|
||||||
static Timeout& utest_timeout_object() {
|
SingletonPtr<Timeout> utest_timeout_object;
|
||||||
static Timeout timeout;
|
|
||||||
return timeout;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ticker_handler()
|
static void ticker_handler()
|
||||||
{
|
{
|
||||||
|
@ -80,7 +77,9 @@ static void ticker_handler()
|
||||||
static int32_t utest_us_ticker_init()
|
static int32_t utest_us_ticker_init()
|
||||||
{
|
{
|
||||||
UTEST_LOG_FUNCTION();
|
UTEST_LOG_FUNCTION();
|
||||||
// Ticker scheduler does not require any initialisation so return immediately
|
// initialize the Timeout object to makes sure it is not initialized in
|
||||||
|
// interrupt context.
|
||||||
|
utest_timeout_object.get();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static void *utest_us_ticker_post(const utest_v1_harness_callback_t callback, timestamp_t delay_ms)
|
static void *utest_us_ticker_post(const utest_v1_harness_callback_t callback, timestamp_t delay_ms)
|
||||||
|
@ -91,7 +90,7 @@ static void *utest_us_ticker_post(const utest_v1_harness_callback_t callback, ti
|
||||||
if (delay_ms) {
|
if (delay_ms) {
|
||||||
ticker_callback = callback;
|
ticker_callback = callback;
|
||||||
// fire the interrupt in 1000us * delay_ms
|
// fire the interrupt in 1000us * delay_ms
|
||||||
utest_timeout_object().attach_us(ticker_handler, delay_us);
|
utest_timeout_object->attach_us(ticker_handler, delay_us);
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -105,7 +104,7 @@ static int32_t utest_us_ticker_cancel(void *handle)
|
||||||
{
|
{
|
||||||
UTEST_LOG_FUNCTION();
|
UTEST_LOG_FUNCTION();
|
||||||
(void) handle;
|
(void) handle;
|
||||||
utest_timeout_object().detach();
|
utest_timeout_object->detach();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static int32_t utest_us_ticker_run()
|
static int32_t utest_us_ticker_run()
|
||||||
|
|
Loading…
Reference in New Issue