Bug#336577: linux-kernel-headers: <linux/sem.h> broken on mips, mipsel
On Mon, Oct 31, 2005 at 05:51:45PM +0100, Matej Vela wrote:
> Daniel Jacobowitz <email@example.com> writes:
> > On Mon, Oct 31, 2005 at 10:45:55AM +0100, Matej Vela wrote:
> >> Including <linux/sem.h> results in the following error on mips and mipsel:
> > Why are you using this header from userspace? In general it's the
> > wrong choice.
> > The only advantage over the userspace header is that it provides union
> > semun; but POSIX is quite clear that it is the application's
> > responsibility to provide that type.
> For SEMVMX. And you're right, sysconf(_SC_SEM_VALUE_MAX) would be a
> better choice, but it isn't implemented... Another solution would be
> to call semctl(..., SEM_INFO, arg) and use arg.__buf->semvmx, but that
> seemed unportable and inelegant (given that, as you note, the caller
> must also define union semun).
> If the fix is non-trivial, feel free to downgrade this to wishlist,
> and I'll change dctc and dcgui to use _POSIX_SEM_VALUE_MAX.
In general, most of these headers are not intended or supported for
userspace use; so the correct thing to do is either to use the POSIX
equivalents, or else to copy the bits you need from some particular
version of the kernel headers.