Fixing Posix semaphores

Peter Pentchev roam at ringlet.net
Tue Dec 21 17:15:12 PST 2004


On Wed, Dec 22, 2004 at 12:01:51AM +0000, Robert Watson wrote:
> 
> On Mon, 13 Dec 2004, Joe Kelsey wrote:
> 
> > I have a desire to fix posix semaphores in at least 5.3.  The current
> > implementation doesn't actually follow the "spirit" of the standard,
> > even though it technically qualifies in a somewhat degraded sense.  I
> > refer to the fact that the current implementation treats posix
> > semaphores as completely contained inside the kernel and essentially
> > divorced from the filesystem.  The true "spirit" of the standard places
> > the semaphores directly in the file system, similar to named pipes. 
> > However the current implementation treats the supplied "name" as a
> > 14-character identifier, required to begin with a slash and contain no
> > other slashes.  Pretty weak. 
> > 
> > Well, in order to fix this, we need to add file system code and come up
> > with a new type.  I currently have some time to spend on something like
> > this and am willing to put in whatever effort it takes.  Does anyone
> > want to add their own ideas or requirements? 
> 
> >From my perspective, the biggest win here is that it would permit
> different name spaces to trivially exist using multiple mountpoints of a
> "semfs".  This would make it easy to allow applications in different jails
> to use identical names without colliding. 
> 
> FWIW, my only experience with POSIX semaphores on a system other than
> FreeBSD is on Darwin, where a similar model is used to that on FreeBSD: a
> flat kernel-maintained name space is present.

I seem to remember either W. Richard Stevens's APUE, or Marc Rochkind's
AUP stating that:

1. the standards say that semaphore names ought to have filesystem
   semantics, but...
2. the standards leave it to the implementation to define whether
   slashes should be allowed at all except in the first position, so...
3. portable programs should only depend on a flat namespace,
   especially as...
4. there are widely-used OS's (ISTR Solaris, but ICBW) that only provide
   a flat namespace.

Thus, it would seem that even if somebody would do the work to really
tie the semaphore naming fully to the filesystem, still programs that
want to be Really Really Portable would not dare use this feature,
wonderful as it would be for those that do :(

G'luck,
Peter

-- 
Peter Pentchev	roam at ringlet.net    roam at cnsys.bg    roam at FreeBSD.org
PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint	FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
What would this sentence be like if pi were 3?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20041222/ed44dbd7/attachment.bin


More information about the freebsd-hackers mailing list