Looks ok to me especially since it doesn't appear to add anything. :) --joel
On Wed, Jan 26, 2022 at 4:05 AM Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > > GCC versions prior to 6.1 used a RTEMS thread model based on > rtems_gxx_*() functions. GCC version 6.1 or later uses the > self-contained synchronization objects of Newlib <sys/lock.h> for the > RTEMS thread model. > > Remove the obsolete implementation. > > Close #3143. > --- > cpukit/include/rtems/gxx_wrappers.h | 80 ------ > cpukit/include/rtems/score/interr.h | 4 +- > cpukit/libcsupport/src/gxx_wrappers.c | 261 -------------------- > spec/build/testsuites/libtests/grp.yml | 2 - > spec/build/testsuites/libtests/gxx01.yml | 19 -- > spec/build/testsuites/sptests/grp.yml | 4 - > spec/build/testsuites/sptests/spfatal24.yml | 19 -- > spec/build/testsuites/sptests/spfatal25.yml | 19 -- > testsuites/libtests/gxx01/gxx01.doc | 33 --- > testsuites/libtests/gxx01/gxx01.scn | 35 --- > testsuites/libtests/gxx01/init.c | 228 ----------------- > testsuites/sptests/spfatal24/init.c | 31 --- > testsuites/sptests/spfatal24/spfatal24.doc | 19 -- > testsuites/sptests/spfatal24/spfatal24.scn | 3 - > testsuites/sptests/spfatal25/init.c | 33 --- > testsuites/sptests/spfatal25/spfatal25.doc | 19 -- > testsuites/sptests/spfatal25/spfatal25.scn | 3 - > 17 files changed, 2 insertions(+), 810 deletions(-) > delete mode 100644 cpukit/include/rtems/gxx_wrappers.h > delete mode 100644 cpukit/libcsupport/src/gxx_wrappers.c > delete mode 100644 spec/build/testsuites/libtests/gxx01.yml > delete mode 100644 spec/build/testsuites/sptests/spfatal24.yml > delete mode 100644 spec/build/testsuites/sptests/spfatal25.yml > delete mode 100644 testsuites/libtests/gxx01/gxx01.doc > delete mode 100644 testsuites/libtests/gxx01/gxx01.scn > delete mode 100644 testsuites/libtests/gxx01/init.c > delete mode 100644 testsuites/sptests/spfatal24/init.c > delete mode 100644 testsuites/sptests/spfatal24/spfatal24.doc > delete mode 100644 testsuites/sptests/spfatal24/spfatal24.scn > delete mode 100644 testsuites/sptests/spfatal25/init.c > delete mode 100644 testsuites/sptests/spfatal25/spfatal25.doc > delete mode 100644 testsuites/sptests/spfatal25/spfatal25.scn > > diff --git a/cpukit/include/rtems/gxx_wrappers.h > b/cpukit/include/rtems/gxx_wrappers.h > deleted file mode 100644 > index e462d27d66..0000000000 > --- a/cpukit/include/rtems/gxx_wrappers.h > +++ /dev/null > @@ -1,80 +0,0 @@ > -/** > - * @file > - * > - * RTEMS threads compatibility routines for libgcc2. > - */ > - > -/* > - * by: Rosimildo da Silva (rdasi...@connecttel.com) > - * > - * Used ideas from: > - * W. Eric Norum > - * Canadian Light Source > - * University of Saskatchewan > - * Saskatoon, Saskatchewan, CANADA > - * e...@cls.usask.ca > - * > - * Eric sent some e-mail in the rtems-list as a start point for this > - * module implementation. > - */ > - > -#ifndef __GCC_WRAPPERS_h > -#define __GCC_WRAPPERS_h > - > -#ifdef __cplusplus > -extern "C" { > -#endif /* __cplusplus */ > - > -/** > - * @defgroup GxxWrappersSupport Gxx Wrappers Support > - * > - * @ingroup libcsupport > - * > - * @brief RTEMS Threads Compatibility Routines for Libgcc2 > - */ > - > -/* > - * These typedefs should match with the ones defined in the file > - * gcc/gthr-rtems.h in the gcc distribution. > - */ > -typedef void *__gthread_key_t; > -typedef int __gthread_once_t; > -typedef void *__gthread_mutex_t; > -typedef void *__gthread_recursive_mutex_t; > - > -int rtems_gxx_once(__gthread_once_t *once, void (*func) (void)); > - > -int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *)); > - > -int rtems_gxx_key_delete (__gthread_key_t key); > - > -void *rtems_gxx_getspecific(__gthread_key_t key); > - > -int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr); > - > -/* > - * MUTEX support > - */ > -void rtems_gxx_mutex_init (__gthread_mutex_t *mutex); > - > -int rtems_gxx_mutex_lock (__gthread_mutex_t *mutex); > - > -int rtems_gxx_mutex_destroy (__gthread_mutex_t *mutex); > - > -int rtems_gxx_mutex_trylock (__gthread_mutex_t *mutex); > - > -int rtems_gxx_mutex_unlock (__gthread_mutex_t *mutex); > - > -void rtems_gxx_recursive_mutex_init(__gthread_recursive_mutex_t *mutex); > - > -int rtems_gxx_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex); > - > -int rtems_gxx_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex); > - > -int rtems_gxx_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex); > - > -#ifdef __cplusplus > -} > -#endif /* __cplusplus */ > - > -#endif /* __GCC_WRAPPERS_h */ > diff --git a/cpukit/include/rtems/score/interr.h > b/cpukit/include/rtems/score/interr.h > index 65cac29500..4054e21253 100644 > --- a/cpukit/include/rtems/score/interr.h > +++ b/cpukit/include/rtems/score/interr.h > @@ -188,8 +188,8 @@ typedef enum { > /* INTERNAL_ERROR_THREAD_QUEUE_ENQUEUE_FROM_BAD_STATE = 18, */ > /* INTERNAL_ERROR_UNLIMITED_AND_MAXIMUM_IS_0 = 19, */ > /* INTERNAL_ERROR_SHUTDOWN_WHEN_NOT_UP = 20, */ > - INTERNAL_ERROR_GXX_KEY_ADD_FAILED = 21, > - INTERNAL_ERROR_GXX_MUTEX_INIT_FAILED = 22, > + /* INTERNAL_ERROR_GXX_KEY_ADD_FAILED = 21, */ > + /* INTERNAL_ERROR_GXX_MUTEX_INIT_FAILED = 22, */ > INTERNAL_ERROR_NO_MEMORY_FOR_HEAP = 23, > INTERNAL_ERROR_CPU_ISR_INSTALL_VECTOR = 24, > INTERNAL_ERROR_RESOURCE_IN_USE = 25, > diff --git a/cpukit/libcsupport/src/gxx_wrappers.c > b/cpukit/libcsupport/src/gxx_wrappers.c > deleted file mode 100644 > index b81d82d454..0000000000 > --- a/cpukit/libcsupport/src/gxx_wrappers.c > +++ /dev/null > @@ -1,261 +0,0 @@ > -/** > - * @file > - * > - * @brief RTEMS Threads Compatibility Routines for Libgcc2 > - * @ingroup GxxWrappersSupport > - */ > - > -/* > - * by: Rosimildo da Silva (rdasi...@connecttel.com) > - * > - * Used ideas from: > - * W. Eric Norum > - * Canadian Light Source > - * University of Saskatchewan > - * Saskatoon, Saskatchewan, CANADA > - * e...@cls.usask.ca > - * > - * Eric sent some e-mail in the rtems-list as a start point for this > - * module implementation. > - */ > - > -/* > - * This file is only used if using gcc > - */ > -#if defined(__GNUC__) > - > -#ifdef HAVE_CONFIG_H > -#include "config.h" > -#endif > - > -#include <rtems/gxx_wrappers.h> > -#include <rtems/score/onceimpl.h> > - > -#include <errno.h> > -#include <stdlib.h> > -#include <pthread.h> > - > -#include <rtems.h> > - > -/* uncomment this if you need to debug this interface */ > -/*#define DEBUG_GXX_WRAPPERS 1*/ > - > -int rtems_gxx_once(__gthread_once_t *once, void (*func) (void)) > -{ > - #ifdef DEBUG_GXX_WRAPPERS > - printk( "gxx_wrappers: once=%x, func=%x\n", *once, func ); > - #endif > - > - return _Once( (unsigned char *) once, func ); > -} > - > -int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *)) > -{ > - int eno; > - pthread_key_t *pkey; > - > - pkey = malloc( sizeof( *pkey ) ); > - *key = pkey; > - if ( pkey == NULL ) > - { > - return ENOMEM; > - } > - > - #ifdef DEBUG_GXX_WRAPPERS > - printk( > - "gxx_wrappers: create key=%x, dtor=%x, pkey=%x\n", key, dtor, pkey > - ); > - #endif > - > - eno = pthread_key_create(pkey, dtor); > - if ( eno != 0 ) { > - free( pkey ); > - *key = NULL; > - } > - > - return eno; > -} > - > -int rtems_gxx_key_delete (__gthread_key_t key) > -{ > - int eno = 0; > - pthread_key_t *pkey = key; > - > - #ifdef DEBUG_GXX_WRAPPERS > - printk( "gxx_wrappers: delete key=%x\n", pkey ); > - #endif > - > - if ( pkey == NULL ) { > - return EINVAL; > - } > - > - eno = pthread_key_delete(*pkey); > - if ( eno == 0 ) { > - free( pkey ); > - } > - return eno; > -} > - > -void *rtems_gxx_getspecific(__gthread_key_t key) > -{ > - pthread_key_t *pkey = key; > - void *p = NULL; > - > - if ( pkey != NULL ) { > - p = pthread_getspecific( *pkey ); > - } > - > - #ifdef DEBUG_GXX_WRAPPERS > - printk( > - "gxx_wrappers: getspecific key=%x, ptr=%x, id=%x\n", > - pkey, > - p, > - rtems_task_self() > - ); > - #endif > - return p; > -} > - > -int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr) > -{ > - pthread_key_t *pkey = key; > - int eno; > - > - if ( pkey == NULL ) { > - return EINVAL; > - } > - > - eno = pthread_setspecific( *pkey, ptr ); > - > - #ifdef DEBUG_GXX_WRAPPERS > - printk( > - "gxx_wrappers: setspecific key=%x, ptr=%x, id=%x\n", > - pkey, > - ptr, > - rtems_task_self() > - ); > - #endif > - > - if ( eno != 0 ) { > - _Internal_error( INTERNAL_ERROR_GXX_KEY_ADD_FAILED ); > - } > - > - return 0; > -} > - > - > -/* > - * MUTEX support > - */ > -void rtems_gxx_mutex_init (__gthread_mutex_t *mutex) > -{ > - rtems_status_code status; > - > - #ifdef DEBUG_GXX_WRAPPERS > - printk( "gxx_wrappers: mutex init =%X\n", *mutex ); > - #endif > - > - status = rtems_semaphore_create( > - rtems_build_name ('G', 'C', 'C', '2'), > - 1, > - RTEMS_PRIORITY|RTEMS_BINARY_SEMAPHORE| > - RTEMS_INHERIT_PRIORITY|RTEMS_NO_PRIORITY_CEILING|RTEMS_LOCAL, > - 0, > - (rtems_id *)mutex > - ); > - if ( status != RTEMS_SUCCESSFUL ) { > - #ifdef DEBUG_GXX_WRAPPERS > - printk( > - "gxx_wrappers: mutex init failed %s (%d)\n", > - rtems_status_text(status), > - status > - ); > - #endif > - _Internal_error( INTERNAL_ERROR_GXX_MUTEX_INIT_FAILED ); > - } > - #ifdef DEBUG_GXX_WRAPPERS > - printk( "gxx_wrappers: mutex init complete =%X\n", *mutex ); > - #endif > -} > - > -int rtems_gxx_mutex_lock (__gthread_mutex_t *mutex) > -{ > - rtems_status_code status; > - > - #ifdef DEBUG_GXX_WRAPPERS > - printk( "gxx_wrappers: lock mutex=%X\n", *mutex ); > - #endif > - > - status = rtems_semaphore_obtain( > - *(rtems_id *)mutex, > - RTEMS_WAIT, > - RTEMS_NO_TIMEOUT > - ); > - if ( status == RTEMS_SUCCESSFUL ) > - return 0; > - return -1; > -} > - > -int rtems_gxx_mutex_destroy (__gthread_mutex_t *mutex) > -{ > - rtems_status_code status; > - > - #ifdef DEBUG_GXX_WRAPPERS > - printk( "gxx_wrappers: destroy mutex=%X\n", *mutex ); > - #endif > - > - status = rtems_semaphore_delete(*(rtems_id *)mutex); > - if ( status == RTEMS_SUCCESSFUL ) > - return 0; > - return -1; > -} > - > -int rtems_gxx_mutex_trylock (__gthread_mutex_t *mutex) > -{ > - rtems_status_code status; > - > - #ifdef DEBUG_GXX_WRAPPERS > - printk( "gxx_wrappers: trylock mutex=%X\n", *mutex ); > - #endif > - > - status = rtems_semaphore_obtain (*(rtems_id *)mutex, RTEMS_NO_WAIT, 0); > - if ( status == RTEMS_SUCCESSFUL ) > - return 0; > - return -1; > -} > - > -int rtems_gxx_mutex_unlock (__gthread_mutex_t *mutex) > -{ > - rtems_status_code status; > - > - #ifdef DEBUG_GXX_WRAPPERS > - printk( "gxx_wrappers: unlock mutex=%X\n", *mutex ); > - #endif > - > - status = rtems_semaphore_release( *(rtems_id *)mutex ); > - if ( status == RTEMS_SUCCESSFUL ) > - return 0; > - return -1; > -} > - > -void rtems_gxx_recursive_mutex_init(__gthread_recursive_mutex_t *mutex) > -{ > - rtems_gxx_mutex_init(mutex); > -} > - > -int rtems_gxx_recursive_mutex_lock(__gthread_recursive_mutex_t *mutex) > -{ > - return rtems_gxx_mutex_lock(mutex); > -} > - > -int rtems_gxx_recursive_mutex_trylock(__gthread_recursive_mutex_t *mutex) > -{ > - return rtems_gxx_mutex_trylock(mutex); > -} > - > -int rtems_gxx_recursive_mutex_unlock(__gthread_recursive_mutex_t *mutex) > -{ > - return rtems_gxx_mutex_unlock(mutex); > -} > - > -#endif /* __GNUC__ */ > diff --git a/spec/build/testsuites/libtests/grp.yml > b/spec/build/testsuites/libtests/grp.yml > index cd5cc210e2..fdb9e4fede 100644 > --- a/spec/build/testsuites/libtests/grp.yml > +++ b/spec/build/testsuites/libtests/grp.yml > @@ -141,8 +141,6 @@ links: > uid: gettimeofday > - role: build-dependency > uid: getuid > -- role: build-dependency > - uid: gxx01 > - role: build-dependency > uid: heapwalk > - role: build-dependency > diff --git a/spec/build/testsuites/libtests/gxx01.yml > b/spec/build/testsuites/libtests/gxx01.yml > deleted file mode 100644 > index 1027db9b9a..0000000000 > --- a/spec/build/testsuites/libtests/gxx01.yml > +++ /dev/null > @@ -1,19 +0,0 @@ > -SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause > -build-type: test-program > -cflags: [] > -copyrights: > -- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) > -cppflags: [] > -cxxflags: [] > -enabled-by: true > -features: c cprogram > -includes: [] > -ldflags: [] > -links: [] > -source: > -- testsuites/libtests/gxx01/init.c > -stlib: [] > -target: testsuites/libtests/gxx01.exe > -type: build > -use-after: [] > -use-before: [] > diff --git a/spec/build/testsuites/sptests/grp.yml > b/spec/build/testsuites/sptests/grp.yml > index b2278a60fe..740684a0e4 100644 > --- a/spec/build/testsuites/sptests/grp.yml > +++ b/spec/build/testsuites/sptests/grp.yml > @@ -237,10 +237,6 @@ links: > uid: spfatal14 > - role: build-dependency > uid: spfatal15 > -- role: build-dependency > - uid: spfatal24 > -- role: build-dependency > - uid: spfatal25 > - role: build-dependency > uid: spfatal26 > - role: build-dependency > diff --git a/spec/build/testsuites/sptests/spfatal24.yml > b/spec/build/testsuites/sptests/spfatal24.yml > deleted file mode 100644 > index 22eefa9de5..0000000000 > --- a/spec/build/testsuites/sptests/spfatal24.yml > +++ /dev/null > @@ -1,19 +0,0 @@ > -SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause > -build-type: test-program > -cflags: [] > -copyrights: > -- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) > -cppflags: [] > -cxxflags: [] > -enabled-by: true > -features: c cprogram > -includes: [] > -ldflags: [] > -links: [] > -source: > -- testsuites/sptests/spfatal24/init.c > -stlib: [] > -target: testsuites/sptests/spfatal24.exe > -type: build > -use-after: [] > -use-before: [] > diff --git a/spec/build/testsuites/sptests/spfatal25.yml > b/spec/build/testsuites/sptests/spfatal25.yml > deleted file mode 100644 > index f80f26abfa..0000000000 > --- a/spec/build/testsuites/sptests/spfatal25.yml > +++ /dev/null > @@ -1,19 +0,0 @@ > -SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause > -build-type: test-program > -cflags: [] > -copyrights: > -- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) > -cppflags: [] > -cxxflags: [] > -enabled-by: true > -features: c cprogram > -includes: [] > -ldflags: [] > -links: [] > -source: > -- testsuites/sptests/spfatal25/init.c > -stlib: [] > -target: testsuites/sptests/spfatal25.exe > -type: build > -use-after: [] > -use-before: [] > diff --git a/testsuites/libtests/gxx01/gxx01.doc > b/testsuites/libtests/gxx01/gxx01.doc > deleted file mode 100644 > index 568e26f49a..0000000000 > --- a/testsuites/libtests/gxx01/gxx01.doc > +++ /dev/null > @@ -1,33 +0,0 @@ > -# COPYRIGHT (c) 1989-2010. > -# On-Line Applications Research Corporation (OAR). > -# > -# The license and distribution terms for this file may be > -# found in the file LICENSE in this distribution or at > -# http://www.rtems.org/license/LICENSE. > -# > - > -This file describes the directives and concepts tested by this test set. > - > -test set name: gxx01 > - > -directives: > - > - rtems_gxx_once > - rtems_gxx_key_create > - rtems_gxx_key_delete > - rtems_gxx_getspecific > - rtems_gxx_setspecific > - rtems_gxx_mutex_init > - rtems_gxx_mutex_lock > - rtems_gxx_mutex_destroy > - rtems_gxx_mutex_trylock > - rtems_gxx_mutex_unlock > - rtems_gxx_recursive_mutex_init > - rtems_gxx_recursive_mutex_lock > - rtems_gxx_recursive_mutex_trylock > - rtems_gxx_recursive_mutex_unlock > - > -concepts: > - > -+ Fully exercise wrappers provided by RTEMS for GCC's C++ library's > - mutual exclusion implementation. > diff --git a/testsuites/libtests/gxx01/gxx01.scn > b/testsuites/libtests/gxx01/gxx01.scn > deleted file mode 100644 > index f831881fa3..0000000000 > --- a/testsuites/libtests/gxx01/gxx01.scn > +++ /dev/null > @@ -1,35 +0,0 @@ > -*** TEST GXX 01 *** > -rtems_gxx_mutex_init() - OK > -rtems_gxx_mutex_trylock() - OK > -rtems_gxx_mutex_unlock() - OK > -rtems_gxx_mutex_lock() - OK > -rtems_gxx_mutex_unlock() - OK > - > -rtems_gxx_recursive_mutex_init() - OK > -rtems_gxx_recursive_mutex_trylock() - OK > -rtems_gxx_recursive_mutex_trylock() - Nest > -rtems_gxx_recursive_mutex_unlock() - Unnest > -rtems_gxx_recursive_mutex_unlock() - OK > -rtems_gxx_recursive_mutex_lock() - OK > -rtems_gxx_recursive_mutex_unlock() - OK > -rtems_gxx_mutex_destroy(mutex) - OK > -rtems_gxx_mutex_destroy(mutex) - NOT OK > - > -Call once method the first time > -Running once method > -Call once method the second time > - > -rtems_gxx_key_create(&key, NULL) - OK > -rtems_gxx_key_delete(key) - OK > -rtems_gxx_key_create(&key, key_dtor) - OK > -rtems_gxx_getspecific(key) not set - OK > -rtems_gxx_setspecific(key, 0x1234) - OK > -rtems_gxx_getspecific(key) already existing - OK > -rtems_gxx_key_delete(key) - OK > -rtems_gxx_getspecific(key) non-existent - OK > -rtems_gxx_key_delete(key) - NOT OK > -rtems_gxx_setspecific(NULL, 0x1234) - NOT OK > -rtems_gxx_getspecific(NULL) - OK > -rtems_gxx_key_delete(NULL) - NOT OK > - > -*** END OF TEST GXX 01 *** > diff --git a/testsuites/libtests/gxx01/init.c > b/testsuites/libtests/gxx01/init.c > deleted file mode 100644 > index 306e4f1f0b..0000000000 > --- a/testsuites/libtests/gxx01/init.c > +++ /dev/null > @@ -1,228 +0,0 @@ > -/* > - * COPYRIGHT (c) 1989-2012. > - * On-Line Applications Research Corporation (OAR). > - * > - * The license and distribution terms for this file may be > - * found in the file LICENSE in this distribution or at > - * http://www.rtems.org/license/LICENSE. > - */ > - > -#ifdef HAVE_CONFIG_H > -#include "config.h" > -#endif > - > -#include <errno.h> > -#include <tmacros.h> > -#include "test_support.h" > -#include <rtems/gxx_wrappers.h> > - > -const char rtems_test_name[] = "GXX 1"; > - > -/* forward declarations to avoid warnings */ > -rtems_task Init(rtems_task_argument argument); > -void test_recursive_mutex(void); > -void test_mutex(void); > -void once_function(void); > -void test_once(void); > -void key_dtor(void *ptr); > -void test_key(void); > - > -void test_recursive_mutex(void) > -{ > - int sc; > - __gthread_mutex_t mutex; > - > - mutex = 0; > - puts( "rtems_gxx_recursive_mutex_init() - OK" ); > - rtems_gxx_recursive_mutex_init(&mutex); > - rtems_test_assert( mutex != 0 ); > - > - puts( "rtems_gxx_recursive_mutex_trylock() - OK" ); > - sc = rtems_gxx_recursive_mutex_trylock(&mutex); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_recursive_mutex_trylock() - Nest" ); > - sc = rtems_gxx_recursive_mutex_trylock(&mutex); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_recursive_mutex_unlock() - Unnest" ); > - sc = rtems_gxx_recursive_mutex_unlock(&mutex); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_recursive_mutex_unlock() - OK" ); > - sc = rtems_gxx_recursive_mutex_unlock(&mutex); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_recursive_mutex_lock() - OK" ); > - sc = rtems_gxx_recursive_mutex_lock(&mutex); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_recursive_mutex_unlock() - OK" ); > - sc = rtems_gxx_recursive_mutex_unlock(&mutex); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_mutex_destroy(mutex) - OK" ); > - sc = rtems_gxx_mutex_destroy(&mutex); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_mutex_destroy(mutex) - NOT OK" ); > - sc = rtems_gxx_mutex_destroy(&mutex); > - rtems_test_assert( sc == -1 ); > -} > - > -void test_mutex(void) > -{ > - int sc; > - __gthread_mutex_t mutex; > - > - mutex = 0; > - puts( "rtems_gxx_mutex_init() - OK" ); > - rtems_gxx_mutex_init(&mutex); > - rtems_test_assert( mutex != 0 ); > - > - puts( "rtems_gxx_mutex_trylock() - OK" ); > - sc = rtems_gxx_mutex_trylock(&mutex); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_mutex_unlock() - OK" ); > - sc = rtems_gxx_mutex_unlock(&mutex); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_mutex_lock() - OK" ); > - sc = rtems_gxx_mutex_lock(&mutex); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_mutex_unlock() - OK" ); > - sc = rtems_gxx_mutex_unlock(&mutex); > - rtems_test_assert( sc == 0 ); > -} > - > -void once_function(void) > -{ > - puts( "Running once method" ); > -} > - > -void test_once(void) > -{ > - __gthread_once_t once; > - int sc; > - > - once = 0; > - > - puts( "Call once method the first time" ); > - sc = rtems_gxx_once(&once, once_function); > - rtems_test_assert( sc == 0 ); > - > - puts( "Call once method the second time" ); > - sc = rtems_gxx_once(&once, once_function); > - rtems_test_assert( sc == 0 ); > -} > - > -volatile bool key_dtor_ran; > - > -void key_dtor(void *ptr) > -{ > - key_dtor_ran = true; > -} > - > -void test_key(void) > -{ > - int sc; > - __gthread_key_t key; > - void *p; > - > - puts( "rtems_gxx_key_create(&key, NULL) - OK" ); > - sc = rtems_gxx_key_create(&key, NULL); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_key_delete(key) - OK" ); > - sc = rtems_gxx_key_delete(key); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_key_create(&key, key_dtor) - OK" ); > - sc = rtems_gxx_key_create(&key, key_dtor); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_getspecific(key) not set - OK" ); > - p = rtems_gxx_getspecific(key); > - rtems_test_assert( p == NULL ); > - > - puts( "rtems_gxx_setspecific(key, 0x1234) - OK" ); > - sc = rtems_gxx_setspecific(key, (void *)0x1234); > - rtems_test_assert( sc == 0 ); > - > - puts( "rtems_gxx_getspecific(key) already existing - OK" ); > - p = rtems_gxx_getspecific(key); > - rtems_test_assert( p == (void *)0x1234 ); > - > - puts( "rtems_gxx_key_delete(key) - OK" ); > - sc = rtems_gxx_key_delete(key); > - rtems_test_assert( sc == 0 ); > - /* pthread_key man-page: the dtor should _not_ be called */ > - rtems_test_assert( key_dtor_ran != true ); > - > - key = calloc( 1, sizeof( *key ) ); > - rtems_test_assert( key != NULL ); > - > - puts( "rtems_gxx_getspecific(key) non-existent - OK" ); > - p = rtems_gxx_getspecific( key ); > - rtems_test_assert( p == NULL ); > - > - puts( "rtems_gxx_key_delete(key) - NOT OK" ); > - sc = rtems_gxx_key_delete( key ); > - rtems_test_assert( sc != 0 ); > - > - puts( "rtems_gxx_setspecific(NULL, 0x1234) - NOT OK" ); > - sc = rtems_gxx_setspecific( NULL, (void *)0x1234 ); > - rtems_test_assert( sc == EINVAL ); > - > - puts( "rtems_gxx_getspecific(NULL) - OK" ); > - p = rtems_gxx_getspecific( NULL ); > - rtems_test_assert( p == NULL ); > - > - puts( "rtems_gxx_key_delete(NULL) - NOT OK" ); > - sc = rtems_gxx_key_delete( NULL ); > - rtems_test_assert( sc == EINVAL ); > -} > - > -rtems_task Init( > - rtems_task_argument argument > -) > -{ > - TEST_BEGIN(); > - > - test_mutex(); > - puts( "" ); > - > - test_recursive_mutex(); > - puts( "" ); > - > - test_once(); > - puts( "" ); > - > - test_key(); > - puts( "" ); > - > - TEST_END(); > - > - rtems_test_exit( 0 ); > -} > - > -/* configuration information */ > - > -#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER > -#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER > - > -#define CONFIGURE_MAXIMUM_POSIX_KEYS 1 > -#define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS 1 > - > -#define CONFIGURE_MAXIMUM_TASKS 1 > -#define CONFIGURE_MAXIMUM_SEMAPHORES 2 > -#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION > - > -#define CONFIGURE_RTEMS_INIT_TASKS_TABLE > - > -#define CONFIGURE_INIT > - > -#include <rtems/confdefs.h> > -/* end of file */ > diff --git a/testsuites/sptests/spfatal24/init.c > b/testsuites/sptests/spfatal24/init.c > deleted file mode 100644 > index 6522ef7be2..0000000000 > --- a/testsuites/sptests/spfatal24/init.c > +++ /dev/null > @@ -1,31 +0,0 @@ > -#ifdef HAVE_CONFIG_H > -#include "config.h" > -#endif > - > -#include "../spfatal_support/spfatal.h" > - > -/* > - * COPYRIGHT (c) 1989-2010. > - * On-Line Applications Research Corporation (OAR). > - * > - * The license and distribution terms for this file may be > - * found in the file LICENSE in this distribution or at > - * http://www.rtems.org/license/LICENSE. > - */ > - > -#include <rtems/gxx_wrappers.h> > -#include <rtems/malloc.h> > - > -#define FATAL_ERROR_TEST_NAME "GXX KEY ADD FAILURE" > -#define FATAL_ERROR_DESCRIPTION "GXX KEY ADD FAILURE" > -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE > -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_GXX_KEY_ADD_FAILED > - > -static void force_error(void) > -{ > - pthread_key_t key = -1; > - > - rtems_gxx_setspecific( &key, NULL ); > -} > - > -#include "../spfatal_support/spfatalimpl.h" > diff --git a/testsuites/sptests/spfatal24/spfatal24.doc > b/testsuites/sptests/spfatal24/spfatal24.doc > deleted file mode 100644 > index b697770085..0000000000 > --- a/testsuites/sptests/spfatal24/spfatal24.doc > +++ /dev/null > @@ -1,19 +0,0 @@ > -# COPYRIGHT (c) 1989-2010. > -# On-Line Applications Research Corporation (OAR). > -# > -# The license and distribution terms for this file may be > -# found in the file LICENSE in this distribution or at > -# http://www.rtems.org/license/LICENSE. > -# > - > -This file describes the directives and concepts tested by this test set. > - > -test set name: spfatal24 > - > -directives: > - > - rtems_gxx_setspecific(); > - > -concepts: > - > -+ Trigger fatal error. > diff --git a/testsuites/sptests/spfatal24/spfatal24.scn > b/testsuites/sptests/spfatal24/spfatal24.scn > deleted file mode 100644 > index 46a4f20409..0000000000 > --- a/testsuites/sptests/spfatal24/spfatal24.scn > +++ /dev/null > @@ -1,3 +0,0 @@ > -*** TEST FATAL GXX KEY ADD FAILURE *** > -Fatal error (GXX KEY ADD FAILURE) hit > -*** END OF TEST FATAL GXX KEY ADD FAILURE *** > diff --git a/testsuites/sptests/spfatal25/init.c > b/testsuites/sptests/spfatal25/init.c > deleted file mode 100644 > index 83042557e5..0000000000 > --- a/testsuites/sptests/spfatal25/init.c > +++ /dev/null > @@ -1,33 +0,0 @@ > -#ifdef HAVE_CONFIG_H > -#include "config.h" > -#endif > - > -#include "../spfatal_support/spfatal.h" > - > -/* > - * COPYRIGHT (c) 1989-2010. > - * On-Line Applications Research Corporation (OAR). > - * > - * The license and distribution terms for this file may be > - * found in the file LICENSE in this distribution or at > - * http://www.rtems.org/license/LICENSE. > - */ > - > -#include <rtems/gxx_wrappers.h> > - > -#define FATAL_ERROR_TEST_NAME "GXX MUTEX INIT FAILED" > -#define FATAL_ERROR_DESCRIPTION "GXX MUTEX INIT FAILED" > -#define FATAL_ERROR_EXPECTED_SOURCE INTERNAL_ERROR_CORE > -#define FATAL_ERROR_EXPECTED_ERROR INTERNAL_ERROR_GXX_MUTEX_INIT_FAILED > - > -static void force_error(void) > -{ > - __gthread_mutex_t mutex; > - > - while ( true ) { > - rtems_gxx_mutex_init( &mutex ); > - rtems_test_assert( mutex != 0 ); > - } > -} > - > -#include "../spfatal_support/spfatalimpl.h" > diff --git a/testsuites/sptests/spfatal25/spfatal25.doc > b/testsuites/sptests/spfatal25/spfatal25.doc > deleted file mode 100644 > index e30241bc8b..0000000000 > --- a/testsuites/sptests/spfatal25/spfatal25.doc > +++ /dev/null > @@ -1,19 +0,0 @@ > -# COPYRIGHT (c) 1989-2010. > -# On-Line Applications Research Corporation (OAR). > -# > -# The license and distribution terms for this file may be > -# found in the file LICENSE in this distribution or at > -# http://www.rtems.org/license/LICENSE. > -# > - > -This file describes the directives and concepts tested by this test set. > - > -test set name: spfatal24 > - > -directives: > - > - rtems_gxx_getspecific(); > - > -concepts: > - > -+ Trigger fatal error. > diff --git a/testsuites/sptests/spfatal25/spfatal25.scn > b/testsuites/sptests/spfatal25/spfatal25.scn > deleted file mode 100644 > index 93a6b729b8..0000000000 > --- a/testsuites/sptests/spfatal25/spfatal25.scn > +++ /dev/null > @@ -1,3 +0,0 @@ > -*** TEST FATAL GXX MUTEX INIT FAILED *** > -Fatal error (GXX MUTEX INIT FAILED) hit > -*** END OF TEST FATAL GXX MUTEX INIT FAILED *** > -- > 2.31.1 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel