diff options
| author | Shell <[email protected]> | 2023-07-25 14:07:44 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-07-25 14:07:44 +0800 |
| commit | acfa74f078b23d670ad04c3a2aa9cec5fbcf5afe (patch) | |
| tree | 590ae17b763a050d32bd326da2dc6ce7155bcde0 /examples/utest | |
| parent | 0a6aaf12ad6801d6bd5caca82edcaca9977f5ff6 (diff) | |
[libcpu/arm] fix race condition with ldrex,strex (#7842)
Signed-off-by: Shell <[email protected]>
Diffstat (limited to 'examples/utest')
| -rw-r--r-- | examples/utest/testcases/kernel/atomic_tc.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/examples/utest/testcases/kernel/atomic_tc.c b/examples/utest/testcases/kernel/atomic_tc.c index a83c05f730..88a883916c 100644 --- a/examples/utest/testcases/kernel/atomic_tc.c +++ b/examples/utest/testcases/kernel/atomic_tc.c @@ -134,10 +134,11 @@ static void ture_entry(void *parameter) static void test_atomic_add(void) { rt_thread_t thread; - int i; + size_t i; sem_t = rt_sem_create("atomic_sem", 0, RT_IPC_FLAG_PRIO); - count = 0; + rt_atomic_store(&count, 0); + thread = rt_thread_create("t1", ture_entry, RT_NULL, THREAD_STACKSIZE, THREAD_PRIORITY, THREAD_TIMESLICE); rt_thread_startup(thread); thread = rt_thread_create("t2", ture_entry, RT_NULL, THREAD_STACKSIZE, THREAD_PRIORITY, THREAD_TIMESLICE); @@ -149,7 +150,8 @@ static void test_atomic_add(void) { rt_sem_take(sem_t, RT_WAITING_FOREVER); } - uassert_true(count == 3000000); + i = rt_atomic_load(&count); + uassert_true(i == 3000000); } static rt_err_t utest_tc_init(void) |
