⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sptest.adb

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 ADB
📖 第 1 页 / 共 5 页
字号:
----  SPTEST / BODY----  DESCRIPTION:----  This package is the implementation of Test 9 of the RTEMS--  Single Processor Test Suite.----  DEPENDENCIES: ----  ----  COPYRIGHT (c) 1989-1997.--  On-Line Applications Research Corporation (OAR).----  The license and distribution terms for this file may in--  the file LICENSE in this distribution or at--  http://www.rtems.com/license/LICENSE.----  $Id: sptest.adb,v 1.7.2.2 2003/09/04 18:43:37 joel Exp $--with INTERFACES; use INTERFACES;with RTEMS;with TEST_SUPPORT;with TEXT_IO;package body SPTEST is--PAGE-- --  INIT--   procedure INIT (      ARGUMENT : in     RTEMS.TASK_ARGUMENT   ) is      STATUS : RTEMS.STATUS_CODES;   begin      TEXT_IO.NEW_LINE( 2 );      TEXT_IO.PUT_LINE( "*** TEST 9 ***" );      SPTEST.TASK_NAME( 1 )   := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );      SPTEST.TASK_NAME( 2 )   := RTEMS.BUILD_NAME(  'T', 'A', '2', ' ' );      SPTEST.TASK_NAME( 3 )   := RTEMS.BUILD_NAME(  'T', 'A', '3', ' ' );      SPTEST.TASK_NAME( 4 )   := RTEMS.BUILD_NAME(  'T', 'A', '4', ' ' );      SPTEST.TASK_NAME( 5 )   := RTEMS.BUILD_NAME(  'T', 'A', '5', ' ' );      SPTEST.TASK_NAME( 6 )   := RTEMS.BUILD_NAME(  'T', 'A', '6', ' ' );      SPTEST.TASK_NAME( 7 )   := RTEMS.BUILD_NAME(  'T', 'A', '7', ' ' );      SPTEST.TASK_NAME( 8 )   := RTEMS.BUILD_NAME(  'T', 'A', '8', ' ' );      SPTEST.TASK_NAME( 9 )   := RTEMS.BUILD_NAME(  'T', 'A', '9', ' ' );      SPTEST.TASK_NAME( 10 )  := RTEMS.BUILD_NAME(  'T', 'A', 'A', ' ' );      SPTEST.TIMER_NAME( 1 )   := RTEMS.BUILD_NAME(  'T', 'M', '1', ' ' );      SPTEST.SEMAPHORE_NAME( 1 ) := RTEMS.BUILD_NAME( 'S', 'M', '1', ' ' );      SPTEST.SEMAPHORE_NAME( 2 ) := RTEMS.BUILD_NAME( 'S', 'M', '2', ' ' );      SPTEST.SEMAPHORE_NAME( 3 ) := RTEMS.BUILD_NAME( 'S', 'M', '3', ' ' );      SPTEST.QUEUE_NAME( 1 )     := RTEMS.BUILD_NAME( 'M', 'Q', '1', ' ' );      SPTEST.QUEUE_NAME( 2 )     := RTEMS.BUILD_NAME( 'M', 'Q', '2', ' ' );      SPTEST.PARTITION_NAME( 1 ) := RTEMS.BUILD_NAME( 'P', 'T', '1', ' ' );      SPTEST.REGION_NAME( 1 )    := RTEMS.BUILD_NAME( 'R', 'N', '1', ' ' );      SPTEST.PORT_NAME( 1 )      := RTEMS.BUILD_NAME( 'D', 'P', '1', ' ' );      SPTEST.PERIOD_NAME( 1 )    := RTEMS.BUILD_NAME( 'T', 'M', '1', ' ' );--      RTEMS.TASK_CREATE(--         SPTEST.TASK_NAME( 1 ),--         4,--         10,--         RTEMS.DEFAULT_MODES,--         RTEMS.DEFAULT_ATTRIBUTES,--         SPTEST.TASK_ID( 1 ),--         STATUS--      );--       TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(--          STATUS,--          RTEMS.INVALID_SIZE,--          "TASK_CREATE WITH ILLEGAL STACK SIZE"--       );      TEXT_IO.PUT_LINE( "INIT - task_create - INVALID_SIZE -- NOT CHECKED" );      RTEMS.TASK_CREATE(         SPTEST.TASK_NAME( 1 ),         0,         2048,         RTEMS.DEFAULT_MODES,         RTEMS.DEFAULT_ATTRIBUTES,         SPTEST.TASK_ID( 1 ),         STATUS      );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_PRIORITY,         "TASK_CREATE WITH ILLEGAL PRIORITY"      );      TEXT_IO.PUT_LINE( "INIT - task_create - INVALID_PRIORITY" );      RTEMS.TASK_CREATE(         SPTEST.TASK_NAME( 1 ),         4,         2048,         RTEMS.DEFAULT_MODES,         RTEMS.DEFAULT_ATTRIBUTES,         SPTEST.TASK_ID( 1 ),         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );      RTEMS.TASK_RESTART(         SPTEST.TASK_ID( 1 ),         0,         STATUS      );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INCORRECT_STATE,         "TASK_RESTART OF DORMANT TASK"      );      TEXT_IO.PUT_LINE( "INIT - task_restart - INCORRECT_STATE" );      RTEMS.TASK_START(         SPTEST.TASK_ID( 1 ),         SPTEST.TASK_1'ACCESS,         0,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );   end INIT;--PAGE-- --  DELAYED_SUBPROGRAM--   procedure DELAYED_SUBPROGRAM (      IGNORED_ID      : in     RTEMS.ID;      IGNORED_ADDRESS : in     RTEMS.ADDRESS   ) is   begin      NULL;   end DELAYED_SUBPROGRAM;--PAGE-- --  SERVICE_ROUTINE--   procedure SERVICE_ROUTINE (      IGNORED : in     RTEMS.VECTOR_NUMBER   ) is   begin      NULL;   end SERVICE_ROUTINE;--PAGE-- --  SCREEN_1--   procedure SCREEN_1   is      NOTEPAD_VALUE     : RTEMS.UNSIGNED32;      SELF_ID           : RTEMS.ID;      PREVIOUS_PRIORITY : RTEMS.TASK_PRIORITY;      STATUS            : RTEMS.STATUS_CODES;   begin      RTEMS.TASK_DELETE( 100, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_ID,         "TASK_DELETE WITH ILLEGAL ID"      );      TEXT_IO.PUT_LINE( "TA1 - task_delete - INVALID_ID" );--      RTEMS.TASK_GET_NOTE( RTEMS.SELF, --                           RTEMS.NOTEPAD_INDEX'LAST + 10, --                           NOTEPAD_VALUE, --                           STATUS --      );--      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(--         STATUS,--         RTEMS.INVALID_NUMBER,--         "TASK_GET_NOTE WITH ILLEGAL NOTEPAD"--      );--      TEXT_IO.PUT_LINE( "TA1 - task_get_note - INVALID_NUMBER" );      TEXT_IO.PUT_LINE(         "TA1 - task_get_note - INVALID_NUMBER -- constraint error"      );      RTEMS.TASK_GET_NOTE(          100,          RTEMS.NOTEPAD_INDEX'LAST,          NOTEPAD_VALUE,          STATUS       );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_ID,         "TASK_GET_NOTE WITH ILLEGAL ID"      );      TEXT_IO.PUT_LINE( "TA1 - task_get_note - INVALID_ID" );      RTEMS.TASK_IDENT(         RTEMS.SELF,         RTEMS.SEARCH_ALL_NODES,          SELF_ID,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF SELF" );      if SELF_ID /= SPTEST.TASK_ID( 1 ) then         TEXT_IO.PUT_LINE( "ERROR - task_ident - incorrect ID returned!" );         RTEMS.SHUTDOWN_EXECUTIVE( 0 );      end if;      TEXT_IO.PUT_LINE(         "TA1 - task_ident - current task SUCCESSFUL"      );      RTEMS.TASK_IDENT(         100,         RTEMS.SEARCH_ALL_NODES,         SPTEST.JUNK_ID,         STATUS      );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_NAME,         "TASK_IDENT WITH ILLEGAL NAME (local)"      );      TEXT_IO.PUT_LINE( "TA1 - task_ident - global INVALID_NAME" );      RTEMS.TASK_IDENT( 100, 1, SPTEST.JUNK_ID, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_NAME,         "TASK_IDENT WITH ILLEGAL NAME (global)"      );      TEXT_IO.PUT_LINE( "TA1 - task_ident - local INVALID_NAME" );      RTEMS.TASK_IDENT( 100, 2, SPTEST.JUNK_ID, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_NODE,         "TASK_IDENT WITH ILLEGAL NODE"      );      TEXT_IO.PUT_LINE( "TA1 - task_ident - INVALID_NODE" );      RTEMS.TASK_RESTART( 100, 0, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_ID,         "TASK_RESTART WITH ILLEGAL ID"      );      TEXT_IO.PUT_LINE( "TA1 - task_restart - INVALID_ID" );      RTEMS.TASK_RESUME( 100, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_ID,         "TASK_RESUME WITH ILLEGAL ID"      );      TEXT_IO.PUT_LINE( "TA1 - task_resume - INVALID_ID" );      RTEMS.TASK_RESUME( RTEMS.SELF, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INCORRECT_STATE,         "TASK_RESUME OF READY TASK"      );      TEXT_IO.PUT_LINE( "TA1 - task_resume - INCORRECT_STATE" );--      RTEMS.TASK_SET_PRIORITY( RTEMS.SELF, 512, PREVIOUS_PRIORITY, STATUS );--      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(--         STATUS,--         RTEMS.INVALID_PRIORITY,--         "TASK_SET_PRIORITY WITH ILLEGAL PRIORITY"--      );--      TEXT_IO.PUT_LINE(--         "TA1 - task_set_priority - INVALID_PRIORITY"--      );      TEXT_IO.PUT_LINE(         "TA1 - task_set_priority - INVALID_PRIORITY -- constraint error"      );      RTEMS.TASK_SET_PRIORITY( 100, 8, PREVIOUS_PRIORITY, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_ID,         "TASK_SET_PRIORITY WITH ILLEGAL ID"      );      TEXT_IO.PUT_LINE( "TA1 - task_set_priority - INVALID_ID" );--       RTEMS.TASK_SET_NOTE( RTEMS.SELF, --                            RTEMS.NOTEPAD_INDEX'LAST + 10, --                            NOTEPAD_VALUE, --                            STATUS --       );--       TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(--          STATUS,--          RTEMS.INVALID_NUMBER,--          "TASK_SET_NOTE WITH ILLEGAL NOTEPAD"--       );--      TEXT_IO.PUT_LINE( "TA1 - task_set_note - INVALID_NUMBER" );      TEXT_IO.PUT_LINE(         "TA1 - task_set_note - INVALID_NUMBER -- constraint error"      );      RTEMS.TASK_SET_NOTE(          100,          RTEMS.NOTEPAD_INDEX'LAST,          NOTEPAD_VALUE,          STATUS       );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_ID,         "TASK_SET_NOTE WITH ILLEGAL ID"      );      TEXT_IO.PUT_LINE( "TA1 - task_set_note - INVALID_ID" );      RTEMS.TASK_START( 100, SPTEST.TASK_1'ACCESS, 0, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_ID,         "TASK_START WITH ILLEGAL ID"      );      TEXT_IO.PUT_LINE( "TA1 - task_start - INVALID_ID" );      RTEMS.TASK_START( RTEMS.SELF, SPTEST.TASK_1'ACCESS, 0, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INCORRECT_STATE,         "TASK_START OF READY TASK"      );      TEXT_IO.PUT_LINE( "TA1 - task_start - INCORRECT_STATE" );      RTEMS.TASK_SUSPEND( 100, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_ID,         "TASK_SUSPEND WITH INVALID ID"      );      TEXT_IO.PUT_LINE( "TA1 - task_suspend - INVALID_ID" );   end SCREEN_1;--PAGE-- --  SCREEN_2--   procedure SCREEN_2   is      TIME   : RTEMS.TIME_OF_DAY;      STATUS : RTEMS.STATUS_CODES;   begin-- errors before clock is set      RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );           if RTEMS.IS_STATUS_SUCCESSFUL( STATUS ) then         TEXT_IO.PUT_LINE(            "TA1 - clock_get - NOT_DEFINED -- DID THE BSP SET THE TIME OF DAY?"         );      else         TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(            STATUS,            RTEMS.NOT_DEFINED,            "CLOCK_GET BEFORE CLOCK IS SET"         );         TEXT_IO.PUT_LINE( "TA1 - clock_get - NOT_DEFINED" );      end if;      RTEMS.TASK_WAKE_WHEN( TIME, STATUS );      if RTEMS.IS_STATUS_SUCCESSFUL( STATUS ) then         TEXT_IO.PUT( "TA1 - task_wake_when - NOT_DEFINED -- " );         TEXT_IO.PUT_LINE( "DID THE BSP SET THE TIME OF DAY?" );      else         TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(            STATUS,            RTEMS.NOT_DEFINED,            "TASK_WAKE_WHEN BEFORE CLOCK IS SET"         );         TEXT_IO.PUT_LINE( "TA1 - task_wake_when - NOT_DEFINED" );      end if;      RTEMS.TIMER_FIRE_WHEN(         0,         TIME,         SPTEST.DELAYED_SUBPROGRAM'ACCESS,         RTEMS.NULL_ADDRESS,         STATUS      );      if RTEMS.IS_STATUS_SUCCESSFUL( STATUS ) then         TEXT_IO.PUT( "TA1 - task_fire_when - NOT_DEFINED -- " );         TEXT_IO.PUT_LINE( "DID THE BSP SET THE TIME OF DAY?" );      else         TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(            STATUS,            RTEMS.NOT_DEFINED,            "TIMER_FIRE_WHEN BEFORE CLOCK IS SET"         );         TEXT_IO.PUT_LINE( "TA1 - timer_fire_when - NOT_DEFINED" );      end if;-- invalid time of day field      TIME := ( 1987, 2, 5, 8, 30, 45, 0 );      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );      RTEMS.CLOCK_SET( TIME, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_CLOCK,         "CLOCK_SET WITH INVALID YEAR"      );      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );      TIME := ( 1988, 15, 5, 8, 30, 45, 0 );      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );      RTEMS.CLOCK_SET( TIME, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_CLOCK,         "CLOCK_SET WITH INVALID MONTH"      );      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );      TIME := ( 1988, 2, 32, 8, 30, 45, 0 );      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );      RTEMS.CLOCK_SET( TIME, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_CLOCK,         "CLOCK_SET WITH INVALID DAY"      );      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );      TIME := ( 1988, 2, 5, 25, 30, 45, 0 );      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );      RTEMS.CLOCK_SET( TIME, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_CLOCK,         "CLOCK_SET WITH INVALID HOUR"      );      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );      TIME := ( 1988, 2, 5, 8, 61, 45, 0 );      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );      RTEMS.CLOCK_SET( TIME, STATUS );      TEST_SUPPORT.FATAL_DIRECTIVE_STATUS(         STATUS,         RTEMS.INVALID_CLOCK,         "CLOCK_SET WITH INVALID MINUTE"      );      TEXT_IO.PUT_LINE( " - INVALID_CLOCK" );      TIME := ( 1988, 2, 5, 8, 30, 61, 0 );      TEST_SUPPORT.PRINT_TIME( "TA1 - clock_set - ", TIME, "" );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -