Ignore:
Timestamp:
Aug 10, 2022, 8:33:42 PM (3 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@…>

Location:
libcfa/src/concurrency
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified libcfa/src/concurrency/io.cfa

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

    r20be782 r428adbc  
    337337        //      iopoll.run = false;
    338338        //      sigval val = { 1 };
    339         //      pthread_sigqueue( iopoll.thrd, SIGUSR1, val );
     339        //      real_pthread_sigqueue( iopoll.thrd, SIGUSR1, val );
    340340
    341341        //      // Make sure all this is done
  • TabularUnified 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        }
  • TabularUnified libcfa/src/concurrency/pthread.cfa

    r20be782 r428adbc  
    666666
    667667
    668     // int pthread_sigmask( int /* how */, const sigset_t * /* set */, sigset_t * /* oset */ ) libcfa_public __THROW {
    669         //     return 0;
    670     // } // pthread_sigmask
     668    int pthread_sigmask( int /* how */, const sigset_t * /* set */, sigset_t * /* oset */ ) libcfa_public __THROW {
     669             return 0;
     670    } // pthread_sigmask
    671671
    672672    int pthread_kill( pthread_t _thread __attribute__(( unused )), int sig ) libcfa_public __THROW {
     
    679679    } // pthread_kill
    680680
    681     // int pthread_sigqueue(pthread_t , int sig, const union sigval) libcfa_public __THROW {
    682     //     return 0;
    683     // } // pthread_sigqueue
     681    int pthread_sigqueue(pthread_t , int sig, const union sigval) libcfa_public __THROW {
     682        return 0;
     683    } // pthread_sigqueue
    684684
    685685    //######################### Scheduling #########################
Note: See TracChangeset for help on using the changeset viewer.