summaryrefslogtreecommitdiffstats
path: root/c/src/exec/posix/src/semopen.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/exec/posix/src/semopen.c')
-rw-r--r--c/src/exec/posix/src/semopen.c124
1 files changed, 0 insertions, 124 deletions
diff --git a/c/src/exec/posix/src/semopen.c b/c/src/exec/posix/src/semopen.c
deleted file mode 100644
index d956f9a86b..0000000000
--- a/c/src/exec/posix/src/semopen.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * $Id$
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdarg.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <pthread.h>
-#include <semaphore.h>
-#include <limits.h>
-
-#include <rtems/system.h>
-#include <rtems/score/object.h>
-#include <rtems/posix/semaphore.h>
-#include <rtems/posix/time.h>
-#include <rtems/seterr.h>
-
-/*PAGE
- *
- * sem_open
- *
- * Opens a named semaphore. Used in conjunction with the sem_close
- * and sem_unlink commands.
- *
- * 11.2.3 Initialize/Open a Named Semaphore, P1003.1b-1993, p.221
- *
- * NOTE: When oflag is O_CREAT, then optional third and fourth
- * parameters must be present.
- */
-
-sem_t *sem_open(
- const char *name,
- int oflag,
- ...
- /* mode_t mode, */
- /* unsigned int value */
-)
-{
- va_list arg;
- mode_t mode;
- unsigned int value = 0;
- int status;
- sem_t the_semaphore_id;
- POSIX_Semaphore_Control *the_semaphore;
- Objects_Locations location;
-
- _Thread_Disable_dispatch();
-
- if ( oflag & O_CREAT ) {
- va_start(arg, oflag);
- mode = (mode_t) va_arg( arg, unsigned int );
- value = va_arg( arg, unsigned int );
- va_end(arg);
- }
-
- status = _POSIX_Semaphore_Name_to_id( name, &the_semaphore_id );
-
- /*
- * If the name to id translation worked, then the semaphore exists
- * and we can just return a pointer to the id. Otherwise we may
- * need to check to see if this is a "semaphore does not exist"
- * or some other miscellaneous error on the name.
- */
-
- if ( status ) {
-
- /*
- * Unless provided a valid name that did not already exist
- * and we are willing to create then it is an error.
- */
-
- if ( !( status == ENOENT && (oflag & O_CREAT) ) ) {
- _Thread_Enable_dispatch();
- rtems_set_errno_and_return_minus_one_cast( status, sem_t * );
- }
- } else {
-
- /*
- * Check for existence with creation.
- */
-
- if ( (oflag & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL) ) {
- _Thread_Enable_dispatch();
- rtems_set_errno_and_return_minus_one_cast( EEXIST, sem_t * );
- }
-
- the_semaphore = _POSIX_Semaphore_Get( &the_semaphore_id, &location );
- the_semaphore->open_count += 1;
- _Thread_Enable_dispatch();
- _Thread_Enable_dispatch();
- return (sem_t *)&the_semaphore->Object.id;
-
- }
-
- /*
- * At this point, the semaphore does not exist and everything has been
- * checked. We should go ahead and create a semaphore.
- */
-
- status =_POSIX_Semaphore_Create_support(
- name,
- FALSE, /* not shared across processes */
- value,
- &the_semaphore
- );
-
- /*
- * errno was set by Create_support, so don't set it again.
- */
-
- _Thread_Enable_dispatch();
-
- if ( status == -1 )
- return SEM_FAILED;
-
- return (sem_t *) &the_semaphore->Object.id;
-}
-
-