File indexing completed on 2025-05-11 08:24:35
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039 #ifdef HAVE_CONFIG_H
0040 #include "config.h"
0041 #endif
0042
0043 #include "system.h"
0044
0045 rtems_task Test_task2(
0046 rtems_task_argument argument
0047 )
0048 {
0049 rtems_status_code status;
0050
0051 puts( "Getting SMID of semaphore" );
0052 do {
0053 status = rtems_semaphore_ident(
0054 Semaphore_name[ 1 ],
0055 RTEMS_SEARCH_ALL_NODES,
0056 &Semaphore_id[ 1 ]
0057 );
0058 } while ( !rtems_is_status_successful( status ) );
0059
0060 directive_failed( status, "rtems_semaphore_ident" );
0061
0062 if ( rtems_object_get_local_node() == 1 ) {
0063 status = rtems_task_wake_after( rtems_clock_get_ticks_per_second() );
0064 directive_failed( status, "rtems_task_wake_after" );
0065
0066 puts( "Releasing semaphore ..." );
0067 status = rtems_semaphore_release( Semaphore_id[ 1 ] );
0068 directive_failed( status, "rtems_semaphore_release" );
0069
0070 status = rtems_task_wake_after( rtems_clock_get_ticks_per_second() / 2 );
0071 directive_failed( status, "rtems_task_wake_after" );
0072
0073 puts( "Getting semaphore ..." );
0074 status = rtems_semaphore_obtain(
0075 Semaphore_id[ 1 ],
0076 RTEMS_DEFAULT_OPTIONS,
0077 RTEMS_NO_TIMEOUT
0078 );
0079 directive_failed( status, "rtems_semaphore_obtain" );
0080
0081 puts( "Getting semaphore ..." );
0082 status = rtems_semaphore_obtain(
0083 Semaphore_id[ 1 ],
0084 RTEMS_DEFAULT_OPTIONS,
0085 RTEMS_NO_TIMEOUT
0086 );
0087 puts( "How did I get back from here????" );
0088 directive_failed( status, "rtems_semaphore_obtain" );
0089 }
0090
0091
0092
0093
0094
0095
0096 puts( "Getting semaphore ..." );
0097 status = rtems_semaphore_obtain(
0098 Semaphore_id[ 1 ],
0099 RTEMS_DEFAULT_OPTIONS,
0100 RTEMS_NO_TIMEOUT
0101 );
0102 directive_failed( status, "rtems_semaphore_obtain" );
0103
0104 puts( "Releasing semaphore ..." );
0105 status = rtems_semaphore_release( Semaphore_id[ 1 ] );
0106 directive_failed( status, "rtems_semaphore_release" );
0107
0108 status = rtems_task_wake_after( rtems_clock_get_ticks_per_second() );
0109 directive_failed( status, "rtems_task_wake_after" );
0110
0111 puts( "Getting semaphore ..." );
0112 status = rtems_semaphore_obtain(
0113 Semaphore_id[ 1 ],
0114 RTEMS_DEFAULT_OPTIONS,
0115 2 * rtems_clock_get_ticks_per_second()
0116 );
0117 fatal_directive_status(
0118 status,
0119 RTEMS_TIMEOUT,
0120 "rtems_semaphore_obtain"
0121 );
0122 puts( "rtems_semaphore_obtain correctly returned RTEMS_TIMEOUT" );
0123
0124 puts( "*** END OF TEST 13 ***" );
0125 rtems_test_exit( 0 );
0126 }