diff options
Diffstat (limited to 'test/smp/regression/threadx_thread_priority_change.c')
| -rw-r--r-- | test/smp/regression/threadx_thread_priority_change.c | 90 |
1 files changed, 45 insertions, 45 deletions
diff --git a/test/smp/regression/threadx_thread_priority_change.c b/test/smp/regression/threadx_thread_priority_change.c index af65c5e0..63863544 100644 --- a/test/smp/regression/threadx_thread_priority_change.c +++ b/test/smp/regression/threadx_thread_priority_change.c @@ -49,7 +49,7 @@ void test_control_return(UINT status); VOID _tx_thread_smp_simple_priority_change(TX_THREAD *thread_ptr,UINT new_priority); -/* This test routine is used to get a thread of a non ready state. */ +/* This test routine is used to get a thread of a non ready state. */ void suspend_thread(void) { @@ -57,7 +57,7 @@ TX_INTERRUPT_SAVE_AREA TX_THREAD *thread_ptr; - + /* Setup the thread pointer. */ thread_ptr = &thread_0; @@ -104,7 +104,7 @@ UINT saved_preempt_disable; #ifndef TX_NOT_INTERRUPTABLE /* Determine if we have the interrupt condition we are looking for. */ - if ((thread_3.tx_thread_priority == 6) && + if ((thread_3.tx_thread_priority == 6) && (thread_3.tx_thread_state == TX_READY) && (_tx_thread_priority_list[6] != &thread_3) && (thread_3_counter > 100)) @@ -112,16 +112,16 @@ UINT saved_preempt_disable; /* Save the preempt disable flag. */ saved_preempt_disable = _tx_thread_preempt_disable; - + /* Clear the preempt disable flag to ensure the API works correctly. */ _tx_thread_preempt_disable = 0; /* Suspend the thread to generate the condition. */ tx_thread_suspend(&thread_3); - + /* Restore the preempt disable flag. */ _tx_thread_preempt_disable = saved_preempt_disable; - + /* Done trying to generate this test condition. */ test_isr_dispatch = TX_NULL; } @@ -130,7 +130,7 @@ UINT saved_preempt_disable; /* Can't get the interrupt inside the code wit TX_NOT_INTERRUPTABLE defined, so simply stop after thread_3_counter > 100. */ if (thread_3_counter > 100) { - + /* Done trying to generate this test condition. */ test_isr_dispatch = TX_NULL; } @@ -155,8 +155,8 @@ CHAR *pointer; /* Put system definition stuff in here, e.g. thread creates and other assorted create information. */ - status = tx_thread_create(&thread_0, "thread 0", thread_0_entry, 1, - pointer, TEST_STACK_SIZE_PRINTF, + status = tx_thread_create(&thread_0, "thread 0", thread_0_entry, 1, + pointer, TEST_STACK_SIZE_PRINTF, 16, 16, TX_NO_TIME_SLICE, TX_AUTO_START); pointer = pointer + TEST_STACK_SIZE_PRINTF; @@ -168,8 +168,8 @@ CHAR *pointer; test_control_return(1); } - status = tx_thread_create(&thread_1, "thread 1", thread_1_entry, 1, - pointer, TEST_STACK_SIZE_PRINTF, + status = tx_thread_create(&thread_1, "thread 1", thread_1_entry, 1, + pointer, TEST_STACK_SIZE_PRINTF, 22, 22, TX_NO_TIME_SLICE, TX_AUTO_START); pointer = pointer + TEST_STACK_SIZE_PRINTF; @@ -181,20 +181,20 @@ CHAR *pointer; test_control_return(1); } - status = tx_thread_create(&thread_2, "thread 2", thread_2_entry, 2, - pointer, TEST_STACK_SIZE_PRINTF, + status = tx_thread_create(&thread_2, "thread 2", thread_2_entry, 2, + pointer, TEST_STACK_SIZE_PRINTF, 30, 1, TX_NO_TIME_SLICE, TX_AUTO_START); pointer = pointer + TEST_STACK_SIZE_PRINTF; - status += tx_thread_create(&thread_3, "thread 3", thread_3_entry, 3, - pointer, TEST_STACK_SIZE_PRINTF, + status += tx_thread_create(&thread_3, "thread 3", thread_3_entry, 3, + pointer, TEST_STACK_SIZE_PRINTF, 5, 5, TX_NO_TIME_SLICE, TX_DONT_START); pointer = pointer + TEST_STACK_SIZE_PRINTF; - status += tx_thread_create(&thread_4, "thread 4", thread_4_entry, 4, - pointer, TEST_STACK_SIZE_PRINTF, + status += tx_thread_create(&thread_4, "thread 4", thread_4_entry, 4, + pointer, TEST_STACK_SIZE_PRINTF, 6, 6, TX_NO_TIME_SLICE, TX_DONT_START); pointer = pointer + TEST_STACK_SIZE_PRINTF; - status += tx_thread_create(&thread_5, "thread 5", thread_5_entry, 5, - pointer, TEST_STACK_SIZE_PRINTF, + status += tx_thread_create(&thread_5, "thread 5", thread_5_entry, 5, + pointer, TEST_STACK_SIZE_PRINTF, 16, 15, TX_NO_TIME_SLICE, TX_DONT_START); pointer = pointer + TEST_STACK_SIZE_PRINTF; @@ -232,11 +232,11 @@ TX_THREAD *temp_thread; /* Increment thread 0 counter. */ thread_0_counter++; - /* Change priority to 22, to match that of the next highest priority ready thread. - This is to test the update of the priority list when a thread is moved to a + /* Change priority to 22, to match that of the next highest priority ready thread. + This is to test the update of the priority list when a thread is moved to a priority with already ready threads. */ status = tx_thread_priority_change(&thread_0, 22, &old_priority); - + /* Check status, return priority, and run count of other thread. */ if ((status != TX_SUCCESS) || (old_priority != 16) || (thread_1_counter != 0)) { @@ -247,7 +247,7 @@ TX_THREAD *temp_thread; } /* Restore original priority. */ - tx_thread_priority_change(&thread_0, old_priority, &old_priority); + tx_thread_priority_change(&thread_0, old_priority, &old_priority); /* See if we can change priority of this thread. */ status = tx_thread_priority_change(&thread_0, 7, &old_priority); @@ -285,7 +285,7 @@ TX_THREAD *temp_thread; test_control_return(1); } - /* Thread 1 should have run already... Raise this threads priority + /* Thread 1 should have run already... Raise this threads priority back up. */ status = tx_thread_priority_change(&thread_0, 8, &old_priority); @@ -345,10 +345,10 @@ TX_THREAD *temp_thread; printf("ERROR #11\n"); test_control_return(1); } - + /* Now thread 1 should be suspended. Let's change thread 0's priority and make sure thread 2 doesn't run yet! */ status = tx_thread_priority_change(&thread_0, 7, &old_priority); - + /* Check status, return priority, and run count of other thread. */ if ((status != TX_SUCCESS) || (old_priority != 8) || (thread_1_counter != 2) || (thread_2_counter != 0)) { @@ -357,13 +357,13 @@ TX_THREAD *temp_thread; printf("ERROR #12\n"); test_control_return(1); } - + /* Now resume thread 1, it won't run because it's priority is less than this thread. */ status = tx_thread_resume(&thread_1); - + /* Change the priority of thread 1 - the non executing thread to test that path. */ status += tx_thread_priority_change(&thread_1, 23, &old_priority); - + /* Check status, return priority, and run count of other thread. */ if ((status != TX_SUCCESS) || (old_priority != 7) || (thread_1_counter != 2) || (thread_2_counter != 0)) { @@ -376,7 +376,7 @@ TX_THREAD *temp_thread; #ifndef TX_DISABLE_PREEMPTION_THRESHOLD /* Now setup the preemption-threshold for thread 1. */ status = tx_thread_preemption_change(&thread_1, 14, &old_threshold); - + /* Check status, return priority, and run count of other thread. */ if ((status != TX_SUCCESS) || (old_threshold != 23) || (thread_1_counter != 2) || (thread_2_counter != 0)) { @@ -385,13 +385,13 @@ TX_THREAD *temp_thread; printf("ERROR #14\n"); test_control_return(1); } - + /* Resume a higher priority preemption-threshold thread. */ status = tx_thread_resume(&thread_5); /* Now lower this thread's priority. */ status += tx_thread_priority_change(&thread_0, 15, &old_priority); - + /* Check status, return priority, and run count of other thread. */ if ((status != TX_SUCCESS) || (old_priority != 7) || (thread_1_counter != 2) || (thread_2_counter != 0) || (thread_5_counter != 0)) { @@ -413,26 +413,26 @@ TX_THREAD *temp_thread; /* Suspend thread 0. */ suspend_thread(); - + /* Resume thread 0. */ tx_thread_resume(&thread_0); - + /* Change priority to get avoid the reset of the priority list. */ tx_thread_priority_change(&thread_0, 16, &old_priority); - + /* Move the priority back so we have some room to test. */ tx_thread_priority_change(&thread_0, 7, &old_priority); - + /* Now create the invalid core index situation. */ priority_change_extension_selection = 1; tx_thread_priority_change(&thread_0, 8, &old_priority); thread_0.tx_thread_smp_core_mapped = 0; - + /* Now fiddle with the original priority to satisfy that branch. */ priority_change_extension_selection = 2; tx_thread_priority_change(&thread_0, 9, &old_priority); _tx_thread_execute_ptr[0] = &thread_0; - + /* Create the condition where original pt thread is same as the current thread. */ temp_thread = _tx_thread_preemption__threshold_scheduled; priority_change_extension_selection = 3; @@ -446,11 +446,11 @@ TX_THREAD *temp_thread; temp_thread = _tx_thread_preemption__threshold_scheduled; priority_change_extension_selection = 4; tx_thread_priority_change(&thread_0, 15, &old_priority); - _tx_thread_preemption__threshold_scheduled = temp_thread; + _tx_thread_preemption__threshold_scheduled = temp_thread; /* Decrement the preempt disable count. */ _tx_thread_preempt_disable--; - + /* Restore interrupts. */ TX_RESTORE @@ -458,7 +458,7 @@ TX_THREAD *temp_thread; new priority is less than the inheritance priority. */ thread_0.tx_thread_inherit_priority = 0; _tx_thread_smp_simple_priority_change(&thread_0, 16); - + /* Successful test. */ printf("SUCCESS!\n"); test_control_return(0); @@ -484,12 +484,12 @@ static void thread_2_entry(ULONG thread_input) while(1) { - + /* This thread should never run! */ /* Increment the thread counter. */ thread_2_counter++; - + /* Self suspend. */ tx_thread_suspend(&thread_2); } @@ -520,12 +520,12 @@ UINT loop; /* Raise priority of thread 3 for code coverage. */ tx_thread_priority_change(&thread_3, 6, &old_priority); tx_thread_priority_change(&thread_3, 5, &old_priority); - + /* Check to see if thread 4 has run... it should not have executed yet. If it does, set the thread_1_counter to indicate an error! */ if (thread_4_counter) thread_1_counter++; - + } while (test_isr_dispatch); } |
