diff options
-rw-r--r-- | lib/libc/gen/sem_wait.3 | 10 | ||||
-rw-r--r-- | sys/kern/uipc_sem.c | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/libc/gen/sem_wait.3 b/lib/libc/gen/sem_wait.3 index 18e9586..b8303d4 100644 --- a/lib/libc/gen/sem_wait.3 +++ b/lib/libc/gen/sem_wait.3 @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 15, 2000 +.Dd April 16, 2013 .Dt SEM_WAIT 3 .Os .Sh NAME @@ -75,6 +75,14 @@ points to an invalid semaphore. .El .Pp Additionally, +.Fn sem_wait +will fail if: +.Bl -tag -width Er +.Pp +.It Bq Er EINTR +A signal interrupted this function. +.El +Additionally, .Fn sem_trywait will fail if: .Bl -tag -width Er diff --git a/sys/kern/uipc_sem.c b/sys/kern/uipc_sem.c index 509f32e..0ea84fd 100644 --- a/sys/kern/uipc_sem.c +++ b/sys/kern/uipc_sem.c @@ -846,6 +846,8 @@ kern_sem_wait(struct thread *td, semid_t id, int tryflag, err: mtx_unlock(&sem_lock); fdrop(fp, td); + if (error == ERESTART) + error = EINTR; DP(("<<< kern_sem_wait leaving, pid=%d, error = %d\n", (int)td->td_proc->p_pid, error)); return (error); |