File indexing completed on 2025-05-11 08:24:39
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 <pthread.h>
0034 #include <errno.h>
0035 #include <rtems/libcsupport.h>
0036 #include "tmacros.h"
0037 #include "pmacros.h"
0038
0039 const char rtems_test_name[] = "PSXKEY 2";
0040
0041
0042 rtems_task Init(rtems_task_argument ignored);
0043
0044 rtems_task Init(rtems_task_argument ignored)
0045 {
0046 pthread_key_t key1;
0047 pthread_key_t key2;
0048 int eno;
0049 bool ok;
0050 rtems_resource_snapshot snapshot;
0051 void *greedy;
0052 void *value;
0053
0054 TEST_BEGIN();
0055
0056 greedy = rtems_workspace_greedy_allocate( NULL, 0 );
0057 rtems_resource_snapshot_take( &snapshot );
0058
0059 puts( "Init - pthread_key_create - OK" );
0060 eno = pthread_key_create( &key1, NULL );
0061 rtems_test_assert( eno == 0 );
0062
0063 eno = pthread_setspecific( key1, (void *) 1 );
0064 rtems_test_assert( eno == 0 );
0065
0066 value = pthread_getspecific( key1 );
0067 rtems_test_assert( value == (void *) 1 );
0068
0069 eno = pthread_setspecific( key1, NULL );
0070 rtems_test_assert( eno == 0 );
0071
0072 value = pthread_getspecific( key1 );
0073 rtems_test_assert( value == NULL );
0074
0075 eno = pthread_setspecific( key1, NULL );
0076 rtems_test_assert( eno == 0 );
0077
0078 value = pthread_getspecific( key1 );
0079 rtems_test_assert( value == NULL );
0080
0081 puts( "Init - pthread_key_create - EAGAIN" );
0082 eno = pthread_key_create( &key2, NULL );
0083 rtems_test_assert( eno == EAGAIN );
0084
0085 puts( "Init - pthread_key_delete - OK" );
0086 eno = pthread_key_delete( key1 );
0087 rtems_test_assert( eno == 0 );
0088
0089 puts( "Init - verify workspace has same memory" );
0090 ok = rtems_resource_snapshot_check( &snapshot );
0091 rtems_test_assert( ok );
0092
0093 rtems_workspace_greedy_free( greedy );
0094
0095 TEST_END();
0096 rtems_test_exit(0);
0097 }
0098
0099
0100
0101 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0102 #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
0103
0104 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0105
0106 #define CONFIGURE_MAXIMUM_TASKS 1
0107 #define CONFIGURE_MAXIMUM_POSIX_KEYS 1
0108
0109 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0110
0111 #define CONFIGURE_INIT
0112 #include <rtems/confdefs.h>
0113
0114