Ignore EINTR in runtime_lock_full.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170810
138bc75d-0d04-0410-961f-
82ee72b054a4
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+#include <errno.h>
#include "runtime.h"
#include "go-assert.h"
static void
runtime_lock_full(Lock *l)
{
- if(sem_wait(&l->sem) != 0)
- runtime_throw("sem_wait failed");
+ for(;;){
+ if(sem_wait(&l->sem) == 0)
+ return;
+ if(errno != EINTR)
+ runtime_throw("sem_wait failed");
+ }
}
void