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

📄 sptest.adb

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 ADB
📖 第 1 页 / 共 2 页
字号:
         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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -