#include "test_main.h" static asr_thread_hand_t g_task = {0}; static asr_semaphore_t g_sem_taskexit_sync; static int should_not_reach=0; static void task0(void *arg) { asr_rtos_set_semaphore(&g_sem_taskexit_sync); while(1) { asr_rtos_delay_milliseconds(1000); } } /* task: print task name */ static void task1(void *arg) { asr_rtos_set_semaphore(&g_sem_taskexit_sync); while(1) { asr_rtos_delay_milliseconds(1000); } } /* task: create task key */ static void task2(void *arg) { asr_rtos_set_semaphore(&g_sem_taskexit_sync); while(1) { asr_rtos_delay_milliseconds(1000); } } /* task: set/get task-specific value */ static void task3(void *arg) { asr_rtos_set_semaphore(&g_sem_taskexit_sync); while(1) { asr_rtos_delay_milliseconds(1000); } } static void task4(void *arg) { OSStatus ret = 0; TEST_PRINT("enter task name task4"); if(g_task.thread != NULL) { printf("task4 exit!\n"); ret = asr_rtos_delete_thread(&g_task); if (ret == kNoErr) { g_task.thread = NULL; } } while(1) { should_not_reach++; } } #if (TEST_CONFIG_TASK_ENABLED > 0) CASE(asrosal_test_task, asrosal_1_006) { unsigned int stack_size = TEST_CONFIG_STACK_SIZE; OSStatus ret = 0; asr_thread_hand_t task = {0}; asr_rtos_init_semaphore(&g_sem_taskexit_sync, 0); ret = asr_rtos_create_thread(&task, TEST_CONFIG_TASK_PRIO, "task1", task1, stack_size, NULL); ASSERT_EQ(ret, kNoErr); asr_rtos_get_semaphore(&g_sem_taskexit_sync, -1); TEST_PRINT("task1 exit!"); asr_rtos_deinit_semaphore(&g_sem_taskexit_sync); asr_rtos_delete_thread(&task); } CASE(asrosal_test_task, asrosal_1_007) { unsigned int stack_size = TEST_CONFIG_STACK_SIZE; asr_thread_hand_t task = {0}; int ret = -1; asr_rtos_init_semaphore(&g_sem_taskexit_sync, 0); ret = asr_rtos_create_thread(&task, TEST_CONFIG_TASK_PRIO, "task1", task1, stack_size, NULL); ASSERT_EQ(ret, kNoErr); asr_rtos_get_semaphore(&g_sem_taskexit_sync, -1); TEST_PRINT("task1 exit!"); asr_rtos_deinit_semaphore(&g_sem_taskexit_sync); asr_rtos_delete_thread(&task); } CASE(asrosal_test_task, asrosal_1_008) { unsigned int stack_size = TEST_CONFIG_STACK_SIZE; int ret = -1; asr_thread_hand_t task = {0}; asr_rtos_init_semaphore(&g_sem_taskexit_sync, 0); ret = asr_rtos_create_thread(&task, TEST_CONFIG_TASK_PRIO, "asrosal_1_008_task2", task2, stack_size, NULL); ASSERT_EQ(ret, kNoErr); asr_rtos_get_semaphore(&g_sem_taskexit_sync, -1); TEST_PRINT("asrosal_1_008_task2 exit!"); asr_rtos_deinit_semaphore(&g_sem_taskexit_sync); asr_rtos_delete_thread(&task); } CASE(asrosal_test_task, asrosal_1_009) { unsigned int stack_size = TEST_CONFIG_STACK_SIZE; int ret = -1; asr_thread_hand_t task = {0}; asr_rtos_init_semaphore(&g_sem_taskexit_sync, 0); ret = asr_rtos_create_thread(&task, TEST_CONFIG_TASK_PRIO, "asrosal_1_009_task2", task2, stack_size, NULL); ASSERT_EQ(ret, kNoErr); asr_rtos_get_semaphore(&g_sem_taskexit_sync, -1); TEST_PRINT("task2 exit!"); asr_rtos_deinit_semaphore(&g_sem_taskexit_sync); asr_rtos_delete_thread(&task); } CASE(asrosal_test_task, asrosal_1_010) { unsigned int stack_size = TEST_CONFIG_STACK_SIZE; int ret = -1; asr_thread_hand_t task = {0}; asr_rtos_init_semaphore(&g_sem_taskexit_sync, 0); ret = asr_rtos_create_thread(&task, TEST_CONFIG_TASK_PRIO, "asrosal_1_010_task3", task3, stack_size, NULL); ASSERT_EQ(ret, kNoErr); asr_rtos_get_semaphore(&g_sem_taskexit_sync, -1); TEST_PRINT("task3 exit!"); asr_rtos_deinit_semaphore(&g_sem_taskexit_sync); asr_rtos_delete_thread(&task); } CASE(asrosal_test_task, asrosal_1_011) { unsigned int stack_size = TEST_CONFIG_STACK_SIZE; char task_name[32] = {0}; int ret = -1; int i = 0; asr_thread_hand_t task[TEST_CONFIG_MAX_TASK_COUNT] = {{0}}; asr_rtos_init_semaphore(&g_sem_taskexit_sync, 0); for(i=0; i 0) ADD_CASE(asrosal_test_task, asrosal_1_006), ADD_CASE(asrosal_test_task, asrosal_1_007), ADD_CASE(asrosal_test_task, asrosal_1_008), ADD_CASE(asrosal_test_task, asrosal_1_009), ADD_CASE(asrosal_test_task, asrosal_1_010), ADD_CASE(asrosal_test_task, asrosal_1_011), ADD_CASE(asrosal_test_task, asrosal_1_012), ADD_CASE(asrosal_test_task, asrosal_1_013), #endif ADD_CASE_NULL };