#include #include #include #include #include #include #include #include int test_signal; void test_handler(int signal, siginfo_t *info, void *context) { } void install_handlers(void) { struct sigaction sa; sa.sa_flags = SA_SIGINFO; sigemptyset(&sa.sa_mask); sa.sa_sigaction = test_handler; sigaction(test_signal, &sa, 0); } int main(void) { sigset_t sigset; test_signal = SIGRTMIN; install_handlers(); sigemptyset(&sigset); sigaddset(&sigset, SIGRTMIN); sigprocmask(SIG_BLOCK, &sigset, 0); { int r; int count = 0; do { r = pthread_kill(pthread_self(), test_signal); if (r == EAGAIN) { printf("pthread_kill returned EAGAIN, errno=%d, count=%d\n", errno, count); sleep(2); exit(27); } if (!r) count++; } while (!r); } }