mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-01 07:56:50 +08:00
posix: Ignore pshared for semaphores
Since we have only one process, sharing between processes is trivial. Close #3124.
This commit is contained in:
@@ -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
|
||||
);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -55,7 +55,6 @@ int sem_init(
|
||||
status = _POSIX_Semaphore_Create_support(
|
||||
NULL,
|
||||
0,
|
||||
pshared,
|
||||
value,
|
||||
&the_semaphore
|
||||
);
|
||||
|
||||
@@ -119,7 +119,6 @@ sem_t *sem_open(
|
||||
status =_POSIX_Semaphore_Create_support(
|
||||
name,
|
||||
name_len,
|
||||
false, /* not shared across processes */
|
||||
value,
|
||||
&the_semaphore
|
||||
);
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user