Date: Fri, 20 Oct 2006 00:00:44 GMT From: Bruce Evans <bde@zeta.org.au> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/104436: [PATCH] sys/sem.h should include sys/types.h Message-ID: <200610200000.k9K00ib7099403@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/104436; it has been noted by GNATS. From: Bruce Evans <bde@zeta.org.au> To: John Baldwin <jhb@FreeBSD.org> Cc: Cheng-Lung Sung <clsung@FreeBSD.org>, FreeBSD-gnats-submit@FreeBSD.org Subject: Re: kern/104436: [PATCH] sys/sem.h should include sys/types.h Date: Fri, 20 Oct 2006 09:54:11 +1000 (EST) On Thu, 19 Oct 2006, John Baldwin wrote: > On Tuesday 17 October 2006 20:09, Bruce Evans wrote: >> I did a quick review of symbols in sys/sem.h: >> - POSIX seems to overspecify the representation: "A semaphore shall be >> respresented by an anonymous struct containing the following members:" >> [semval, sempid, semncnt, semzcnt]". FreeBSD doesn't declare any of >> these struct members. > > It does, but 'struct sem' is private to kern/sysv_sem.c: > > struct sem { > u_short semval; /* semaphore value */ > pid_t sempid; /* pid of last operation */ > u_short semncnt; /* # awaiting semval > cval */ > u_short semzcnt; /* # awaiting semval = 0 */ > }; This is kernel-only (but only has semval and sempid) in Linux-2.6.10 too, so its visibility in FreeBSD seems to be OK. >> - FreeBSD declares several things that aren't required by POSIX and uses >> bad names for most of these. The worst ones are the struct member >> names `val', `buf' and `array'. POSIX cannot reserve these, and sem.h >> mostly uses a `sem' prefix to avoid such pollution. These seem to be >> implementation details that don't belong in the header anyway. > > Hmm the 'semun' union is actually passed as an arg to semctl() and the names > it uses seem to be standard as Linux, etc. use the same name. It is actually in POSIX, but at least in the old 2001 draft 7 that I looked at, it is only described under semctl() and is not mentioned under sem.h. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200610200000.k9K00ib7099403>