posix: Ignore pshared for semaphores

Since we have only one process, sharing between processes is trivial.

Close #3124.
This commit is contained in:
Sebastian Huber
2017-09-12 11:50:39 +02:00
parent 2fc3246080
commit 18b32d7635
6 changed files with 9 additions and 16 deletions
@@ -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;
@@ -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
);
-7
View File
@@ -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;
-1
View File
@@ -55,7 +55,6 @@ int sem_init(
status = _POSIX_Semaphore_Create_support(
NULL,
0,
pshared,
value,
&the_semaphore
);
-1
View File
@@ -119,7 +119,6 @@ sem_t *sem_open(
status =_POSIX_Semaphore_Create_support(
name,
name_len,
false, /* not shared across processes */
value,
&the_semaphore
);
+9 -5
View File
@@ -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");