📄 sptest.adb
字号:
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 + -