diff options
Diffstat (limited to 'c/src/ada-tests/sptests/sp07/sptest.adb')
-rw-r--r-- | c/src/ada-tests/sptests/sp07/sptest.adb | 151 |
1 files changed, 110 insertions, 41 deletions
diff --git a/c/src/ada-tests/sptests/sp07/sptest.adb b/c/src/ada-tests/sptests/sp07/sptest.adb index 5131fd57f8..2090e5cda7 100644 --- a/c/src/ada-tests/sptests/sp07/sptest.adb +++ b/c/src/ada-tests/sptests/sp07/sptest.adb @@ -10,7 +10,7 @@ -- -- -- --- COPYRIGHT (c) 1989-1997. +-- COPYRIGHT (c) 1989-2007. -- On-Line Applications Research Corporation (OAR). -- -- The license and distribution terms for this file may in @@ -28,6 +28,89 @@ with UNSIGNED32_IO; package body SPTEST is + type Task_Event_Type is ( + Created, + Deleted, + Restarted, + Started + ); + + type Task_Event is record + The_Event : Task_Event_Type; + Task1 : RTEMS.Unsigned32; + Task2 : RTEMS.Unsigned32; + end record; + + Task_Events : array (1 .. 10) of Task_Event; + Task_Events_Index : Natural := Task_Events'First; + + procedure Log_Task_Event ( + The_Event : in Task_Event_Type; + Task1 : in RTEMS.Unsigned32; + Task2 : in RTEMS.Unsigned32 + ) is + begin + if Task_Events_Index = Task_Events'Last then + RTEMS.Fatal_Error_Occurred ( 1 ); -- no other choice + else + Task_Events (Task_Events_Index).The_Event := The_Event; + Task_Events (Task_Events_Index).Task1 := Task1; + Task_Events (Task_Events_Index).Task2 := Task2; + Task_Events_Index := Task_Events_Index + 1; + end if; + end Log_Task_Event; + + procedure Flush_Task_Event_Log is + begin + for I in Task_Events'First .. Task_Events_Index - 1 loop + + case Task_Events (I).The_Event is + + when Created => + TEXT_IO.PUT( "TASKS_CREATE - " ); + TEST_SUPPORT.PUT_NAME( + SPTEST.TASK_NAME( Task_Events (I).Task1 ), + FALSE + ); + TEXT_IO.PUT_LINE( " - created." ); + + when Deleted => + TEXT_IO.PUT( "TASKS_DELETE - " ); + TEST_SUPPORT.PUT_NAME( + SPTEST.TASK_NAME( Task_Events (I).Task1 ), + FALSE + ); + + TEXT_IO.PUT( " deleting " ); + TEST_SUPPORT.PUT_NAME( + SPTEST.TASK_NAME( Task_Events (I).Task2 ), + TRUE + ); + + when Restarted => + TEXT_IO.PUT( "TASKS_RESTART - " ); + TEST_SUPPORT.PUT_NAME( + SPTEST.TASK_NAME( Task_Events (I).Task1 ), + FALSE + ); + TEXT_IO.PUT_LINE( " - restarted." ); + + when Started => + TEXT_IO.PUT( "TASKS_START - " ); + TEST_SUPPORT.PUT_NAME( + SPTEST.TASK_NAME( Task_Events (I).Task1 ), + FALSE + ); + TEXT_IO.PUT_LINE( " - started." ); + + end case; + end loop; + + -- Reset the events list + Task_Events_Index := Task_Events'First; + + end Flush_Task_Event_Log; + --PAGE -- -- TCB_To_ID @@ -146,6 +229,8 @@ package body SPTEST is RTEMS.TASK_RESTART( SPTEST.TASK_ID( 3 ), 0, STATUS ); TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_RESTART OF TA3" ); + Flush_Task_Event_Log; + RTEMS.TASK_SET_NOTE( SPTEST.TASK_ID( 1 ), 8, 4, STATUS ); TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SET_NOTE OF TA1" ); TEXT_IO.PUT( "INIT - task_set_note - set TA1's NOTEPAD_8" ); @@ -363,6 +448,8 @@ package body SPTEST is ) is begin + Flush_Task_Event_Log; + TEXT_IO.PUT_LINE( "TA4 - exitting task" ); end TASK_4; @@ -391,23 +478,22 @@ package body SPTEST is -- TASK_CREATE_EXTENSION -- - procedure TASK_CREATE_EXTENSION ( + function TASK_CREATE_EXTENSION ( UNUSED : in RTEMS.TCB_POINTER; CREATED_TASK : in RTEMS.TCB_POINTER - ) is + ) return RTEMS.Boolean is begin if TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( CREATED_TASK ) ) > 0 then - TEXT_IO.PUT( "TASKS_CREATE - " ); - TEST_SUPPORT.PUT_NAME( - SPTEST.TASK_NAME( - TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( CREATED_TASK ) ) - ), - FALSE + Log_Task_Event ( + Created, + TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( CREATED_TASK ) ), + 0 ); - TEXT_IO.PUT_LINE( "- created." ); end if; + return RTEMS.True; + end TASK_CREATE_EXTENSION; --PAGE @@ -421,23 +507,12 @@ package body SPTEST is ) is begin - if TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( RUNNING_TASK ) ) > 0 then - TEXT_IO.PUT( "TASKS_DELETE - " ); - TEST_SUPPORT.PUT_NAME( - SPTEST.TASK_NAME( - TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( RUNNING_TASK ) ) - ), - FALSE - ); - end if; - - if TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( DELETED_TASK ) ) > 0 then - TEXT_IO.PUT( "deleting " ); - TEST_SUPPORT.PUT_NAME( - SPTEST.TASK_NAME( - TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( DELETED_TASK ) ) - ), - TRUE + if TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( RUNNING_TASK ) ) > 0 and + TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( DELETED_TASK ) ) > 0 then + Log_Task_Event ( + Deleted, + TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( RUNNING_TASK ) ), + TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( DELETED_TASK ) ) ); end if; @@ -455,14 +530,11 @@ package body SPTEST is begin if TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( RESTARTED_TASK ) ) > 0 then - TEXT_IO.PUT( "TASKS_RESTART - " ); - TEST_SUPPORT.PUT_NAME( - SPTEST.TASK_NAME( - TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( RESTARTED_TASK ) ) - ), - FALSE + Log_Task_Event ( + Restarted, + TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( RESTARTED_TASK ) ), + 0 ); - TEXT_IO.PUT_LINE( " - restarted." ); end if; end TASK_RESTART_EXTENSION; @@ -479,14 +551,11 @@ package body SPTEST is begin if TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( STARTED_TASK ) ) > 0 then - TEXT_IO.PUT( "TASKS_START - " ); - TEST_SUPPORT.PUT_NAME( - SPTEST.TASK_NAME( - TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( STARTED_TASK ) ) - ), - FALSE + Log_Task_Event ( + Started, + TEST_SUPPORT.TASK_NUMBER( TCB_To_ID( STARTED_TASK ) ), + 0 ); - TEXT_IO.PUT_LINE( " - started." ); end if; end TASK_START_EXTENSION; |