From a5385b1f729cf671f458c0b2128a0d64b0c307a6 Mon Sep 17 00:00:00 2001 From: Christian Mauderer Date: Thu, 20 Mar 2014 09:22:00 +0100 Subject: score: Unify pthread and gxx_wrapper once and move to score. --- cpukit/libcsupport/src/gxx_wrappers.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) (limited to 'cpukit/libcsupport/src/gxx_wrappers.c') diff --git a/cpukit/libcsupport/src/gxx_wrappers.c b/cpukit/libcsupport/src/gxx_wrappers.c index 31f6254063..711daa495a 100644 --- a/cpukit/libcsupport/src/gxx_wrappers.c +++ b/cpukit/libcsupport/src/gxx_wrappers.c @@ -29,6 +29,7 @@ #endif #include +#include #include @@ -43,19 +44,7 @@ int rtems_gxx_once(__gthread_once_t *once, void (*func) (void)) printk( "gxx_wrappers: once=%x, func=%x\n", *once, func ); #endif - if ( *(volatile __gthread_once_t *)once == 0 ) { - rtems_mode saveMode; - __gthread_once_t o; - - rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); - if ( (o = *(volatile __gthread_once_t *)once) == 0 ) { - *(volatile __gthread_once_t *)once = 1; - } - rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode); - if ( o == 0 ) - (*func)(); - } - return 0; + return _Once( once, func ); } int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *)) -- cgit v1.2.3