File indexing completed on 2025-05-11 08:24:36
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 #ifdef HAVE_CONFIG_H
0030 #include "config.h"
0031 #endif
0032
0033 #include <tmacros.h>
0034 #include "test_support.h"
0035 #include <pthread.h>
0036
0037 const char rtems_test_name[] = "PSX 16";
0038
0039
0040 void *POSIX_Init(void *argument);
0041 void *TestThread(void *argument);
0042
0043 int Index;
0044
0045 void *TestThread(
0046 void *argument
0047 )
0048 {
0049 int *index = (int *)argument;
0050
0051 *index = 7;
0052
0053 puts( "TestThread exiting" );
0054 return argument;
0055 }
0056
0057 void *POSIX_Init(void *argument)
0058 {
0059 int status;
0060 pthread_t id;
0061 pthread_attr_t attr;
0062 void *join_return;
0063
0064 TEST_BEGIN();
0065
0066 Index = 5;
0067
0068
0069 pthread_attr_init(&attr);
0070 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
0071
0072 puts( "Creating TestThread" );
0073 status = pthread_create( &id, &attr, TestThread, (void *)&Index );
0074 rtems_test_assert( status == 0 );
0075
0076
0077 puts( "Let TestThread run and exit before we attempt to join" );
0078 sleep( 2 );
0079
0080 join_return = NULL;
0081 status = pthread_join( id, &join_return );
0082 rtems_test_assert( status == 0 );
0083 rtems_test_assert( join_return == &Index );
0084 rtems_test_assert( *(int *)join_return == 7 );
0085 puts( "Successfully joined with TestThread" );
0086
0087 TEST_END();
0088
0089 rtems_test_exit(0);
0090 }
0091
0092
0093
0094 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0095 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
0096
0097 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0098
0099 #define CONFIGURE_MAXIMUM_POSIX_THREADS 2
0100
0101 #define CONFIGURE_POSIX_INIT_THREAD_TABLE
0102
0103 #define CONFIGURE_INIT
0104 #include <rtems/confdefs.h>
0105