Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:44

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /*  Task_2
0004  *
0005  *  This routine serves as a test task.  Multiple tasks are required to
0006  *  verify all message manager capabilities.
0007  *
0008  *  Input parameters:
0009  *    argument - task argument
0010  *
0011  *  Output parameters:  NONE
0012  *
0013  *  COPYRIGHT (c) 1989-2009.
0014  *  On-Line Applications Research Corporation (OAR).
0015  *
0016  * Redistribution and use in source and binary forms, with or without
0017  * modification, are permitted provided that the following conditions
0018  * are met:
0019  * 1. Redistributions of source code must retain the above copyright
0020  *    notice, this list of conditions and the following disclaimer.
0021  * 2. Redistributions in binary form must reproduce the above copyright
0022  *    notice, this list of conditions and the following disclaimer in the
0023  *    documentation and/or other materials provided with the distribution.
0024  *
0025  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0026  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0027  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0028  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0029  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0030  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0031  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0032  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0033  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0034  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0035  * POSSIBILITY OF SUCH DAMAGE.
0036  */
0037 
0038 #ifdef HAVE_CONFIG_H
0039 #include "config.h"
0040 #endif
0041 
0042 #include "system.h"
0043 
0044 rtems_task Task_2(
0045   rtems_task_argument argument
0046 )
0047 {
0048   long                buffer[ 4 ];
0049   size_t              size;
0050   rtems_task_priority previous_priority;
0051   rtems_status_code   status;
0052 
0053   puts(
0054     "TA2 - rtems_message_queue_receive - receive from queue 1 - RTEMS_NO_WAIT"
0055   );
0056   status = rtems_message_queue_receive(
0057     Queue_id[ 1 ],
0058     buffer,
0059     &size,
0060     RTEMS_NO_WAIT,
0061     RTEMS_NO_TIMEOUT
0062   );
0063   directive_failed( status, "rtems_message_queue_receive" );
0064   puts_nocr( "TA2 - buffer received: " );
0065   Put_buffer( buffer );
0066   new_line;
0067 
0068   puts(
0069     "TA2 - rtems_message_queue_receive - receive from queue 1 - "
0070       "RTEMS_WAIT FOREVER"
0071   );
0072   status = rtems_message_queue_receive(
0073     Queue_id[ 1 ],
0074     buffer,
0075     &size,
0076     RTEMS_DEFAULT_OPTIONS,
0077     RTEMS_NO_TIMEOUT
0078   );
0079   directive_failed( status, "rtems_message_queue_receive" );
0080   puts_nocr( "TA2 - buffer received: " );
0081   Put_buffer( buffer );
0082   new_line;
0083 
0084   puts(
0085     "TA2 - rtems_message_queue_receive - receive from queue 1 - "
0086       "RTEMS_WAIT FOREVER"
0087  );
0088   status = rtems_message_queue_receive(
0089     Queue_id[ 1 ],
0090     buffer,
0091     &size,
0092     RTEMS_DEFAULT_OPTIONS,
0093     RTEMS_NO_TIMEOUT
0094   );
0095   directive_failed( status, "rtems_message_queue_receive" );
0096   puts_nocr( "TA2 - buffer received: " );
0097   Put_buffer( buffer );
0098   new_line;
0099 
0100   puts( "TA2 - rtems_task_set_priority - make self highest priority task" );
0101   status = rtems_task_set_priority( RTEMS_SELF, 3, &previous_priority );
0102   directive_failed( status, "rtems_task_set_priority" );
0103 
0104   puts(
0105     "TA2 - rtems_message_queue_receive - receive from queue 2 - "
0106       "RTEMS_WAIT FOREVER"
0107   );
0108   status = rtems_message_queue_receive(
0109     Queue_id[ 2 ],
0110     buffer,
0111     &size,
0112     RTEMS_DEFAULT_OPTIONS,
0113     RTEMS_NO_TIMEOUT
0114   );
0115   directive_failed( status, "rtems_message_queue_receive" );
0116   puts_nocr( "TA2 - buffer received: " );
0117   Put_buffer( buffer );
0118   new_line;
0119 
0120   Fill_buffer( "BUFFER 2 TO Q 2", (long *)buffer );
0121   puts( "TA2 - rtems_message_queue_send - BUFFER 2 TO Q 2" );
0122   status = rtems_message_queue_send( Queue_id[ 2 ], buffer, MESSAGE_SIZE );
0123   directive_failed( status, "rtems_message_queue_send" );
0124 
0125   puts(
0126     "TA2 - rtems_message_queue_receive - receive from queue 1 - "
0127       "10 second timeout"
0128   );
0129   status = rtems_message_queue_receive(
0130     Queue_id[ 1 ],
0131     buffer,
0132     &size,
0133     RTEMS_DEFAULT_OPTIONS,
0134     10 * rtems_clock_get_ticks_per_second()
0135   );
0136   directive_failed( status, "rtems_message_queue_receive" );
0137   puts_nocr( "TA2 - buffer received: " );
0138   Put_buffer( buffer );
0139   new_line;
0140 
0141   puts(
0142     "TA2 - rtems_message_queue_receive - receive from queue 3 - "
0143       "RTEMS_WAIT FOREVER"
0144   );
0145   status = rtems_message_queue_receive(
0146     Queue_id[ 3 ],
0147     buffer,
0148     &size,
0149     RTEMS_DEFAULT_OPTIONS,
0150     RTEMS_NO_TIMEOUT
0151   );
0152   directive_failed( status, "rtems_message_queue_receive" );
0153   puts_nocr( "TA2 - buffer received: " );
0154   Put_buffer( buffer );
0155   new_line;
0156 
0157 }