From 18b32d7635efbd1345846f786a51281437bcfd54 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 8 Sep 2017 15:25:47 +0200 Subject: posix: Ignore pshared for semaphores 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"); -- cgit v1.2.3