Changes in / [7f6a7c9:0bd46fd]


Ignore:
Files:
15 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/Makefile.am

    r7f6a7c9 r0bd46fd  
    124124        concurrency/monitor.hfa \
    125125        concurrency/mutex.hfa \
    126         concurrency/thread.hfa 
     126        concurrency/thread.hfa
    127127
    128128thread_libsrc = ${inst_thread_headers_src} ${inst_thread_headers_src:.hfa=.cfa} \
     
    145145        concurrency/stats.cfa \
    146146        concurrency/stats.hfa \
    147         concurrency/stats.hfa \
    148         concurrency/pthread.cfa
     147        concurrency/stats.hfa
    149148
    150149else
  • libcfa/src/bits/defs.hfa

    r7f6a7c9 r0bd46fd  
    2121#include <stdint.h>
    2222#include <assert.h>
    23 #include <signal.h>
    2423
    2524#define likely(x)   __builtin_expect(!!(x), 1)
     
    5958void abort( bool signalAbort, const char fmt[], ... ) __attribute__ (( format(printf, 2, 3), __nothrow__, __leaf__, __noreturn__ ));
    6059extern "C" {
    61         #include <pthread.h>
    62         void __cabi_abort( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
    63         int real_pthread_create(pthread_t *_thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
    64         int real_pthread_join(pthread_t _thread, void **retval);
    65         pthread_t real_pthread_self(void);
    66         int real_pthread_attr_init(pthread_attr_t *attr);
    67         int real_pthread_attr_destroy(pthread_attr_t *attr);
    68         int real_pthread_attr_setstack( pthread_attr_t *attr, void *stackaddr, size_t stacksize );
    69         int real_pthread_attr_getstacksize( const pthread_attr_t *attr, size_t *stacksize );
    70         int real_pthread_sigqueue(pthread_t _thread, int sig, const union sigval value);
    71         int real_pthread_sigmask( int how, const sigset_t *set, sigset_t *oset);
     60#endif
     61void __cabi_abort( const char fmt[], ... ) __attribute__ (( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ ));
     62#ifdef __cforall
    7263}
    7364#endif
  • libcfa/src/concurrency/clib/cfathread.cfa

    r7f6a7c9 r0bd46fd  
    172172
    173173                pthread_attr_t attr;
    174                 if (int ret = real_pthread_attr_init(&attr); 0 != ret) {
     174                if (int ret = pthread_attr_init(&attr); 0 != ret) {
    175175                        abort | "failed to create master epoll thread attr: " | ret | strerror(ret);
    176176                }
    177177
    178                 if (int ret = real_pthread_create(&master_poller, &attr, master_epoll, 0p); 0 != ret) {
     178                if (int ret = pthread_create(&master_poller, &attr, master_epoll, 0p); 0 != ret) {
    179179                        abort | "failed to create master epoll thread: " | ret | strerror(ret);
    180180                }
  • libcfa/src/concurrency/io.cfa

    r7f6a7c9 r0bd46fd  
    610610                if( we ) {
    611611                        sigval_t value = { PREEMPT_IO };
    612                         real_pthread_sigqueue(ctx->proc->kernel_thread, SIGUSR1, value);
     612                        pthread_sigqueue(ctx->proc->kernel_thread, SIGUSR1, value);
    613613                }
    614614
  • libcfa/src/concurrency/io/setup.cfa

    r7f6a7c9 r0bd46fd  
    344344        //      iopoll.run = false;
    345345        //      sigval val = { 1 };
    346         //      real_pthread_sigqueue( iopoll.thrd, SIGUSR1, val );
     346        //      pthread_sigqueue( iopoll.thrd, SIGUSR1, val );
    347347
    348348        //      // Make sure all this is done
  • libcfa/src/concurrency/kernel/startup.cfa

    r7f6a7c9 r0bd46fd  
    219219                ( this.runner ){};
    220220                init( this, "Main Processor", *mainCluster, 0p );
    221                 kernel_thread = real_pthread_self();
     221                kernel_thread = pthread_self();
    222222
    223223                runner{ &this };
     
    280280}
    281281
    282 extern "C"{
    283         void pthread_delete_kernel_threads_();
    284 }
    285 
    286 
    287282static void __kernel_shutdown(void) {
    288283        if(!cfa_main_returned) return;
    289 
    290         //delete kernel threads for pthread_concurrency
    291         pthread_delete_kernel_threads_();
    292 
    293284        /* paranoid */ verify( __preemption_enabled() );
    294285        disable_interrupts();
     
    779770        pthread_attr_t attr;
    780771
    781         check( real_pthread_attr_init( &attr ), "pthread_attr_init" ); // initialize attribute
     772        check( pthread_attr_init( &attr ), "pthread_attr_init" ); // initialize attribute
    782773
    783774        size_t stacksize = max( PTHREAD_STACK_MIN, DEFAULT_STACK_SIZE );
     
    806797        #endif
    807798
    808         check( real_pthread_attr_setstack( &attr, stack, stacksize ), "pthread_attr_setstack" );
    809         check( real_pthread_create( pthread, &attr, start, arg ), "pthread_create" );
     799        check( pthread_attr_setstack( &attr, stack, stacksize ), "pthread_attr_setstack" );
     800        check( pthread_create( pthread, &attr, start, arg ), "pthread_create" );
    810801        return stack;
    811802}
    812803
    813804void __destroy_pthread( pthread_t pthread, void * stack, void ** retval ) {
    814         int err = real_pthread_join( pthread, retval );
     805        int err = pthread_join( pthread, retval );
    815806        if( err != 0 ) abort("KERNEL ERROR: joining pthread %p caused error %s\n", (void*)pthread, strerror(err));
    816807
     
    818809                pthread_attr_t attr;
    819810
    820                 check( real_pthread_attr_init( &attr ), "pthread_attr_init" ); // initialize attribute
     811                check( pthread_attr_init( &attr ), "pthread_attr_init" ); // initialize attribute
    821812
    822813                size_t stacksize;
    823814                // default stack size, normally defined by shell limit
    824                 check( real_pthread_attr_getstacksize( &attr, &stacksize ), "pthread_attr_getstacksize" );
     815                check( pthread_attr_getstacksize( &attr, &stacksize ), "pthread_attr_getstacksize" );
    825816                assert( stacksize >= PTHREAD_STACK_MIN );
    826817                stacksize += __page_size;
  • libcfa/src/concurrency/preemption.cfa

    r7f6a7c9 r0bd46fd  
    406406        sigset_t oldset;
    407407        int ret;
    408         ret = real_pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
     408        ret = pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
    409409        if(ret != 0) { abort("ERROR sigprocmask returned %d", ret); }
    410410
     
    439439        sigaddset( &mask, sig );
    440440
    441         if ( real_pthread_sigmask( SIG_UNBLOCK, &mask, 0p ) == -1 ) {
     441        if ( pthread_sigmask( SIG_UNBLOCK, &mask, 0p ) == -1 ) {
    442442            abort( "internal error, pthread_sigmask" );
    443443        }
     
    450450        sigaddset( &mask, sig );
    451451
    452         if ( real_pthread_sigmask( SIG_BLOCK, &mask, 0p ) == -1 ) {
     452        if ( pthread_sigmask( SIG_BLOCK, &mask, 0p ) == -1 ) {
    453453                abort( "internal error, pthread_sigmask" );
    454454        }
     
    458458static void preempt( processor * this ) {
    459459        sigval_t value = { PREEMPT_NORMAL };
    460         real_pthread_sigqueue( this->kernel_thread, SIGUSR1, value );
     460        pthread_sigqueue( this->kernel_thread, SIGUSR1, value );
    461461}
    462462
     
    469469        sigset_t oldset;
    470470        int ret;
    471         ret = real_pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
     471        ret = pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
    472472        if(ret != 0) { abort("ERROR sigprocmask returned %d", ret); }
    473473
     
    488488        sigset_t oldset;
    489489        int ret;
    490         ret = real_pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
     490        ret = pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
    491491        if(ret != 0) { abort("ERROR sigprocmask returned %d", ret); }
    492492
     
    559559        sigval val;
    560560        val.sival_int = 0;
    561         real_pthread_sigqueue( alarm_thread, SIGALRM, val );
     561        pthread_sigqueue( alarm_thread, SIGALRM, val );
    562562
    563563        // Wait for the preemption thread to finish
     
    633633        static_assert( sizeof( sigset_t ) == sizeof( cxt->uc_sigmask ), "Expected cxt->uc_sigmask to be of sigset_t" );
    634634        #endif
    635         if ( real_pthread_sigmask( SIG_SETMASK, (sigset_t *)&(cxt->uc_sigmask), 0p ) == -1 ) {
     635        if ( pthread_sigmask( SIG_SETMASK, (sigset_t *)&(cxt->uc_sigmask), 0p ) == -1 ) {
    636636                abort( "internal error, sigprocmask" );
    637637        }
     
    661661        sigset_t mask;
    662662        sigfillset(&mask);
    663         if ( real_pthread_sigmask( SIG_BLOCK, &mask, 0p ) == -1 ) {
     663        if ( pthread_sigmask( SIG_BLOCK, &mask, 0p ) == -1 ) {
    664664            abort( "internal error, pthread_sigmask" );
    665665        }
  • libcfa/src/interpose.cfa

    r7f6a7c9 r0bd46fd  
    4646
    4747        static void * library;
    48         static void * pthread_library;
    4948        if ( ! library ) {
    5049                #if defined( RTLD_NEXT )
     
    5958                #endif
    6059        } // if
    61         if ( ! pthread_library ) {
    62                 #if defined( RTLD_NEXT )
    63                         pthread_library = RTLD_NEXT;
    64                 #else
    65                         // missing RTLD_NEXT => must hard-code library name, assuming libstdc++
    66                         pthread_library = dlopen( "libpthread.so", RTLD_LAZY );
    67                         error = dlerror();
    68                         if ( error ) {
    69                                 abort( "interpose_symbol : failed to open libpthread, %s\n", error );
    70                         }
    71                 #endif
    72         } // if
    7360
    7461        union { generic_fptr_t fptr; void * ptr; } originalFunc;
     
    8572
    8673        error = dlerror();
    87         if ( error ) {
    88                 originalFunc.ptr = dlsym( pthread_library, symbol );
    89                 error = dlerror();
    90                 if (error){
    91                         abort( "interpose_symbol : internal error, %s\n", error );
    92                 }       // if
    93         }       // if
     74        if ( error ) abort( "interpose_symbol : internal error, %s\n", error );
    9475
    9576        return originalFunc.fptr;
     
    11192        void (* exit)( int ) __attribute__(( __noreturn__ ));
    11293        void (* abort)( void ) __attribute__(( __noreturn__ ));
    113         typeof(pthread_create) pthread_create;
    114         typeof(pthread_join) pthread_join;
    115         typeof(pthread_self) pthread_self;
    116         typeof(pthread_attr_init) pthread_attr_init;
    117         typeof(pthread_attr_setstack ) pthread_attr_setstack;
    118         typeof(pthread_attr_destroy) pthread_attr_destroy;
    119         typeof(pthread_attr_getstacksize) pthread_attr_getstacksize;
    120         typeof(pthread_sigmask) pthread_sigmask;
    121         typeof(pthread_sigqueue) pthread_sigqueue;
    12294} __cabi_libc;
    12395
     
    135107                INTERPOSE_LIBC( abort, version );
    136108                INTERPOSE_LIBC( exit , version );
    137                 INTERPOSE_LIBC( pthread_create , version );
    138                 INTERPOSE_LIBC( pthread_join , version );
    139                 INTERPOSE_LIBC( pthread_self , version );
    140                 INTERPOSE_LIBC( pthread_attr_init , version );
    141                 INTERPOSE_LIBC( pthread_attr_destroy , version );
    142                 INTERPOSE_LIBC( pthread_attr_setstack , version );
    143                 INTERPOSE_LIBC( pthread_attr_getstacksize , version );
    144                 INTERPOSE_LIBC( pthread_sigmask , version );
    145                 INTERPOSE_LIBC( pthread_sigqueue , version );
    146109#pragma GCC diagnostic pop
    147110
     
    204167        libcfa_public void exit( int status ) __attribute__(( __nothrow__, __leaf__, __noreturn__ )) {
    205168                __cabi_libc.exit( status );
    206         }
    207 
    208         libcfa_public int real_pthread_create(pthread_t *_thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg){
    209                 return __cabi_libc.pthread_create(_thread, attr, start_routine, arg);
    210         }
    211 
    212         libcfa_public int real_pthread_join(pthread_t _thread, void **retval){
    213                 return __cabi_libc.pthread_join(_thread, retval);
    214         }
    215 
    216         libcfa_public pthread_t real_pthread_self(void){
    217                 return __cabi_libc.pthread_self();
    218         }
    219         libcfa_public int real_pthread_attr_init(pthread_attr_t *attr){
    220                 return __cabi_libc.pthread_attr_init(attr);
    221         }
    222         libcfa_public int real_pthread_attr_destroy(pthread_attr_t *attr){
    223                 return __cabi_libc.pthread_attr_destroy(attr);
    224         }
    225         libcfa_public int real_pthread_attr_setstack( pthread_attr_t *attr, void *stackaddr, size_t stacksize ){
    226                 return __cabi_libc.pthread_attr_setstack(attr, stackaddr, stacksize);
    227         }
    228         libcfa_public int read_pthread_attr_getstacksize( const pthread_attr_t *attr, size_t *stacksize ){
    229                 return __cabi_libc.pthread_attr_getstacksize(attr, stacksize);
    230         }
    231         libcfa_public int real_pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset){
    232                 return __cabi_libc.pthread_sigmask(how, set, oldset);
    233         }
    234         libcfa_public int real_pthread_sigqueue(pthread_t _thread, int sig, const union sigval value){
    235                 return __cabi_libc.pthread_sigqueue(_thread, sig, value);
    236169        }
    237170}
Note: See TracChangeset for help on using the changeset viewer.