Ignore:
Timestamp:
Aug 10, 2022, 8:33:42 PM (2 years ago)
Author:
z277zhu <z277zhu@…>
Branches:
ADT, ast-experimental, master, pthread-emulation
Children:
7f6a7c9
Parents:
20be782
Message:

fix pthread_sig* interpose problems; add test doc

Signed-off-by: z277zhu <z277zhu@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/preemption.cfa

    r20be782 r428adbc  
    368368        sigset_t oldset;
    369369        int ret;
    370         ret = pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
     370        ret = real_pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
    371371        if(ret != 0) { abort("ERROR sigprocmask returned %d", ret); }
    372372
     
    401401        sigaddset( &mask, sig );
    402402
    403         if ( pthread_sigmask( SIG_UNBLOCK, &mask, 0p ) == -1 ) {
     403        if ( real_pthread_sigmask( SIG_UNBLOCK, &mask, 0p ) == -1 ) {
    404404            abort( "internal error, pthread_sigmask" );
    405405        }
     
    412412        sigaddset( &mask, sig );
    413413
    414         if ( pthread_sigmask( SIG_BLOCK, &mask, 0p ) == -1 ) {
     414        if ( real_pthread_sigmask( SIG_BLOCK, &mask, 0p ) == -1 ) {
    415415                abort( "internal error, pthread_sigmask" );
    416416        }
     
    420420static void preempt( processor * this ) {
    421421        sigval_t value = { PREEMPT_NORMAL };
    422         pthread_sigqueue( this->kernel_thread, SIGUSR1, value );
     422        real_pthread_sigqueue( this->kernel_thread, SIGUSR1, value );
    423423}
    424424
     
    431431        sigset_t oldset;
    432432        int ret;
    433         ret = pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
     433        ret = real_pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
    434434        if(ret != 0) { abort("ERROR sigprocmask returned %d", ret); }
    435435
     
    450450        sigset_t oldset;
    451451        int ret;
    452         ret = pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
     452        ret = real_pthread_sigmask(0, ( const sigset_t * ) 0p, &oldset);  // workaround trac#208: cast should be unnecessary
    453453        if(ret != 0) { abort("ERROR sigprocmask returned %d", ret); }
    454454
     
    608608        sigval val;
    609609        val.sival_int = 0;
    610         pthread_sigqueue( alarm_thread, SIGALRM, val );
     610        real_pthread_sigqueue( alarm_thread, SIGALRM, val );
    611611
    612612        // Wait for the preemption thread to finish
     
    682682        static_assert( sizeof( sigset_t ) == sizeof( cxt->uc_sigmask ), "Expected cxt->uc_sigmask to be of sigset_t" );
    683683        #endif
    684         if ( pthread_sigmask( SIG_SETMASK, (sigset_t *)&(cxt->uc_sigmask), 0p ) == -1 ) {
     684        if ( real_pthread_sigmask( SIG_SETMASK, (sigset_t *)&(cxt->uc_sigmask), 0p ) == -1 ) {
    685685                abort( "internal error, sigprocmask" );
    686686        }
     
    710710        sigset_t mask;
    711711        sigfillset(&mask);
    712         if ( pthread_sigmask( SIG_BLOCK, &mask, 0p ) == -1 ) {
     712        if ( real_pthread_sigmask( SIG_BLOCK, &mask, 0p ) == -1 ) {
    713713            abort( "internal error, pthread_sigmask" );
    714714        }
Note: See TracChangeset for help on using the changeset viewer.