[PATCH] posix: Ignore pshared for semaphores

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Sep 8 18:51:55 UTC 2017


Ok,  but why do you think that this is an error?  We can share the synchronization objects among processes.

----- Joel Sherrill <joel at rtems.org> schrieb:
> I have no idea how that is much clearer except that pthreads have defined
> macros for scope and thus an invalid value is an error.
> 
> But POSIX isn't good at addressing error cases which existed based on the
> profiles defined in PSE52-54. And those were not updated for POSIX 2008 or
> 2013
> 
> On Sep 8, 2017 10:16 AM, "Sebastian Huber" <
> sebastian.huber at embedded-brains.de> wrote:
> 
> >
> > ----- 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.
> >

-- 
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