X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fthread.c;h=ebdb2e464f5f69d743bf03d408531d42b1412925;hb=89823a09e0dd2869f7fea351d887f75e70548ea7;hp=80be9250298e7ee520d0818c9a5bf60ab2361bc7;hpb=1b56edad1bf47547bbcd3b98c809b6f933ba937e;p=sbcl.git diff --git a/src/runtime/thread.c b/src/runtime/thread.c index 80be925..ebdb2e4 100644 --- a/src/runtime/thread.c +++ b/src/runtime/thread.c @@ -3,6 +3,7 @@ #include #include #include +#include #ifndef CLONE_PARENT /* lameass glibc 2.2 doesn't define this */ #define CLONE_PARENT 0x00008000 /* even though the manpage documents it */ #endif @@ -282,7 +283,10 @@ void unblock_sigcont_and_sleep(void) sigset_t set; sigemptyset(&set); sigaddset(&set,SIGCONT); - sigwaitinfo(&set,0); + do { + errno=0; + sigwaitinfo(&set,0); + }while(errno==EINTR); sigprocmask(SIG_UNBLOCK,&set,0); } @@ -309,8 +313,8 @@ void gc_stop_the_world() * for them on each time around */ for(p=all_threads;p!=tail;p=p->next) { if(p==th) continue; - countdown_to_gc++; - kill(p->pid,SIG_STOP_FOR_GC); + countdown_to_gc++; + kill(p->pid,SIG_STOP_FOR_GC); } tail=all_threads; } else {