svn commit: r200274 - head/lib/libc/gen
Jilles Tjoelker
jilles at FreeBSD.org
Tue Dec 8 12:48:06 PST 2009
Author: jilles
Date: Tue Dec 8 20:48:06 2009
New Revision: 200274
URL: http://svn.freebsd.org/changeset/base/200274
Log:
sem_init(3): document process shared semaphores and their restrictions
Modified:
head/lib/libc/gen/sem_init.3
Modified: head/lib/libc/gen/sem_init.3
==============================================================================
--- head/lib/libc/gen/sem_init.3 Tue Dec 8 20:47:10 2009 (r200273)
+++ head/lib/libc/gen/sem_init.3 Tue Dec 8 20:48:06 2009 (r200274)
@@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 15, 2000
+.Dd December 8, 2009
.Dt SEM_INIT 3
.Os
.Sh NAME
@@ -48,8 +48,7 @@ to have the value
.Fa value .
A non-zero value for
.Fa pshared
-specifies a shared semaphore that can be used by multiple processes, which this
-implementation is not capable of.
+specifies a shared semaphore that can be used by multiple processes.
.Pp
Following a successful call to
.Fn sem_init ,
@@ -78,8 +77,6 @@ argument exceeds
.Dv SEM_VALUE_MAX .
.It Bq Er ENOSPC
Memory allocation error.
-.It Bq Er EPERM
-Unable to initialize a shared semaphore.
.El
.Sh SEE ALSO
.Xr sem_destroy 3 ,
@@ -93,16 +90,10 @@ The
.Fn sem_init
function conforms to
.St -p1003.1-96 .
-.Pp
-This implementation does not support shared semaphores, and reports this fact
-by setting
-.Va errno
-to
-.Er EPERM .
-This is perhaps a stretch of the intention of
-.Tn POSIX ,
-but is
-compliant, with the caveat that
-.Fn sem_init
-always reports a permissions error when an attempt to create a shared semaphore
-is made.
+.Sh BUGS
+A sem_t is a pointer to a separately allocated structure,
+therefore process shared semaphores only work between related processes
+and do not perform very well
+(each operation is a system call,
+while single-process semaphores only do a system call
+if they need to block or wake up a thread).
More information about the svn-src-head
mailing list