Fixing Posix semaphores
Kamal R. Prasad
kamalpr at yahoo.com
Tue Dec 14 10:11:30 PST 2004
--- Joe Kelsey <joe at zircon.seattle.wa.us> wrote:
> On Tue, 2004-12-14 at 08:08 -0800, Kamal R. Prasad
> wrote:
> > --- Joe Kelsey <joe at zircon.seattle.wa.us> 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.
> >
> > From the opengroup website:-
> >
> >
>
http://www.opengroup.org/onlinepubs/7990989775/xsh/sem_open.html
> >
> > "It is unspecified whether the name appears in the
> > file system and is visible to functions that take
> > pathnames as arguments. "
> >
> > >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?
> > >
> >
> > You need to allow the user to provide a fully
> > qualified pathname as an argument -and if the
> > implementation doesn't allow that, that would be a
> > BUG. But requiring the supplied name to be a valid
> > pathname is not mandated by the std.
>
> The current implementation FAILS to allow arbitrary
> pathnames. The
> current implementation arbitrarily restricts the
> name to a string of not
> more than 14 characters optionally starting with a
> slash. This does not
> match pathnames on FreeBSD.
>
> Yes, I agree that the standard does not require
> pathnames, but it does
> say that the name can match the otherwise
> standardized pathname syntax
> (at least the POSIX pathname standard). The FreeBSD
> implementation
> clearly FAILS to allow POSIX pathnames.
>
Yeah -so the only fix for ensuring compliance is that
it allow a POSIX pathname as an argument. Many of the
posix requirements are a result of bending backwards
to deal with badly designed operating systems. It
doesn't mean that doing things their way [in this case
coupling the semaphore implementation to the
filesystem] can actually improve the OS.
> > BTW -how would
> > you deal with a diskless workstation running
> Freebsd?
>
> Why does this matter? If the system uses NFS, then
> all bets are off.
> If the system contains a FreeBSD file system, thenit
> works. What other
> choice could there ever be?
>
something like boot from flash/eeprom. I don't know
about freebsd as an instance -but many networking
devices do use netbsd that way. For the most part, you
wouldn't want to create a file on such a system.
regards
-kamal
> /Joe
>
>
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
More information about the freebsd-hackers
mailing list