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 #ifdef HAVE_CONFIG_H
0039 #include "config.h"
0040 #endif
0041
0042 #include "system.h"
0043
0044 rtems_task Test_task(
0045 rtems_task_argument argument
0046 )
0047 {
0048 uint32_t count;
0049 rtems_status_code status;
0050
0051 puts( "Getting SMID of semaphore" );
0052
0053 do {
0054 status = rtems_semaphore_ident(
0055 Semaphore_name[ 1 ],
0056 RTEMS_SEARCH_ALL_NODES,
0057 &Semaphore_id[ 1 ]
0058 );
0059 } while ( !rtems_is_status_successful( status ) );
0060
0061 if ( rtems_object_get_local_node() == 2 ) {
0062 status = rtems_semaphore_delete( Semaphore_id[ 1 ] );
0063 fatal_directive_status(
0064 status,
0065 RTEMS_ILLEGAL_ON_REMOTE_OBJECT,
0066 "rtems_semaphore_delete did not return RTEMS_ILLEGAL_ON_REMOTE_OBJECT"
0067 );
0068 puts(
0069 "rtems_semaphore_delete correctly returned RTEMS_ILLEGAL_ON_REMOTE_OBJECT"
0070 );
0071 }
0072
0073 count = 0;
0074 while ( FOREVER ) {
0075 put_dot( 'p' );
0076 status = rtems_semaphore_obtain(
0077 Semaphore_id[ 1 ],
0078 RTEMS_DEFAULT_OPTIONS,
0079 RTEMS_NO_TIMEOUT
0080 );
0081 if ( status != RTEMS_SUCCESSFUL ) {
0082 fatal_directive_status(
0083 status,
0084 RTEMS_OBJECT_WAS_DELETED,
0085 "rtems_semaphore_obtain"
0086 );
0087 puts( "\nGlobal semaphore deleted" );
0088 puts( "*** END OF TEST 8 ***" );
0089 rtems_test_exit( 0 );
0090 }
0091
0092 if ( rtems_object_get_local_node() == 1 && ++count == 1000 ) {
0093 status = rtems_task_wake_after( rtems_clock_get_ticks_per_second() );
0094 directive_failed( status, "rtems_task_wake_after" );
0095
0096 puts( "\nDeleting global semaphore" );
0097 status = rtems_semaphore_delete( Semaphore_id[ 1 ] );
0098 directive_failed( status, "rtems_semaphore_delete" );
0099
0100 puts( "*** END OF TEST 8 ***" );
0101 rtems_test_exit( 0 );
0102 }
0103 else {
0104 put_dot( 'v' );
0105 status = rtems_semaphore_release( Semaphore_id[ 1 ] );
0106 directive_failed( status, "rtems_semaphore_release FAILED!!" );
0107 }
0108 }
0109 }