diff options
Diffstat (limited to 'testsuites/psxtests/psxconfig01/init.c')
-rw-r--r-- | testsuites/psxtests/psxconfig01/init.c | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/testsuites/psxtests/psxconfig01/init.c b/testsuites/psxtests/psxconfig01/init.c index afce9f6c5f..61beec3495 100644 --- a/testsuites/psxtests/psxconfig01/init.c +++ b/testsuites/psxtests/psxconfig01/init.c @@ -8,10 +8,10 @@ /* * Copyright (c) 2014. On-Line Applications Research Corporation (OAR). - * Copyright (c) 2011-2012 embedded brains GmbH. All rights reserved. + * Copyright (c) 2011-2014 embedded brains GmbH. All rights reserved. * * embedded brains GmbH - * Obere Lagerstr. 30 + * Dornierstr. 4 * 82178 Puchheim * Germany * <rtems@embedded-brains.de> @@ -45,6 +45,11 @@ const char rtems_test_name[] = "PSXCONFIG 1"; #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 5 +#define CONFIGURE_MAXIMUM_POSIX_KEYS 23 +#ifdef CONFIGURE_MAXIMUM_POSIX_KEYS + #define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS CONFIGURE_MAXIMUM_POSIX_KEYS +#endif + #define CONFIGURE_MAXIMUM_BARRIERS 2 #define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 7 #define CONFIGURE_MAXIMUM_PARTITIONS 37 @@ -60,7 +65,6 @@ const char rtems_test_name[] = "PSXCONFIG 1"; #define CONFIGURE_MAXIMUM_POSIX_BARRIERS 31 #define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 29 -#define CONFIGURE_MAXIMUM_POSIX_KEYS 23 #define POSIX_MQ_COUNT 5 #define CONFIGURE_MAXIMUM_POSIX_MUTEXES 19 #define CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS 7 @@ -262,6 +266,7 @@ static rtems_task Init(rtems_task_argument argument) rtems_extensions_table table; rtems_resource_snapshot snapshot; int i = 0; + pthread_key_t key; TEST_BEGIN(); @@ -299,6 +304,27 @@ static rtems_task Init(rtems_task_argument argument) ); #endif +#ifdef CONFIGURE_MAXIMUM_POSIX_KEYS + for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_KEYS; ++i) { + eno = pthread_key_create(&key, posix_key_dtor); + rtems_test_assert(eno == 0); + + eno = pthread_setspecific(key, (void *) (i + 1)); + rtems_test_assert(eno == 0); + } + eno = pthread_key_create(&key, posix_key_dtor); + rtems_test_assert(eno == EAGAIN); + rtems_resource_snapshot_take(&snapshot); + rtems_test_assert( + snapshot.active_posix_keys == CONFIGURE_POSIX_KEYS + ); + rtems_test_assert( + snapshot.active_posix_key_value_pairs == CONFIGURE_MAXIMUM_POSIX_KEYS + ); +#else + (void) key; +#endif + #ifdef CONFIGURE_MAXIMUM_BARRIERS for (i = 0; i < CONFIGURE_MAXIMUM_BARRIERS; ++i) { sc = rtems_barrier_create(name, RTEMS_DEFAULT_ATTRIBUTES, 1, &id); @@ -455,18 +481,6 @@ static rtems_task Init(rtems_task_argument argument) ); #endif -#ifdef CONFIGURE_MAXIMUM_POSIX_KEYS - for (i = 0; i < CONFIGURE_MAXIMUM_POSIX_KEYS; ++i) { - pthread_key_t key; - eno = pthread_key_create(&key, posix_key_dtor); - rtems_test_assert(eno == 0); - } - rtems_resource_snapshot_take(&snapshot); - rtems_test_assert( - snapshot.posix_api.active_keys == CONFIGURE_POSIX_KEYS - ); -#endif - #ifdef POSIX_MQ_COUNT for (i = 0; i < POSIX_MQ_COUNT; ++i) { int oflag = O_RDWR | O_CREAT | O_EXCL; |