[PATCH] posix: Ignore pshared for semaphores

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Sep 8 13:33:45 UTC 2017


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 );
-
   /*
    * Make a copy of the user's string for name just in case it was
    * dynamically constructed.
@@ -73,8 +68,6 @@ int _POSIX_Semaphore_Create_support(
     rtems_set_errno_and_return_minus_one( ENOSPC );
   }
 
-  the_semaphore->process_shared  = pshared;
-
   if ( name ) {
     the_semaphore->named = true;
     the_semaphore->open_count = 1;
diff --git a/cpukit/posix/src/seminit.c b/cpukit/posix/src/seminit.c
index 249edf67ee..cf06f6ce41 100644
--- a/cpukit/posix/src/seminit.c
+++ b/cpukit/posix/src/seminit.c
@@ -55,7 +55,6 @@ int sem_init(
   status = _POSIX_Semaphore_Create_support(
     NULL,
     0,
-    pshared,
     value,
     &the_semaphore
   );
diff --git a/cpukit/posix/src/semopen.c b/cpukit/posix/src/semopen.c
index b844b08bb4..98163cca8d 100644
--- a/cpukit/posix/src/semopen.c
+++ b/cpukit/posix/src/semopen.c
@@ -119,7 +119,6 @@ sem_t *sem_open(
   status =_POSIX_Semaphore_Create_support(
     name,
     name_len,
-    false,         /* not shared across processes */
     value,
     &the_semaphore
   );
diff --git a/testsuites/psxtests/psxsem01/init.c b/testsuites/psxtests/psxsem01/init.c
index 8601f926b3..9ba8935292 100644
--- a/testsuites/psxtests/psxsem01/init.c
+++ b/testsuites/psxtests/psxsem01/init.c
@@ -136,6 +136,14 @@ void *POSIX_Init(
 
   TEST_BEGIN();
 
+  puts( "Init: sem_init - SUCCESSFUL" );
+  status = sem_init(&sem2, 1, 1);
+  fatal_posix_service_status( status, 0, "sem_init with pshared != 0");
+
+  puts( "Init: sem_destroy - SUCCESSFUL" );
+  status = sem_destroy(&sem2);
+  fatal_posix_service_status( status, 0, "sem_destroy");
+
   puts( "Init: sem_init - UNSUCCESSFUL (EINVAL)" );
   status = sem_init(NULL, 0, 1);
   fatal_posix_service_status( status, -1, "sem_init error return status");
@@ -152,11 +160,6 @@ void *POSIX_Init(
   fatal_posix_service_status( status, -1, "sem_init error return status");
   fatal_posix_service_status( errno, ENOSPC, "sem_init errorno ENOSPC" );
 
-  puts( "Init: sem_init - UNSUCCESSFUL (ENOSYS -- pshared not supported)" );
-  status = sem_init(&sem2, 1, 1);
-  fatal_posix_service_status( status, -1, "sem_init error return status");
-  fatal_posix_service_status( errno, ENOSYS, "sem_init errno set to ENOSYS");
-
   puts( "Init: sem_getvalue - SUCCESSFUL ");
   for (i = 0; i < MAX_SEMS; i++) {
     status = sem_getvalue(&sems[i], &value);
@@ -165,6 +168,7 @@ void *POSIX_Init(
     fatal_posix_service_status( value, i, "sem_getvalue correct value" );
   }
   puts( "Init: sem_getvalue - UNSUCCESSFUL ");
+  sem2 = 0;
   status = sem_getvalue(&sem2, &value);
   fatal_posix_service_status( status, -1, "sem_getvalue error return status");
   fatal_posix_service_status( errno, EINVAL, "sem_getvalue errno EINVAL");
-- 
2.12.3



More information about the devel mailing list