// Test whether profiling signals are sent to the thread // whose execution triggered the signal. #include #include #include #include #include #include #include static void handler(int); static void* looper(void*); enum { Nthread = 4, }; static pthread_t pmain, ploop[Nthread]; static int maincount, loopcount[Nthread]; int main(void) { int i; struct itimerval it; struct sigaction sa; pthread_cond_t cond; pthread_mutex_t mu; memset(&sa, 0, sizeof sa); sa.sa_handler = handler; sa.sa_flags = SA_RESTART; memset(&sa.sa_mask, 0xff, sizeof sa.sa_mask); sigaction(SIGPROF, &sa, 0); pmain = pthread_self(); for(i=0; i