sptest.adb

来自「RTEMS (Real-Time Executive for Multiproc」· ADB 代码 · 共 723 行 · 第 1/2 页

ADB
723
字号
         16,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_URGENT" );      for TIMES in 1 .. 4       loop         TEXT_IO.PUT(             "TA1 - message_queue_receive - receive from queue 3 - "         );         TEXT_IO.PUT_LINE( "WAIT FOREVER" );         RTEMS.MESSAGE_QUEUE_RECEIVE(            SPTEST.QUEUE_ID( 3 ),            BUFFER_POINTER,            RTEMS.DEFAULT_OPTIONS,            RTEMS.NO_TIMEOUT,            MESSAGE_SIZE,            STATUS         );         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );         TEXT_IO.PUT( "TA1 - buffer received: " );         SPTEST.PUT_BUFFER( BUFFER );         TEXT_IO.NEW_LINE;      end loop;      SPTEST.FILL_BUFFER( "BUFFER 3 TO Q 2 ", BUFFER );      TEXT_IO.PUT_LINE( "TA1 - message_queue_urgent - BUFFER 3 TO Q 2" );      RTEMS.MESSAGE_QUEUE_URGENT(          SPTEST.QUEUE_ID( 2 ),          BUFFER_POINTER,          16,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_URGENT" );      TEXT_IO.PUT(         "TA1 - message_queue_receive - receive from queue 2 - "       );      TEXT_IO.PUT_LINE( "WAIT FOREVER" );      RTEMS.MESSAGE_QUEUE_RECEIVE(         SPTEST.QUEUE_ID( 2 ),         BUFFER_POINTER,         RTEMS.DEFAULT_OPTIONS,         RTEMS.NO_TIMEOUT,         MESSAGE_SIZE,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );      TEXT_IO.PUT( "TA1 - buffer received: " );      SPTEST.PUT_BUFFER( BUFFER );      TEXT_IO.NEW_LINE;TEST_SUPPORT.PAUSE;      TEXT_IO.PUT_LINE( "TA1 - message_queue_delete - delete queue 1" );      RTEMS.MESSAGE_QUEUE_DELETE( SPTEST.QUEUE_ID( 1 ), STATUS );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_DELETE" );         SPTEST.FILL_BUFFER( "BUFFER 3 TO Q 2 ", BUFFER );      TEXT_IO.PUT_LINE( "TA1 - message_queue_urgent - BUFFER 3 TO Q 2" );      RTEMS.MESSAGE_QUEUE_URGENT(          SPTEST.QUEUE_ID( 2 ),          BUFFER_POINTER,          16,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_URGENT" );      TEXT_IO.PUT_LINE( "TA1 - message_queue_delete - delete queue 2" );      RTEMS.MESSAGE_QUEUE_DELETE( SPTEST.QUEUE_ID( 2 ), STATUS );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_DELETE" );         TEXT_IO.PUT_LINE( "TA1 - message_queue_flush - empty Q 3" );      RTEMS.MESSAGE_QUEUE_FLUSH( SPTEST.QUEUE_ID( 3 ), COUNT, STATUS );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_FLUSH" );      TEXT_IO.PUT( "TA1 - " );      UNSIGNED32_IO.PUT( COUNT, WIDTH => 3, BASE => 10 );      TEXT_IO.PUT_LINE( " messages were flushed from Q 3" );           SPTEST.FILL_BUFFER( "BUFFER 1 TO Q 3 ", BUFFER );      TEXT_IO.PUT_LINE( "TA1 - message_queue_send - BUFFER 1 TO Q 3" );      RTEMS.MESSAGE_QUEUE_SEND(          SPTEST.QUEUE_ID( 3 ),          BUFFER_POINTER,          16,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );      SPTEST.FILL_BUFFER( "BUFFER 2 TO Q 3 ", BUFFER );      TEXT_IO.PUT_LINE( "TA1 - message_queue_send - BUFFER 2 TO Q 3" );      RTEMS.MESSAGE_QUEUE_SEND(          SPTEST.QUEUE_ID( 3 ),          BUFFER_POINTER,          16,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );      SPTEST.FILL_BUFFER( "BUFFER 3 TO Q 3 ", BUFFER );      TEXT_IO.PUT_LINE( "TA1 - message_queue_send - BUFFER 3 TO Q 3" );      RTEMS.MESSAGE_QUEUE_SEND(          SPTEST.QUEUE_ID( 3 ),          BUFFER_POINTER,          16,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );      TEXT_IO.PUT_LINE( "TA1 - message_queue_flush - Q 3" );      RTEMS.MESSAGE_QUEUE_FLUSH( SPTEST.QUEUE_ID( 3 ), COUNT, STATUS );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_FLUSH" );      TEXT_IO.PUT( "TA1 - " );      UNSIGNED32_IO.PUT( COUNT, WIDTH => 3, BASE => 10 );      TEXT_IO.PUT_LINE( " messages were flushed from Q 3" );           TEXT_IO.PUT_LINE(          "TA1 - message_queue_send - until all message buffers consumed"      );      loop         RTEMS.MESSAGE_QUEUE_SEND(             SPTEST.QUEUE_ID( 3 ),             BUFFER_POINTER,             16,            STATUS          );                  exit when RTEMS.ARE_STATUSES_EQUAL( STATUS, RTEMS.TOO_MANY );         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );               end loop;      TEXT_IO.PUT_LINE(          "TA1 - message_queue_send - all message buffers consumed"      );      TEXT_IO.PUT_LINE( "TA1 - message_queue_flush - Q 3" );      RTEMS.MESSAGE_QUEUE_FLUSH( SPTEST.QUEUE_ID( 3 ), COUNT, STATUS );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_FLUSH" );      TEXT_IO.PUT( "TA1 - " );      UNSIGNED32_IO.PUT( COUNT, WIDTH => 3, BASE => 10 );      TEXT_IO.PUT_LINE( " messages were flushed from Q 3" );           TEXT_IO.PUT( "TA1 - ERROR - " );      UNSIGNED32_IO.PUT( COUNT, WIDTH => 3, BASE => 10 );      TEXT_IO.PUT_LINE( " messages flushed" );      TEXT_IO.PUT_LINE( "*** END OF TEST 13 ***" );      RTEMS.SHUTDOWN_EXECUTIVE( 0 );   end TASK_1;--PAGE-- --  TASK_2--   procedure TASK_2 (      ARGUMENT : in     RTEMS.TASK_ARGUMENT   ) is      BUFFER            : SPTEST.BUFFER;      BUFFER_POINTER    : RTEMS.ADDRESS;      PREVIOUS_PRIORITY : RTEMS.TASK_PRIORITY;      MESSAGE_SIZE      : RTEMS.UNSIGNED32;      STATUS            : RTEMS.STATUS_CODES;   begin      BUFFER_POINTER := BUFFER'ADDRESS;      TEXT_IO.PUT_LINE(          "TA2 - message_queue_receive - receive from queue 1 - NO_WAIT"      );      RTEMS.MESSAGE_QUEUE_RECEIVE(         SPTEST.QUEUE_ID( 1 ),         BUFFER_POINTER,         RTEMS.NO_WAIT,         RTEMS.NO_TIMEOUT,         MESSAGE_SIZE,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );      TEXT_IO.PUT( "TA2 - buffer received: " );      SPTEST.PUT_BUFFER( BUFFER );      TEXT_IO.NEW_LINE;      TEXT_IO.PUT_LINE(          "TA2 - message_queue_receive - receive from queue 1 - WAIT FOREVER"      );      RTEMS.MESSAGE_QUEUE_RECEIVE(         SPTEST.QUEUE_ID( 1 ),         BUFFER_POINTER,         RTEMS.DEFAULT_OPTIONS,         RTEMS.NO_TIMEOUT,         MESSAGE_SIZE,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );      TEXT_IO.PUT( "TA2 - buffer received: " );      SPTEST.PUT_BUFFER( BUFFER );      TEXT_IO.NEW_LINE;      TEXT_IO.PUT_LINE(          "TA2 - message_queue_receive - receive from queue 1 - WAIT FOREVER"      );      RTEMS.MESSAGE_QUEUE_RECEIVE(         SPTEST.QUEUE_ID( 1 ),         BUFFER_POINTER,         RTEMS.DEFAULT_OPTIONS,         RTEMS.NO_TIMEOUT,         MESSAGE_SIZE,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );      TEXT_IO.PUT( "TA2 - buffer received: " );      SPTEST.PUT_BUFFER( BUFFER );      TEXT_IO.NEW_LINE;      TEXT_IO.PUT_LINE(          "TA2 - task_set_priority - make self highest priority task"      );      RTEMS.TASK_SET_PRIORITY(         RTEMS.SELF,         3,         PREVIOUS_PRIORITY,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SET_PRIORITY" );      TEXT_IO.PUT_LINE(          "TA2 - message_queue_receive - receive from queue 2 - WAIT FOREVER"      );      RTEMS.MESSAGE_QUEUE_RECEIVE(         SPTEST.QUEUE_ID( 2 ),         BUFFER_POINTER,         RTEMS.DEFAULT_OPTIONS,         RTEMS.NO_TIMEOUT,         MESSAGE_SIZE,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );      TEXT_IO.PUT( "TA2 - buffer received: " );      SPTEST.PUT_BUFFER( BUFFER );      TEXT_IO.NEW_LINE;      SPTEST.FILL_BUFFER( "BUFFER 2 TO Q 2 ", BUFFER );      TEXT_IO.PUT_LINE( "TA2 - message_queue_send - BUFFER 2 TO Q 2" );      RTEMS.MESSAGE_QUEUE_SEND(          SPTEST.QUEUE_ID( 2 ),          BUFFER_POINTER,          16,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_SEND" );         TEXT_IO.PUT_LINE(     "TA2 - message_queue_receive - receive from queue 1 - 10 second timeout"      );      RTEMS.MESSAGE_QUEUE_RECEIVE(         SPTEST.QUEUE_ID( 1 ),         BUFFER_POINTER,         RTEMS.DEFAULT_OPTIONS,         10 * TEST_SUPPORT.TICKS_PER_SECOND,         MESSAGE_SIZE,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );      TEXT_IO.PUT( "TA2 - buffer received: " );      SPTEST.PUT_BUFFER( BUFFER );      TEXT_IO.NEW_LINE;      TEXT_IO.PUT_LINE(          "TA2 - message_queue_receive - receive from queue 3 - WAIT FOREVER"      );      RTEMS.MESSAGE_QUEUE_RECEIVE(         SPTEST.QUEUE_ID( 3 ),         BUFFER_POINTER,         RTEMS.DEFAULT_OPTIONS,         RTEMS.NO_TIMEOUT,         MESSAGE_SIZE,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );      TEXT_IO.PUT( "TA2 - buffer received: " );      SPTEST.PUT_BUFFER( BUFFER );      TEXT_IO.NEW_LINE;   end TASK_2;--PAGE-- --  TASK_3--   procedure TASK_3 (      ARGUMENT : in     RTEMS.TASK_ARGUMENT   ) is      BUFFER         : SPTEST.BUFFER;      BUFFER_POINTER : RTEMS.ADDRESS;      COUNT          : RTEMS.UNSIGNED32;      MESSAGE_SIZE   : RTEMS.UNSIGNED32;      STATUS         : RTEMS.STATUS_CODES;   begin      BUFFER_POINTER := BUFFER'ADDRESS;      TEXT_IO.PUT_LINE(          "TA3 - message_queue_receive - receive from queue 2 - WAIT FOREVER"      );      RTEMS.MESSAGE_QUEUE_RECEIVE(         SPTEST.QUEUE_ID( 2 ),         BUFFER_POINTER,         RTEMS.DEFAULT_OPTIONS,         RTEMS.NO_TIMEOUT,         MESSAGE_SIZE,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );      TEXT_IO.PUT( "TA3 - buffer received: " );      SPTEST.PUT_BUFFER( BUFFER );      TEXT_IO.NEW_LINE;      SPTEST.FILL_BUFFER( "BUFFER 3 TO Q 1 ", BUFFER );      TEXT_IO.PUT_LINE( "TA3 - message_queue_broadcast - BUFFER 3 TO Q 1" );      RTEMS.MESSAGE_QUEUE_BROADCAST(          SPTEST.QUEUE_ID( 1 ),          BUFFER_POINTER,          16,         COUNT,         STATUS       );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_BROADCAST" );      TEXT_IO.PUT( "TA3 - number of tasks awakened = " );      UNSIGNED32_IO.PUT( COUNT, WIDTH => 3, BASE => 10 );      TEXT_IO.NEW_LINE;           TEXT_IO.PUT_LINE(          "TA3 - message_queue_receive - receive from queue 3 - WAIT FOREVER"      );      RTEMS.MESSAGE_QUEUE_RECEIVE(         SPTEST.QUEUE_ID( 3 ),         BUFFER_POINTER,         RTEMS.DEFAULT_OPTIONS,         RTEMS.NO_TIMEOUT,         MESSAGE_SIZE,         STATUS      );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "MESSAGE_QUEUE_RECEIVE" );      TEXT_IO.PUT( "TA3 - buffer received: " );      SPTEST.PUT_BUFFER( BUFFER );      TEXT_IO.NEW_LINE;      TEXT_IO.PUT_LINE( "TA3 - task_delete - delete self" );      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );   end TASK_3;end SPTEST;

⌨️ 快捷键说明

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