Skip to content

Commit 793d716

Browse files
pan-Mika Karjalainen
authored andcommitted
Use a SingletonPtr for the Timeout object in utest_shim.
Makes sure to initialize it, otherwize, it might be initialized in interrupt context.
1 parent 783466e commit 793d716

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

features/frameworks/utest/source/utest_shim.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,7 @@ static volatile utest_v1_harness_callback_t minimal_callback;
6666
static volatile utest_v1_harness_callback_t ticker_callback;
6767

6868
// Timeout object used to control the scheduling of test case callbacks
69-
static Timeout& utest_timeout_object() {
70-
static Timeout timeout;
71-
return timeout;
72-
}
69+
SingletonPtr<Timeout> utest_timeout_object;
7370

7471
static void ticker_handler()
7572
{
@@ -80,7 +77,9 @@ static void ticker_handler()
8077
static int32_t utest_us_ticker_init()
8178
{
8279
UTEST_LOG_FUNCTION();
83-
// Ticker scheduler does not require any initialisation so return immediately
80+
// initialize the Timeout object to makes sure it is not initialized in
81+
// interrupt context.
82+
utest_timeout_object.get();
8483
return 0;
8584
}
8685
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
9190
if (delay_ms) {
9291
ticker_callback = callback;
9392
// fire the interrupt in 1000us * delay_ms
94-
utest_timeout_object().attach_us(ticker_handler, delay_us);
93+
utest_timeout_object->attach_us(ticker_handler, delay_us);
9594

9695
}
9796
else {
@@ -105,7 +104,7 @@ static int32_t utest_us_ticker_cancel(void *handle)
105104
{
106105
UTEST_LOG_FUNCTION();
107106
(void) handle;
108-
utest_timeout_object().detach();
107+
utest_timeout_object->detach();
109108
return 0;
110109
}
111110
static int32_t utest_us_ticker_run()

0 commit comments

Comments
 (0)