sptest.adb

来自「RTEMS (Real-Time Executive for Multiproc」· ADB 代码 · 共 284 行

ADB
284
字号
----  SPTEST / BODY----  DESCRIPTION:----  This package is the implementation of Test 15 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.2.4.2 2003/09/04 18:43:37 joel Exp $--with INTERFACES; use INTERFACES;with RTEMS;with TEST_SUPPORT;with TEXT_IO;with UNSIGNED32_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 15 ***" );      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );      SPTEST.PARTITION_NAME( 1 ) := RTEMS.BUILD_NAME(  'P', 'T', '1', ' ' );      SPTEST.PARTITION_NAME( 2 ) := RTEMS.BUILD_NAME(  'P', 'T', '2', ' ' );      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_START(         SPTEST.TASK_ID( 1 ),         SPTEST.TASK_1'ACCESS,         0,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );      TEXT_IO.PUT_LINE( "INIT - partition_create - partition 1" );      RTEMS.PARTITION_CREATE(         SPTEST.PARTITION_NAME( 1 ),         AREA_1'ADDRESS,         4096,         512,         RTEMS.DEFAULT_ATTRIBUTES,         SPTEST.PARTITION_ID( 1 ),         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_CREATE OF PT1" );      TEXT_IO.PUT_LINE( "INIT - partition_create - partition 2" );      RTEMS.PARTITION_CREATE(         SPTEST.PARTITION_NAME( 2 ),         AREA_2'ADDRESS,         274,         128,         RTEMS.DEFAULT_ATTRIBUTES,         SPTEST.PARTITION_ID( 2 ),         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_CREATE OF PT2" );      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );   end INIT;--PAGE-- --  PUT_ADDRESS_FROM_AREA_1--   procedure PUT_ADDRESS_FROM_AREA_1 (      TO_BE_PRINTED : in     RTEMS.ADDRESS   ) is   begin      UNSIGNED32_IO.PUT(         RTEMS.SUBTRACT( TO_BE_PRINTED, SPTEST.AREA_1'ADDRESS ),         WIDTH => 8,         BASE => 16      );   end PUT_ADDRESS_FROM_AREA_1;--PAGE-- --  PUT_ADDRESS_FROM_AREA_2--   procedure PUT_ADDRESS_FROM_AREA_2 (      TO_BE_PRINTED : in     RTEMS.ADDRESS   ) is   begin      UNSIGNED32_IO.PUT(         RTEMS.SUBTRACT( TO_BE_PRINTED, SPTEST.AREA_2'ADDRESS ),         WIDTH => 8,         BASE => 16      );   end PUT_ADDRESS_FROM_AREA_2;--PAGE-- --  TASK_1--   procedure TASK_1 (      ARGUMENT : in     RTEMS.TASK_ARGUMENT   ) is      PTID_1           : RTEMS.ID;      PTID_2           : RTEMS.ID;      BUFFER_ADDRESS_1 : RTEMS.ADDRESS;      BUFFER_ADDRESS_2 : RTEMS.ADDRESS;      BUFFER_ADDRESS_3 : RTEMS.ADDRESS;      BUFFER_ADDRESS_4 : RTEMS.ADDRESS;      STATUS           : RTEMS.STATUS_CODES;   begin      TEXT_IO.PUT( "TA1 - partition_ident - partition 1 id = " );      RTEMS.PARTITION_IDENT(          SPTEST.PARTITION_NAME( 1 ),          RTEMS.SEARCH_ALL_NODES,          PTID_1,          STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_IDENT OF PT1" );      UNSIGNED32_IO.PUT( PTID_1, WIDTH => 8, BASE => 16 );      TEXT_IO.NEW_LINE;         TEXT_IO.PUT( "TA1 - partition_ident - partition 2 id = " );      RTEMS.PARTITION_IDENT(          SPTEST.PARTITION_NAME( 2 ),          RTEMS.SEARCH_ALL_NODES,          PTID_2,          STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_IDENT OF PT2" );      UNSIGNED32_IO.PUT( PTID_2, WIDTH => 8, BASE => 16 );      TEXT_IO.NEW_LINE;      TEXT_IO.PUT(         "TA1 - partition_get_buffer - get buffer 1 from partition 1 - "      );      RTEMS.PARTITION_GET_BUFFER(          SPTEST.PARTITION_ID( 1 ),          BUFFER_ADDRESS_1,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );      SPTEST.PUT_ADDRESS_FROM_AREA_1( BUFFER_ADDRESS_1 );      TEXT_IO.NEW_LINE;            TEXT_IO.PUT(         "TA1 - partition_get_buffer - get buffer 2 from partition 1 - "      );      RTEMS.PARTITION_GET_BUFFER(          SPTEST.PARTITION_ID( 1 ),          BUFFER_ADDRESS_2,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );      SPTEST.PUT_ADDRESS_FROM_AREA_1( BUFFER_ADDRESS_2 );      TEXT_IO.NEW_LINE;            TEXT_IO.PUT(         "TA1 - partition_get_buffer - get buffer 1 from partition 2 - "      );      RTEMS.PARTITION_GET_BUFFER(          SPTEST.PARTITION_ID( 2 ),          BUFFER_ADDRESS_3,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );      SPTEST.PUT_ADDRESS_FROM_AREA_2( BUFFER_ADDRESS_3 );      TEXT_IO.NEW_LINE;            TEXT_IO.PUT(         "TA1 - partition_get_buffer - get buffer 2 from partition 2 - "      );      RTEMS.PARTITION_GET_BUFFER(          SPTEST.PARTITION_ID( 2 ),          BUFFER_ADDRESS_4,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );      SPTEST.PUT_ADDRESS_FROM_AREA_2( BUFFER_ADDRESS_4 );      TEXT_IO.NEW_LINE;      TEXT_IO.PUT(         "TA1 - partition_return_buffer - return buffer 1 to partition 1 - "      );      SPTEST.PUT_ADDRESS_FROM_AREA_1( BUFFER_ADDRESS_1 );      TEXT_IO.NEW_LINE;      RTEMS.PARTITION_RETURN_BUFFER(          SPTEST.PARTITION_ID( 1 ),          BUFFER_ADDRESS_1,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_RETURN_BUFFER" );       TEXT_IO.PUT(         "TA1 - partition_return_buffer - return buffer 2 to partition 1 - "      );      SPTEST.PUT_ADDRESS_FROM_AREA_1( BUFFER_ADDRESS_2 );      TEXT_IO.NEW_LINE;      RTEMS.PARTITION_RETURN_BUFFER(          SPTEST.PARTITION_ID( 1 ),          BUFFER_ADDRESS_2,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_RETURN_BUFFER" );       TEXT_IO.PUT(         "TA1 - partition_return_buffer - return buffer 1 to partition 2 - "      );      SPTEST.PUT_ADDRESS_FROM_AREA_2( BUFFER_ADDRESS_3 );      TEXT_IO.NEW_LINE;      RTEMS.PARTITION_RETURN_BUFFER(          SPTEST.PARTITION_ID( 2 ),          BUFFER_ADDRESS_3,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_RETURN_BUFFER" );       TEXT_IO.PUT(         "TA1 - partition_return_buffer - return buffer 2 to partition 2 - "      );      SPTEST.PUT_ADDRESS_FROM_AREA_2( BUFFER_ADDRESS_4 );      TEXT_IO.NEW_LINE;      RTEMS.PARTITION_RETURN_BUFFER(          SPTEST.PARTITION_ID( 2 ),          BUFFER_ADDRESS_4,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_RETURN_BUFFER" );       TEXT_IO.PUT_LINE( "TA1 - partition_delete - delete partition 1" );      RTEMS.PARTITION_DELETE( SPTEST.PARTITION_ID( 1 ), STATUS );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_DELETE OF SELF" );      TEXT_IO.PUT_LINE( "TA1 - partition_delete - delete partition 2" );      RTEMS.PARTITION_DELETE( SPTEST.PARTITION_ID( 2 ), STATUS );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_DELETE OF SELF" );      TEXT_IO.PUT_LINE( "*** END OF TEST 15 ***" );      RTEMS.SHUTDOWN_EXECUTIVE( 0 );      end TASK_1;end SPTEST;

⌨️ 快捷键说明

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