[PATCH] posix: Ignore pshared for semaphores

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Sep 8 15:16:52 UTC 2017


----- Joel Sherrill <joel at rtems.org> schrieb:
> On Fri, Sep 8, 2017 at 8:33 AM, Sebastian Huber <
> sebastian.huber at embedded-brains.de> wrote:
> 
> > Since we have only one process, sharing between processes is trivial.
> >
> > Close #3124.
> > ---
> >  cpukit/posix/include/rtems/posix/semaphore.h     |  1 -
> >  cpukit/posix/include/rtems/posix/semaphoreimpl.h |  1 -
> >  cpukit/posix/src/semaphorecreatesupp.c           |  7 -------
> >  cpukit/posix/src/seminit.c                       |  1 -
> >  cpukit/posix/src/semopen.c                       |  1 -
> >  testsuites/psxtests/psxsem01/init.c              | 14 +++++++++-----
> >  6 files changed, 9 insertions(+), 16 deletions(-)
> >
> > diff --git a/cpukit/posix/include/rtems/posix/semaphore.h
> > b/cpukit/posix/include/rtems/posix/semaphore.h
> > index 45de4a93b9..6598397052 100644
> > --- a/cpukit/posix/include/rtems/posix/semaphore.h
> > +++ b/cpukit/posix/include/rtems/posix/semaphore.h
> > @@ -43,7 +43,6 @@ extern "C" {
> >  typedef struct {
> >     Objects_Control         Object;
> >     CORE_semaphore_Control  Semaphore;
> > -   int                     process_shared;
> >     bool                    named;
> >     bool                    linked;
> >     uint32_t                open_count;
> > diff --git a/cpukit/posix/include/rtems/posix/semaphoreimpl.h
> > b/cpukit/posix/include/rtems/posix/semaphoreimpl.h
> > index 2bafbe9b97..43440298ec 100644
> > --- a/cpukit/posix/include/rtems/posix/semaphoreimpl.h
> > +++ b/cpukit/posix/include/rtems/posix/semaphoreimpl.h
> > @@ -78,7 +78,6 @@ RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control
> > *_POSIX_Semaphore_Get(
> >  int _POSIX_Semaphore_Create_support(
> >    const char                *name,
> >    size_t                     name_len,
> > -  int                        pshared,
> >    unsigned int               value,
> >    POSIX_Semaphore_Control  **the_sem
> >  );
> > diff --git a/cpukit/posix/src/semaphorecreatesupp.c b/cpukit/posix/src/
> > semaphorecreatesupp.c
> > index d66e1942c9..4a33336230 100644
> > --- a/cpukit/posix/src/semaphorecreatesupp.c
> > +++ b/cpukit/posix/src/semaphorecreatesupp.c
> > @@ -42,7 +42,6 @@
> >  int _POSIX_Semaphore_Create_support(
> >    const char                *name_arg,
> >    size_t                     name_len,
> > -  int                        pshared,
> >    unsigned int               value,
> >    POSIX_Semaphore_Control  **the_sem
> >  )
> > @@ -50,10 +49,6 @@ int _POSIX_Semaphore_Create_support(
> >    POSIX_Semaphore_Control *the_semaphore;
> >    char                    *name;
> >
> > -  /* Sharing semaphores among processes is not currently supported */
> > -  if (pshared != 0)
> > -    rtems_set_errno_and_return_minus_one( ENOSYS );
> >
> 
> Why are you deleting this error check? I can see not storing the value or
> passing
> it to create support. But I think it still should be validated. We only
> support
> requests for process private. Anything else is an error.

Why is this an error? With only one process its easy to support sharing between processes. The text in the semaphore documentation is a bit vague. This description is a bit more clear:

http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutexattr_getpshared.html

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.


More information about the devel mailing list