/* * Copyright (c) 2018 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include #ifdef CONFIG_COVERAGE_GCOV #define STACKSZ (512 + CONFIG_TEST_EXTRA_STACK_SIZE) #else #define STACKSZ (512U) #endif void thread_inst_check(void const *argument) { osThreadId id = osThreadGetId(); zassert_true(id != NULL, "Failed getting ThreadId"); } osThreadDef(thread_inst_check, osPriorityNormal, 3, STACKSZ); ZTEST(thread_instance, test_thread_instances) { osThreadId id1, id2, id3, id4; osStatus status; id1 = osThreadCreate(osThread(thread_inst_check), NULL); zassert_true(id1 != NULL, "Failed creating thread_inst_check"); id2 = osThreadCreate(osThread(thread_inst_check), NULL); zassert_true(id2 != NULL, "Failed creating thread_inst_check"); id3 = osThreadCreate(osThread(thread_inst_check), NULL); zassert_true(id3 != NULL, "Failed creating thread_inst_check"); id4 = osThreadCreate(osThread(thread_inst_check), NULL); zassert_true(id4 == NULL, "Something wrong with thread instances"); status = osThreadTerminate(id2); zassert_true(status == osOK, "Error terminating thread_inst_check"); /* after terminating thread id2, when creating a new thread, * it should re-use the available thread instance of id2. */ id4 = osThreadCreate(osThread(thread_inst_check), NULL); zassert_true(id4 != NULL, "Failed creating thread_inst_check"); zassert_true(id2 == id4, "Error creating thread_inst_check"); } ZTEST_SUITE(thread_instance, NULL, NULL, NULL, NULL, NULL);