[PATCH 3/3] Use latest <semaphore.h> from FreeBSD for RTEMS

Corinna Vinschen vinschen@redhat.com
Wed Mar 11 10:42:00 GMT 2015

Hi Sebastian,

On Mar  9 14:03, Sebastian Huber wrote:
> Import the latest <semaphore.h> from FreeBSD and adjust it for RTEMS.
> The OpenMP support from GCC (libgomp) needs a <semaphore.h>.

Apart from the maverick implementation in libc/sys/linux, we don't
have any semaphore implementation.  This, plus the fact that the
type of sem_t is implementaiton-specific, makes me a bit reluctant
to include this header in newlib.  On some systems sizeof(sem_t)
is pointer sized.

If we add semaphore.h, we should make the definition of sem_t
conditional somehow, so e.g. Cygwin can reuse this file, removing its

Kind of like this:

> +#ifndef _SEMAPHORE_H_
> +#define _SEMAPHORE_H_
> +
> +#include <sys/cdefs.h>
> +#include <sys/_types.h>
> +
#ifdef __CYGWIN__
#ifndef __INSIDE_CYGWIN__
#elif defined (...)
/* Fallback, as on BSDs */
> +typedef	__uint32_t	sem_t;

> +
> +#define	SEM_FAILED	((sem_t *)0)
> +#define	SEM_VALUE_MAX	(__INT_MAX__ * 2U + 1U)

Should the definition of SEM_VALUE_MAX be __BSD_VISIBLE?  It's not a
definition required or even mentioned in POSIX.


Corinna Vinschen
Cygwin Maintainer
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/newlib/attachments/20150311/82ae9d5e/attachment.sig>

More information about the Newlib mailing list