summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libc/gen/sem_wait.310
-rw-r--r--sys/kern/uipc_sem.c2
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);
OpenPOWER on IntegriCloud