summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/include
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2017-12-23 18:18:56 +1100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-25 08:45:26 +0100
commit2afb22b7e1ebcbe40373ff7e0efae7d207c655a9 (patch)
tree44759efe9374f13200a97e96d91bd9a2b7e5ce2a /cpukit/posix/include
parentMAINTAINERS: Add myself to Write After Approval. (diff)
downloadrtems-2afb22b7e1ebcbe40373ff7e0efae7d207c655a9.tar.bz2
Remove make preinstall
A speciality of the RTEMS build system was the make preinstall step. It copied header files from arbitrary locations into the build tree. The header files were included via the -Bsome/build/tree/path GCC command line option. This has at least seven problems: * The make preinstall step itself needs time and disk space. * Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error. * There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult. * The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit. * An introduction of a new build system is difficult. * Include paths specified by the -B option are system headers. This may suppress warnings. * The parallel build had sporadic failures on some hosts. This patch removes the make preinstall step. All installed header files are moved to dedicated include directories in the source tree. Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc, etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g. erc32, imx, qoriq, etc. The new cpukit include directories are: * cpukit/include * cpukit/score/cpu/@RTEMS_CPU@/include * cpukit/libnetworking The new BSP include directories are: * bsps/include * bsps/@RTEMS_CPU@/include * bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include There are build tree include directories for generated files. The include directory order favours the most general header file, e.g. it is not possible to override general header files via the include path order. The "bootstrap -p" option was removed. The new "bootstrap -H" option should be used to regenerate the "headers.am" files. Update #3254.
Diffstat (limited to 'cpukit/posix/include')
-rw-r--r--cpukit/posix/include/aio.h193
-rw-r--r--cpukit/posix/include/mqueue.h218
-rw-r--r--cpukit/posix/include/rtems/posix/aio_misc.h113
-rw-r--r--cpukit/posix/include/rtems/posix/barrierimpl.h99
-rw-r--r--cpukit/posix/include/rtems/posix/condimpl.h184
-rw-r--r--cpukit/posix/include/rtems/posix/config.h120
-rw-r--r--cpukit/posix/include/rtems/posix/key.h95
-rw-r--r--cpukit/posix/include/rtems/posix/keyimpl.h177
-rw-r--r--cpukit/posix/include/rtems/posix/mmanimpl.h56
-rw-r--r--cpukit/posix/include/rtems/posix/mqueue.h71
-rw-r--r--cpukit/posix/include/rtems/posix/mqueueimpl.h183
-rw-r--r--cpukit/posix/include/rtems/posix/muteximpl.h487
-rw-r--r--cpukit/posix/include/rtems/posix/posixapi.h146
-rw-r--r--cpukit/posix/include/rtems/posix/priorityimpl.h109
-rw-r--r--cpukit/posix/include/rtems/posix/psignal.h35
-rw-r--r--cpukit/posix/include/rtems/posix/psignalimpl.h140
-rw-r--r--cpukit/posix/include/rtems/posix/pthread.h55
-rw-r--r--cpukit/posix/include/rtems/posix/pthreadattrimpl.h95
-rw-r--r--cpukit/posix/include/rtems/posix/pthreadimpl.h129
-rw-r--r--cpukit/posix/include/rtems/posix/ptimer.h88
-rw-r--r--cpukit/posix/include/rtems/posix/rwlockimpl.h64
-rw-r--r--cpukit/posix/include/rtems/posix/semaphore.h56
-rw-r--r--cpukit/posix/include/rtems/posix/semaphoreimpl.h143
-rw-r--r--cpukit/posix/include/rtems/posix/shm.h213
-rw-r--r--cpukit/posix/include/rtems/posix/shmimpl.h135
-rw-r--r--cpukit/posix/include/rtems/posix/sigset.h45
-rw-r--r--cpukit/posix/include/rtems/posix/spinlockimpl.h58
-rw-r--r--cpukit/posix/include/rtems/posix/threadsup.h98
-rw-r--r--cpukit/posix/include/rtems/posix/timer.h60
-rw-r--r--cpukit/posix/include/rtems/posix/timerimpl.h134
30 files changed, 0 insertions, 3799 deletions
diff --git a/cpukit/posix/include/aio.h b/cpukit/posix/include/aio.h
deleted file mode 100644
index 95ed0fdb6c..0000000000
--- a/cpukit/posix/include/aio.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Asynchronous Input and Output
- *
- * This file contains the definitions related to POSIX Asynchronous
- * Input and Output,
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _AIO_H
-#define _AIO_H
-
-#include <sys/cdefs.h>
-#include <unistd.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup POSIX_AIO POSIX Asynchronous I/O Support
- *
- * @ingroup POSIXAPI
- *
- * @brief POSIX Asynchronous Input and Output
- *
- */
-/**@{**/
-
-#if defined(_POSIX_ASYNCHRONOUS_IO)
-
-/*
- * 6.7.1 Data Definitions for Asynchronous Input and Output,
- * P1003.1b-1993, p. 151
- */
-
-#include <sys/types.h>
-#include <signal.h>
-#include <time.h>
-#include <fcntl.h>
-
-/*
- * 6.7.1.2 Manifest Constants, P1003.1b-1993, p. 153
- */
-
-#define AIO_CANCELED 0 /* all requested operations have been canceled */
-#define AIO_NOTCANCELED 1 /* some of the operations could not be canceled */
- /* since they are in progress */
-#define AIO_ALLDONE 2 /* none of the requested operations could be */
- /* canceled since they are already complete */
-
-/* lio_listio() options */
-
-/*
- * LIO modes
- */
-#define LIO_WAIT 0 /* calling process is to suspend until the */
- /* operation is complete */
-#define LIO_NOWAIT 1 /* calling process is to continue execution while */
- /* the operation is performed and no notification */
- /* shall be given when the operation is completed */
-
-/*
- * LIO opcodes
- */
-#define LIO_NOP 0 /* no transfer is requested */
-#define LIO_READ 1 /* request a read() */
-#define LIO_WRITE 2 /* request a write() */
-#define LIO_SYNC 3 /* needed by aio_fsync() */
-
-/*
- * 6.7.1.1 Asynchronous I/O Control Block, P1003.1b-1993, p. 151
- */
-
-struct aiocb {
- /* public */
- int aio_fildes; /* File descriptor */
- off_t aio_offset; /* File offset */
- volatile void *aio_buf; /* Location of buffer */
- size_t aio_nbytes; /* Length of transfer */
- int aio_reqprio; /* Request priority offset */
- struct sigevent aio_sigevent; /* Signal number and value */
- int aio_lio_opcode; /* Operation to be performed */
- /* private */
- int error_code; /* Used for aio_error() */
- ssize_t return_value; /* Used for aio_return() */
-};
-
-/*
- * 6.7.2 Asynchronous Read, P1003.1b-1993, p. 154
- */
-
-int aio_read(
- struct aiocb *aiocbp
-);
-
-/*
- * 6.7.3 Asynchronous Write, P1003.1b-1993, p. 155
- */
-
-int aio_write(
- struct aiocb *aiocbp
-);
-
-/*
- * 6.7.4 List Directed I/O, P1003.1b-1993, p. 158
- */
-
-int lio_listio(
- int mode,
- struct aiocb *__restrict const list[__restrict],
- int nent,
- struct sigevent *__restrict sig
-);
-
-/*
- * 6.7.5 Retrieve Error of Asynchronous I/O Operation, P1003.1b-1993, p. 161
- */
-
-int aio_error(
- const struct aiocb *aiocbp
-);
-
-/*
- * 6.7.6 Retrieve Return Status of Asynchronous I/O Operation,
- * P1003.1b-1993, p. 162
- */
-
-ssize_t aio_return(
- const struct aiocb *aiocbp
-);
-
-/**
- * @brief Cancel asynchronous I/O operation.
- *
- * 6.7.7 Cancel Asynchronous I/O Operation, P1003.1b-1993, p. 163
- *
- * @param[in] filedes is the file descriptor
- * @param[in] aiocbp is a pointer to the asynchronous I/O control block
- *
- * @retval AIO_CANCELED The requested operation(s) were canceled.
- * @retval AIO_NOTCANCELED Some of the requested operation(s) cannot be
- * canceled since they are in progress.
- * @retval AIO_ALLDONE None of the requested operation(s) could be canceled
- * since they are already complete
- */
-int aio_cancel(
- int filedes,
- struct aiocb *aiocbp
-);
-
-/*
- * 6.7.7 Wait for Asynchronous I/O Request, P1003.1b-1993, p. 164
- */
-
-int aio_suspend(
- const struct aiocb * const list[],
- int nent,
- const struct timespec *timeout
-);
-
-#if defined(_POSIX_SYNCHRONIZED_IO)
-
-/*
- * 6.7.9 Asynchronous File Synchronization, P1003.1b-1993, p. 166
- */
-
-int aio_fsync(
- int op,
- struct aiocb *aiocbp
-);
-
-#endif /* _POSIX_SYNCHRONIZED_IO */
-
-#endif /* _POSIX_ASYNCHRONOUS_IO */
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/mqueue.h b/cpukit/posix/include/mqueue.h
deleted file mode 100644
index 36733a4730..0000000000
--- a/cpukit/posix/include/mqueue.h
+++ /dev/null
@@ -1,218 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Message Queues
- *
- * This file contains the definitions related to POSIX Message Queues.
- *
- * The structure of the routines is identical to that of POSIX
- * Message_queues to leave the option of having unnamed message
- * queues at a future date. They are currently not part of the
- * POSIX standard but unnamed message_queues are. This is also
- * the reason for the apparently unnecessary tracking of
- * the process_shared attribute. [In addition to the fact that
- * it would be trivial to add pshared to the mq_attr structure
- * and have process private message queues.]
- *
- * This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open
- * time.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _MQUEUE_H
-#define _MQUEUE_H
-
-
-#include <unistd.h>
-
-#if defined(_POSIX_MESSAGE_PASSING)
-
-#include <sys/types.h>
-
-#include <rtems/system.h>
-#include <rtems/score/object.h>
-
-/**
- * @defgroup POSIX_MQUEUE POSIX Message Queues
- *
- * @ingroup POSIXAPI
- *
- */
-/**@{**/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * 15.1.1 Data Structures, P1003.1b-1993, p. 271
- */
-
-/**
- * Message queue id type.
- *
- * NOTE: Use uint32_t since all POSIX Ids are 32-bit currently.
- */
-typedef uint32_t mqd_t;
-
-/**
- * This is the message queue attributes structure.
- */
-struct mq_attr {
- /** This is the message queue flags */
- long mq_flags;
- /** This is the maximum number of messages */
- long mq_maxmsg;
- /** This is the maximum message size */
- long mq_msgsize;
- /** This is the mumber of messages currently queued */
- long mq_curmsgs;
-};
-
-/**
- * 15.2.2 Open a Message Queue, P1003.1b-1993, p. 272
- */
-mqd_t mq_open(
- const char *name,
- int oflag,
- ...
-);
-
-/**
- * 15.2.2 Close a Message Queue, P1003.1b-1993, p. 275
- */
-int mq_close(
- mqd_t mqdes
-);
-
-/**
- * @brief Remove a message queue.
- *
- * 15.2.2 Remove a Message Queue, P1003.1b-1993, p. 276
- *
- * NOTE: The structure of the routines is identical to that of POSIX
- * Message_queues to leave the option of having unnamed message
- * queues at a future date. They are currently not part of the
- * POSIX standard but unnamed message_queues are. This is also
- * the reason for the apparently unnecessary tracking of
- * the process_shared attribute. [In addition to the fact that
- * it would be trivial to add pshared to the mq_attr structure
- * and have process private message queues.]
- *
- * This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open
- * time.
- */
-int mq_unlink(
- const char *name
-);
-
-/**
- * 15.2.4 Send a Message to a Message Queue, P1003.1b-1993, p. 277
- *
- * NOTE; P1003.4b/D8, p. 45 adds mq_timedsend().
- */
-int mq_send(
- mqd_t mqdes,
- const char *msg_ptr,
- size_t msg_len,
- unsigned int msg_prio
-);
-
-#if defined(_POSIX_TIMEOUTS)
-
-#include <time.h>
-
-/**
- * @brief Send a message to a message queue.
- *
- * @see mq_send()
- */
-int mq_timedsend(
- mqd_t mqdes,
- const char *msg_ptr,
- size_t msg_len,
- unsigned int msg_prio,
- const struct timespec *abstime
-);
-
-#endif /* _POSIX_TIMEOUTS */
-
-/**
- * @brief Receive a message from a message queue.
- *
- * 15.2.5 Receive a Message From a Message Queue, P1003.1b-1993, p. 279
- *
- * NOTE: P1003.4b/D8, p. 45 adds mq_timedreceive().
- */
-ssize_t mq_receive(
- mqd_t mqdes,
- char *msg_ptr,
- size_t msg_len,
- unsigned int *msg_prio
-);
-
-#if defined(_POSIX_TIMEOUTS)
-
-ssize_t mq_timedreceive(
- mqd_t mqdes,
- char *__restrict msg_ptr,
- size_t msg_len,
- unsigned int *__restrict msg_prio,
- const struct timespec *__restrict abstime
-);
-
-#endif /* _POSIX_TIMEOUTS */
-
-#if defined(_POSIX_REALTIME_SIGNALS)
-
-/**
- * @brief Notify process that a message is available on a queue.
- *
- * 15.2.6 Notify Process that a Message is Available on a Queue,
- * P1003.1b-1993, p. 280
- */
-int mq_notify(
- mqd_t mqdes,
- const struct sigevent *notification
-);
-
-#endif /* _POSIX_REALTIME_SIGNALS */
-
-/**
- * @brief Set message queue attributes.
- *
- * 15.2.7 Set Message Queue Attributes, P1003.1b-1993, p. 281
- */
-int mq_setattr(
- mqd_t mqdes,
- const struct mq_attr *__restrict mqstat,
- struct mq_attr *__restrict omqstat
-);
-
-/*
- * 15.2.8 Get Message Queue Attributes, P1003.1b-1993, p. 283
- */
-
-int mq_getattr(
- mqd_t mqdes,
- struct mq_attr *mqstat
-);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _POSIX_MESSAGE_PASSING */
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/aio_misc.h b/cpukit/posix/include/rtems/posix/aio_misc.h
deleted file mode 100644
index aeccbad98f..0000000000
--- a/cpukit/posix/include/rtems/posix/aio_misc.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Asynchronous Input and Output Private Support
- *
- * This defines private information for the AIO implementation.
- */
-
-/*
- * Copyright 2010, Alin Rus <alin.codejunkie@gmail.com>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _AIO_MISC_H
-#define _AIO_MISC_H
-
-#include <stdio.h>
-#include <string.h>
-#include <aio.h>
-#include <pthread.h>
-#include <rtems.h>
-#include <rtems/chain.h>
-#include <rtems/system.h>
-#include <rtems/seterr.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- /* Actual request being processed */
- typedef struct
- {
- rtems_chain_node next_prio; /* chain requests in order of priority */
- int policy; /* If _POSIX_PRIORITIZED_IO and
- _POSIX_PRIORITY_SCHEDULING are defined */
- int priority; /* see above */
- pthread_t caller_thread; /* used for notification */
- struct aiocb *aiocbp; /* aio control block */
- } rtems_aio_request;
-
- typedef struct
- {
- rtems_chain_node next_fd; /* order fd chains in queue */
- rtems_chain_control perfd; /* chain of requests for this fd */
- int fildes; /* file descriptor to be processed */
- int new_fd; /* if this is a newly created chain */
- pthread_mutex_t mutex;
- pthread_cond_t cond;
-
- } rtems_aio_request_chain;
-
- typedef struct
- {
- pthread_mutex_t mutex;
- pthread_cond_t new_req;
- pthread_attr_t attr;
-
- rtems_chain_control work_req; /* chains being worked by active threads */
- rtems_chain_control idle_req; /* fd chains waiting to be processed */
- unsigned int initialized; /* specific value if queue is initialized */
- int active_threads; /* the number of active threads */
- int idle_threads; /* number of idle threads */
-
- } rtems_aio_queue;
-
-extern rtems_aio_queue aio_request_queue;
-
-#define AIO_QUEUE_INITIALIZED 0xB00B
-
-#ifndef AIO_MAX_THREADS
-#define AIO_MAX_THREADS 5
-#endif
-
-#ifndef AIO_MAX_QUEUE_SIZE
-#define AIO_MAX_QUEUE_SIZE 30
-#endif
-
-int rtems_aio_init (void);
-int rtems_aio_enqueue (rtems_aio_request *req);
-rtems_aio_request_chain *rtems_aio_search_fd
-(
- rtems_chain_control *chain,
- int fildes,
- int create
-);
-void rtems_aio_remove_fd (rtems_aio_request_chain *r_chain);
-int rtems_aio_remove_req (rtems_chain_control *chain,
- struct aiocb *aiocbp);
-
-#ifdef RTEMS_DEBUG
-#include <assert.h>
-
-#define AIO_assert(_x) assert(_x)
-#define AIO_printf(_x) printf(_x)
-#else
-#define AIO_assert(_x)
-#define AIO_printf(_x)
-#endif
-
-#define rtems_aio_set_errno_return_minus_one( _error, _aiocbp ) \
- do { (_aiocbp)->error_code = (_error); \
- (_aiocbp)->return_value = -1; \
- rtems_set_errno_and_return_minus_one (_error);} while(0)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/cpukit/posix/include/rtems/posix/barrierimpl.h b/cpukit/posix/include/rtems/posix/barrierimpl.h
deleted file mode 100644
index a1794b82fd..0000000000
--- a/cpukit/posix/include/rtems/posix/barrierimpl.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * @file
- *
- * @brief Inlined Routines from the POSIX Barrier Manager
- *
- * This file contains the static inlin implementation of the inlined
- * routines from the POSIX Barrier Manager.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * Copyright (c) 2017 embedded brains GmbH
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_BARRIERIMPL_H
-#define _RTEMS_POSIX_BARRIERIMPL_H
-
-#include <errno.h>
-#include <pthread.h>
-
-#include <rtems/score/percpu.h>
-#include <rtems/score/threadqimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define POSIX_BARRIER_MAGIC 0x1cf03773UL
-
-#define POSIX_BARRIER_TQ_OPERATIONS &_Thread_queue_Operations_FIFO
-
-typedef struct {
- unsigned long flags;
- Thread_queue_Syslock_queue Queue;
- unsigned int count;
- unsigned int waiting_threads;
-} POSIX_Barrier_Control;
-
-static inline POSIX_Barrier_Control *_POSIX_Barrier_Get(
- pthread_barrier_t *_barrier
-)
-{
- return (POSIX_Barrier_Control *) _barrier;
-}
-
-static inline Thread_Control *_POSIX_Barrier_Queue_acquire(
- POSIX_Barrier_Control *barrier,
- Thread_queue_Context *queue_context
-)
-{
- ISR_Level level;
- Thread_Control *executing;
-
- _Thread_queue_Context_initialize( queue_context );
- _Thread_queue_Context_ISR_disable( queue_context, level );
- _Thread_queue_Context_set_ISR_level( queue_context, level );
- executing = _Thread_Executing;
- _Thread_queue_Queue_acquire_critical(
- &barrier->Queue.Queue,
- &executing->Potpourri_stats,
- &queue_context->Lock_context.Lock_context
- );
-
- return executing;
-}
-
-static inline void _POSIX_Barrier_Queue_release(
- POSIX_Barrier_Control *barrier,
- Thread_queue_Context *queue_context
-)
-{
- _Thread_queue_Queue_release(
- &barrier->Queue.Queue,
- &queue_context->Lock_context.Lock_context
- );
-}
-
-#define POSIX_BARRIER_VALIDATE_OBJECT( bar ) \
- do { \
- if ( \
- ( bar ) == NULL \
- || ( (uintptr_t) ( bar ) ^ POSIX_BARRIER_MAGIC ) != ( bar )->_flags \
- ) { \
- return EINVAL; \
- } \
- } while ( 0 )
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/condimpl.h b/cpukit/posix/include/rtems/posix/condimpl.h
deleted file mode 100644
index 66e09bf6d8..0000000000
--- a/cpukit/posix/include/rtems/posix/condimpl.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/**
- * @file
- *
- * This include file contains the static inline implementation of the private
- * inlined routines for POSIX condition variables.
- */
-
-/*
- * COPYRIGHT (c) 1989-2013.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_CONDIMPL_H
-#define _RTEMS_POSIX_CONDIMPL_H
-
-#include <errno.h>
-#include <pthread.h>
-
-#include <rtems/score/percpu.h>
-#include <rtems/score/threadqimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
- unsigned long flags;
- Thread_queue_Syslock_queue Queue;
- pthread_mutex_t *mutex;
-} POSIX_Condition_variables_Control;
-
-#define POSIX_CONDITION_VARIABLES_CLOCK_MONOTONIC 0x1UL
-
-#define POSIX_CONDITION_VARIABLES_FLAGS_MASK 0x1UL
-
-#define POSIX_CONDITION_VARIABLES_MAGIC 0x18dfb1feUL
-
-/**
- * Constant to indicate condition variable does not currently have
- * a mutex assigned to it.
- */
-#define POSIX_CONDITION_VARIABLES_NO_MUTEX NULL
-
-#define POSIX_CONDITION_VARIABLES_TQ_OPERATIONS &_Thread_queue_Operations_FIFO
-
-#define POSIX_CONDITION_VARIABLE_OF_THREAD_QUEUE_QUEUE( queue ) \
- RTEMS_CONTAINER_OF( \
- queue, POSIX_Condition_variables_Control, Queue.Queue )
-
-/**
- * The default condition variable attributes structure.
- */
-extern const pthread_condattr_t _POSIX_Condition_variables_Default_attributes;
-
-static inline POSIX_Condition_variables_Control *_POSIX_Condition_variables_Get(
- pthread_cond_t *cond
-)
-{
- return (POSIX_Condition_variables_Control *) cond;
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Condition_variables_Initialize(
- POSIX_Condition_variables_Control *the_cond,
- const pthread_condattr_t *the_attr
-)
-{
- unsigned long flags;
-
- _Thread_queue_Queue_initialize( &the_cond->Queue.Queue, NULL );
- the_cond->mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;
-
- flags = (uintptr_t) the_cond ^ POSIX_CONDITION_VARIABLES_MAGIC;
- flags &= ~POSIX_CONDITION_VARIABLES_FLAGS_MASK;
-
- if ( the_attr->clock == CLOCK_MONOTONIC ) {
- flags |= POSIX_CONDITION_VARIABLES_CLOCK_MONOTONIC;
- }
-
- the_cond->flags = flags;
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Condition_variables_Destroy(
- POSIX_Condition_variables_Control *the_cond
-)
-{
- the_cond->flags = ~the_cond->flags;
-}
-
-RTEMS_INLINE_ROUTINE clockid_t _POSIX_Condition_variables_Get_clock(
- unsigned long flags
-)
-{
- if ( ( flags & POSIX_CONDITION_VARIABLES_CLOCK_MONOTONIC ) != 0 ) {
- return CLOCK_MONOTONIC;
- }
-
- return CLOCK_REALTIME;
-}
-
-RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Condition_variables_Acquire(
- POSIX_Condition_variables_Control *the_cond,
- Thread_queue_Context *queue_context
-)
-{
- ISR_Level level;
- Thread_Control *executing;
-
- _Thread_queue_Context_ISR_disable( queue_context, level );
- _Thread_queue_Context_set_ISR_level( queue_context, level );
- executing = _Thread_Executing;
- _Thread_queue_Queue_acquire_critical(
- &the_cond->Queue.Queue,
- &executing->Potpourri_stats,
- &queue_context->Lock_context.Lock_context
- );
-
- return executing;
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Condition_variables_Release(
- POSIX_Condition_variables_Control *the_cond,
- Thread_queue_Context *queue_context
-)
-{
- _Thread_queue_Queue_release(
- &the_cond->Queue.Queue,
- &queue_context->Lock_context.Lock_context
- );
-}
-
-/**
- * @brief Implements wake up version of the "signal" operation.
- *
- * A support routine which implements guts of the broadcast and single task
- * wake up version of the "signal" operation.
- */
-int _POSIX_Condition_variables_Signal_support(
- pthread_cond_t *cond,
- bool is_broadcast
-);
-
-/**
- * @brief POSIX condition variables wait support.
- *
- * A support routine which implements guts of the blocking, non-blocking, and
- * timed wait version of condition variable wait routines.
- */
-int _POSIX_Condition_variables_Wait_support(
- pthread_cond_t *cond,
- pthread_mutex_t *mutex,
- const struct timespec *abstime
-);
-
-bool _POSIX_Condition_variables_Auto_initialization(
- POSIX_Condition_variables_Control *the_cond
-);
-
-#define POSIX_CONDITION_VARIABLES_VALIDATE_OBJECT( the_cond, flags ) \
- do { \
- if ( ( the_cond ) == NULL ) { \
- return EINVAL; \
- } \
- flags = ( the_cond )->flags; \
- if ( \
- ( ( (uintptr_t) ( the_cond ) ^ POSIX_CONDITION_VARIABLES_MAGIC ) \
- & ~POSIX_CONDITION_VARIABLES_FLAGS_MASK ) \
- != ( flags & ~POSIX_CONDITION_VARIABLES_FLAGS_MASK ) \
- ) { \
- if ( !_POSIX_Condition_variables_Auto_initialization( the_cond ) ) { \
- return EINVAL; \
- } \
- } \
- } while ( 0 )
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/config.h b/cpukit/posix/include/rtems/posix/config.h
deleted file mode 100644
index e90dc27011..0000000000
--- a/cpukit/posix/include/rtems/posix/config.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * @file
- *
- * @brief User Defined Configuration Parameters Specific For The POSIX API
- *
- * This include file contains the table of user defined configuration
- * parameters specific for the POSIX API.
- */
-
-/*
- * COPYRIGHT (c) 1989-2014.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_CONFIG_H
-#define _RTEMS_POSIX_CONFIG_H
-
-#include <stdint.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicConfig Configuration
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the application's configuration
- * of the Classic API including the maximum number of each class of objects.
- */
-/**@{*/
-
-/**
- * For now, we are only allowing the user to specify the entry point
- * and stack size for POSIX initialization threads.
- */
-typedef struct {
- /** This is the entry point for a POSIX initialization thread. */
- void *(*thread_entry)(void *);
- /** This is the stack size for a POSIX initialization thread. */
- int stack_size;
-} posix_initialization_threads_table;
-
-/**
- * The following records define the POSIX Configuration Table.
- * The information contained in this table is required in all
- * RTEMS systems which include POSIX threads support, whether
- * single or multiprocessor. This table primarily defines the
- * following:
- *
- * + required number of each object type
- */
-typedef struct {
- /**
- * This field contains the maximum number of POSIX API
- * threads which are configured for this application.
- */
- uint32_t maximum_threads;
-
- /**
- * This field contains the maximum number of POSIX API
- * timers which are configured for this application.
- */
- uint32_t maximum_timers;
-
- /**
- * This field contains the maximum number of POSIX API
- * queued signals which are configured for this application.
- */
- uint32_t maximum_queued_signals;
-
- /**
- * This field contains the maximum number of POSIX API
- * message queues which are configured for this application.
- */
- uint32_t maximum_message_queues;
-
- /**
- * This field contains the maximum number of POSIX API
- * semaphores which are configured for this application.
- */
- uint32_t maximum_semaphores;
-
- /**
- * Maximum configured number of POSIX Shared memory objects.
- */
- uint32_t maximum_shms;
-
- /**
- * This field contains the number of POSIX API Initialization
- * threads listed in @a User_initialization_thread_table.
- */
- uint32_t number_of_initialization_threads;
-
- /**
- * This field contains the list of POSIX API Initialization threads.
- */
- posix_initialization_threads_table *User_initialization_threads_table;
-} posix_api_configuration_table;
-
-/**
- * @brief POSIX API configuration table.
- *
- * This is the POSIX API Configuration Table expected to be generated
- * by confdefs.h.
- */
-extern posix_api_configuration_table Configuration_POSIX_API;
-
-/**@}*/
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/key.h b/cpukit/posix/include/rtems/posix/key.h
deleted file mode 100644
index 1f09916f06..0000000000
--- a/cpukit/posix/include/rtems/posix/key.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Key Private Support
- *
- * This include file contains all the private support information for
- * POSIX key.
- */
-
-/*
- * Copyright (c) 2012 Zhongwei Yao.
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- * Copyright (c) 2016 embedded brains GmbH.
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_KEY_H
-#define _RTEMS_POSIX_KEY_H
-
-#include <pthread.h>
-
-#include <rtems/score/chain.h>
-#include <rtems/score/object.h>
-#include <rtems/score/rbtree.h>
-#include <rtems/score/thread.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup POSIX_KEY POSIX Key
- *
- * @ingroup POSIXAPI
- *
- */
-/**@{**/
-
-/**
- * @brief Represents POSIX key and value pair.
- */
-typedef struct {
- /**
- * @brief The chain node for the key value pairs chain in POSIX_Keys_Control.
- */
- Chain_Node Key_node;
-
- /**
- * @brief The tree node for the lookup tree in Thread_Keys_information.
- */
- RBTree_Node Lookup_node;
-
- /**
- * @brief The POSIX key identifier used as the tree key.
- */
- pthread_key_t key;
-
- /**
- * @brief The corresponding thread.
- */
- Thread_Control *thread;
-
- /**
- * @brief The thread specific POSIX key value.
- */
- void *value;
-} POSIX_Keys_Key_value_pair;
-
-/**
- * @brief The data structure used to manage a POSIX key.
- */
-typedef struct {
- /** This field is the Object control structure. */
- Objects_Control Object;
- /** This field is the data destructor. */
- void (*destructor) (void *);
-
- /**
- * @brief Key value pairs of this key.
- */
- Chain_Control Key_value_pairs;
- } POSIX_Keys_Control;
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/keyimpl.h b/cpukit/posix/include/rtems/posix/keyimpl.h
deleted file mode 100644
index 1148123638..0000000000
--- a/cpukit/posix/include/rtems/posix/keyimpl.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/**
- * @file
- *
- * @brief Private Inlined Routines for POSIX Key's
- *
- * This include file contains the static inline implementation of the private
- * inlined routines for POSIX key's.
- */
-
-/*
- * COPYRIGHT (c) 1989-1999.
- * On-Line Applications Research Corporation (OAR).
- * Copyright (c) 2016 embedded brains GmbH.
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#include <rtems/posix/key.h>
-#include <rtems/score/chainimpl.h>
-#include <rtems/score/freechain.h>
-#include <rtems/score/objectimpl.h>
-#include <rtems/score/percpu.h>
-
-#ifndef _RTEMS_POSIX_KEYIMPL_H
-#define _RTEMS_POSIX_KEYIMPL_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @addtogroup POSIX_KEY
- *
- * @{
- */
-
-/**
- * @brief The information control block used to manage this class of objects.
- */
-extern Objects_Information _POSIX_Keys_Information;
-
-/**
- * @brief This freechain is used as a memory pool for POSIX_Keys_Key_value_pair.
- */
-extern Freechain_Control _POSIX_Keys_Keypool;
-
-#define POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( node ) \
- RTEMS_CONTAINER_OF( node, POSIX_Keys_Key_value_pair, Lookup_node )
-
-/**
- * @brief Allocate a keys control block.
- *
- * This function allocates a keys control block from
- * the inactive chain of free keys control blocks.
- */
-
-RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Allocate( void )
-{
- return (POSIX_Keys_Control *) _Objects_Allocate( &_POSIX_Keys_Information );
-}
-
-/**
- * @brief Free a keys control block.
- *
- * This routine frees a keys control block to the
- * inactive chain of free keys control blocks.
- */
-RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free(
- POSIX_Keys_Control *the_key
-)
-{
- _Objects_Free( &_POSIX_Keys_Information, &the_key->Object );
-}
-
-RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Get( pthread_key_t key )
-{
- return (POSIX_Keys_Control *)
- _Objects_Get_no_protection( (Objects_Id) key, &_POSIX_Keys_Information );
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Keys_Key_value_acquire(
- Thread_Control *the_thread,
- ISR_lock_Context *lock_context
-)
-{
- _ISR_lock_ISR_disable_and_acquire( &the_thread->Keys.Lock, lock_context );
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Keys_Key_value_release(
- Thread_Control *the_thread,
- ISR_lock_Context *lock_context
-)
-{
- _ISR_lock_Release_and_ISR_enable( &the_thread->Keys.Lock, lock_context );
-}
-
-POSIX_Keys_Key_value_pair * _POSIX_Keys_Key_value_allocate( void );
-
-RTEMS_INLINE_ROUTINE void _POSIX_Keys_Key_value_free(
- POSIX_Keys_Key_value_pair *key_value_pair
-)
-{
- _Chain_Extract_unprotected( &key_value_pair->Key_node );
- _Freechain_Put( &_POSIX_Keys_Keypool, key_value_pair );
-}
-
-RTEMS_INLINE_ROUTINE bool _POSIX_Keys_Key_value_equal(
- const void *left,
- const RBTree_Node *right
-)
-{
- const pthread_key_t *the_left;
- const POSIX_Keys_Key_value_pair *the_right;
-
- the_left = left;
- the_right = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( right );
-
- return *the_left == the_right->key;
-}
-
-RTEMS_INLINE_ROUTINE bool _POSIX_Keys_Key_value_less(
- const void *left,
- const RBTree_Node *right
-)
-{
- const pthread_key_t *the_left;
- const POSIX_Keys_Key_value_pair *the_right;
-
- the_left = left;
- the_right = POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( right );
-
- return *the_left < the_right->key;
-}
-
-RTEMS_INLINE_ROUTINE void *_POSIX_Keys_Key_value_map( RBTree_Node *node )
-{
- return POSIX_KEYS_RBTREE_NODE_TO_KEY_VALUE_PAIR( node );
-}
-
-RTEMS_INLINE_ROUTINE POSIX_Keys_Key_value_pair *_POSIX_Keys_Key_value_find(
- pthread_key_t key,
- const Thread_Control *the_thread
-)
-{
- return _RBTree_Find_inline(
- &the_thread->Keys.Key_value_pairs,
- &key,
- _POSIX_Keys_Key_value_equal,
- _POSIX_Keys_Key_value_less,
- _POSIX_Keys_Key_value_map
- );
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Keys_Key_value_insert(
- pthread_key_t key,
- POSIX_Keys_Key_value_pair *key_value_pair,
- Thread_Control *the_thread
-)
-{
- _RBTree_Insert_inline(
- &the_thread->Keys.Key_value_pairs,
- &key_value_pair->Lookup_node,
- &key,
- _POSIX_Keys_Key_value_less
- );
-}
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/mmanimpl.h b/cpukit/posix/include/rtems/posix/mmanimpl.h
deleted file mode 100644
index e1cc672331..0000000000
--- a/cpukit/posix/include/rtems/posix/mmanimpl.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * @file
- *
- * @brief Internal Support for POSIX 1003.1b 6.3.1 - map pages of memory
- *
- */
-
-/*
- * Copyright (c) 2012 Chris Johns
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_MMANIMPL_H
-#define _RTEMS_POSIX_MMANIMPL_H
-
-#include <rtems/libio_.h>
-#include <rtems/chain.h> /* FIXME: use score chains for proper layering? */
-#include <rtems/posix/shm.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* FIXME: add Doxygen */
-
-/**
- * Every mmap'ed region has a mapping.
- */
-typedef struct mmap_mappings_s {
- rtems_chain_node node; /**< The mapping chain's node */
- void* addr; /**< The address of the mapped memory */
- size_t len; /**< The length of memory mapped */
- int flags; /**< The mapping flags */
- POSIX_Shm_Control *shm; /**< The shared memory object or NULL */
-} mmap_mapping;
-
-extern rtems_chain_control mmap_mappings;
-
-static inline void mmap_mappings_lock_obtain( void )
-{
- rtems_libio_lock();
-}
-
-static inline void mmap_mappings_lock_release( void )
-{
- rtems_libio_unlock();
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/cpukit/posix/include/rtems/posix/mqueue.h b/cpukit/posix/include/rtems/posix/mqueue.h
deleted file mode 100644
index cdf94514af..0000000000
--- a/cpukit/posix/include/rtems/posix/mqueue.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Message Queues Private Private Support
- *
- * This include file contains all the private support information for
- * POSIX Message Queues.
- *
- * The structure of the routines is identical to that of POSIX
- * Message_queues to leave the option of having unnamed message
- * queues at a future date. They are currently not part of the
- * POSIX standard but unnamed message_queues are. This is also
- * the reason for the apparently unnecessary tracking of
- * the process_shared attribute. [In addition to the fact that
- * it would be trivial to add pshared to the mq_attr structure
- * and have process private message queues.]
- *
- * This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open
- * time.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_MQUEUE_H
-#define _RTEMS_POSIX_MQUEUE_H
-
-#include <signal.h>
-#include <mqueue.h> /* struct mq_attr */
-#include <rtems/score/coremsg.h>
-#include <rtems/score/object.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup POSIX_MQUEUE_P Message Queues Private Support
- *
- * @ingroup POSIXAPI
- *
- */
-/**@{**/
-
-/*
- * Data Structure used to manage a POSIX message queue
- */
-
-typedef struct {
- Objects_Control Object;
- CORE_message_queue_Control Message_queue;
- bool linked;
- uint32_t open_count;
- struct sigevent notification;
- int oflag;
-} POSIX_Message_queue_Control;
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/mqueueimpl.h b/cpukit/posix/include/rtems/posix/mqueueimpl.h
deleted file mode 100644
index 6813a3ef88..0000000000
--- a/cpukit/posix/include/rtems/posix/mqueueimpl.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
- * @file
- *
- * @brief Private Inlined Routines for POSIX Message Queue
- *
- * This include file contains the static inline implementation of the private
- * inlined routines for POSIX Message Queue.
- */
-
-/*
- * COPYRIGHT (c) 1989-2013.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_MQUEUE_INL
-#define _RTEMS_POSIX_MQUEUE_INL
-
-#include <rtems/posix/mqueue.h>
-#include <rtems/posix/posixapi.h>
-#include <rtems/score/coremsgimpl.h>
-#include <rtems/score/threadqimpl.h>
-
-#include <rtems/seterr.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * This defines the information control block used to manage
- * this class of objects.
- */
-extern Objects_Information _POSIX_Message_queue_Information;
-
-/**
- * @brief Delete a POSIX Message Queue
- *
- * This routine supports the mq_unlink and mq_close routines by
- * doing most of the work involved with removing a message queue.
- */
-void _POSIX_Message_queue_Delete(
- POSIX_Message_queue_Control *the_mq,
- Thread_queue_Context *queue_context
-);
-
-/*@
- * @brief POSIX Message Queue Receive Support
- *
- * This routine supports the various flavors of receiving a message.
- *
- * @note The structure of the routines is identical to that of POSIX
- * Message_queues to leave the option of having unnamed message
- * queues at a future date. They are currently not part of the
- * POSIX standard but unnamed message_queues are. This is also
- * the reason for the apparently unnecessary tracking of
- * the process_shared attribute. [In addition to the fact that
- * it would be trivial to add pshared to the mq_attr structure
- * and have process private message queues.]
- *
- * @note This code ignores the O_RDONLY/O_WRONLY/O_RDWR flag at open time.
- */
-ssize_t _POSIX_Message_queue_Receive_support(
- mqd_t mqdes,
- char *msg_ptr,
- size_t msg_len,
- unsigned int *msg_prio,
- const struct timespec *abstime,
- Thread_queue_Enqueue_callout enqueue_callout
-);
-
-/**
- * @brief POSIX Message Queue Send Support
- *
- * This routine posts a message to a specified message queue.
- */
-int _POSIX_Message_queue_Send_support(
- mqd_t mqdes,
- const char *msg_ptr,
- size_t msg_len,
- unsigned int msg_prio,
- const struct timespec *abstime,
- Thread_queue_Enqueue_callout enqueue_callout
-);
-
-RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *
- _POSIX_Message_queue_Allocate_unprotected( void )
-{
- return (POSIX_Message_queue_Control *)
- _Objects_Allocate_unprotected( &_POSIX_Message_queue_Information );
-}
-
-/**
- * @brief POSIX Message Queue Free
- *
- * This routine frees a message queue control block to the
- * inactive chain of free message queue control blocks.
- */
-RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free(
- POSIX_Message_queue_Control *the_mq
-)
-{
- _Objects_Free( &_POSIX_Message_queue_Information, &the_mq->Object );
-}
-
-
-RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *_POSIX_Message_queue_Get(
- Objects_Id id,
- Thread_queue_Context *queue_context
-)
-{
- _Thread_queue_Context_initialize( queue_context );
- return (POSIX_Message_queue_Control *) _Objects_Get(
- id,
- &queue_context->Lock_context.Lock_context,
- &_POSIX_Message_queue_Information
- );
-}
-
-/*
- * @brief POSIX Message Queue Convert Message Priority to Score
- *
- * This method converts a POSIX message priority to the priorities used
- * by the Score.
- */
-RTEMS_INLINE_ROUTINE CORE_message_queue_Submit_types
- _POSIX_Message_queue_Priority_to_core(
- unsigned int priority
-)
-{
- return (CORE_message_queue_Submit_types) priority * -1;
-}
-
-
-/*
- * @brief POSIX Message Queue Convert Message Priority from Score
- *
- * This method converts a POSIX message priority from the priorities used
- * by the Score.
- */
-RTEMS_INLINE_ROUTINE unsigned int _POSIX_Message_queue_Priority_from_core(
- CORE_message_queue_Submit_types priority
-)
-{
- /* absolute value without a library dependency */
- return (unsigned int) ((priority >= 0) ? priority : -priority);
-}
-
-/**
- * @brief POSIX Message Queue Remove from Namespace
- */
-RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Namespace_remove (
- POSIX_Message_queue_Control *the_mq
-)
-{
- _Objects_Namespace_remove(
- &_POSIX_Message_queue_Information, &the_mq->Object );
-}
-
-RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *
-_POSIX_Message_queue_Get_by_name(
- const char *name,
- size_t *name_length_p,
- Objects_Get_by_name_error *error
-)
-{
- return (POSIX_Message_queue_Control *) _Objects_Get_by_name(
- &_POSIX_Message_queue_Information,
- name,
- name_length_p,
- error
- );
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/muteximpl.h b/cpukit/posix/include/rtems/posix/muteximpl.h
deleted file mode 100644
index 435b43634d..0000000000
--- a/cpukit/posix/include/rtems/posix/muteximpl.h
+++ /dev/null
@@ -1,487 +0,0 @@
-/**
- * @file
- *
- * @brief Private Inlined Routines for POSIX Mutex's.
- *
- * This include file contains the static inline implementation of the private
- * inlined routines for POSIX mutex's.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_MUTEXIMPL_H
-#define _RTEMS_POSIX_MUTEXIMPL_H
-
-#include <errno.h>
-#include <pthread.h>
-
-#include <rtems/score/percpu.h>
-#include <rtems/score/muteximpl.h>
-#include <rtems/score/threadimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
- unsigned long flags;
- Mutex_recursive_Control Recursive;
- Priority_Node Priority_ceiling;
- const Scheduler_Control *scheduler;
-} POSIX_Mutex_Control;
-
-#define POSIX_MUTEX_PROTOCOL_MASK 0x3UL
-
-#define POSIX_MUTEX_RECURSIVE 0x4UL
-
-#define POSIX_MUTEX_FLAGS_MASK 0x7UL
-
-#define POSIX_MUTEX_MAGIC 0x961c13b8UL
-
-#define POSIX_MUTEX_NO_PROTOCOL_TQ_OPERATIONS &_Thread_queue_Operations_FIFO
-
-#define POSIX_MUTEX_PRIORITY_INHERIT_TQ_OPERATIONS \
- &_Thread_queue_Operations_priority_inherit
-
-#define POSIX_MUTEX_PRIORITY_CEILING_TQ_OPERATIONS \
- &_Thread_queue_Operations_priority
-
-/**
- * @brief Supported POSIX mutex protocols.
- *
- * Must be in synchronization with POSIX_Mutex_Control::protocol.
- */
-typedef enum {
- POSIX_MUTEX_NO_PROTOCOL,
- POSIX_MUTEX_PRIORITY_INHERIT,
- POSIX_MUTEX_PRIORITY_CEILING
-} POSIX_Mutex_Protocol;
-
-/**
- * The default mutex attributes structure.
- */
-extern const pthread_mutexattr_t _POSIX_Mutex_Default_attributes;
-
-RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Mutex_Acquire(
- POSIX_Mutex_Control *the_mutex,
- Thread_queue_Context *queue_context
-)
-{
- ISR_Level level;
- Thread_Control *executing;
-
- _Thread_queue_Context_initialize( queue_context );
- _Thread_queue_Context_ISR_disable( queue_context, level );
- _Thread_queue_Context_set_ISR_level( queue_context, level );
- executing = _Thread_Executing;
- _Thread_queue_Queue_acquire_critical(
- &the_mutex->Recursive.Mutex.Queue.Queue,
- &executing->Potpourri_stats,
- &queue_context->Lock_context.Lock_context
- );
-
- return executing;
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Mutex_Release(
- POSIX_Mutex_Control *the_mutex,
- Thread_queue_Context *queue_context
-)
-{
- _Thread_queue_Queue_release(
- &the_mutex->Recursive.Mutex.Queue.Queue,
- &queue_context->Lock_context.Lock_context
- );
-}
-
-RTEMS_INLINE_ROUTINE POSIX_Mutex_Protocol _POSIX_Mutex_Get_protocol(
- unsigned long flags
-)
-{
- return flags & POSIX_MUTEX_PROTOCOL_MASK;
-}
-
-RTEMS_INLINE_ROUTINE bool _POSIX_Mutex_Is_recursive(
- unsigned long flags
-)
-{
- return ( flags & POSIX_MUTEX_RECURSIVE ) != 0;
-}
-
-RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Mutex_Get_owner(
- const POSIX_Mutex_Control *the_mutex
-)
-{
- return the_mutex->Recursive.Mutex.Queue.Queue.owner;
-}
-
-RTEMS_INLINE_ROUTINE bool _POSIX_Mutex_Is_locked(
- const POSIX_Mutex_Control *the_mutex
-)
-{
- return _POSIX_Mutex_Get_owner( the_mutex ) != NULL;
-}
-
-Status_Control _POSIX_Mutex_Seize_slow(
- POSIX_Mutex_Control *the_mutex,
- const Thread_queue_Operations *operations,
- Thread_Control *executing,
- const struct timespec *abstime,
- Thread_queue_Context *queue_context
-);
-
-RTEMS_INLINE_ROUTINE void _POSIX_Mutex_Set_owner(
- POSIX_Mutex_Control *the_mutex,
- Thread_Control *owner
-)
-{
- the_mutex->Recursive.Mutex.Queue.Queue.owner = owner;
-}
-
-RTEMS_INLINE_ROUTINE bool _POSIX_Mutex_Is_owner(
- const POSIX_Mutex_Control *the_mutex,
- const Thread_Control *the_thread
-)
-{
- return _POSIX_Mutex_Get_owner( the_mutex ) == the_thread;
-}
-
-static Status_Control _POSIX_Mutex_Lock_nested(
- POSIX_Mutex_Control *the_mutex,
- unsigned long flags
-)
-{
-
- if ( _POSIX_Mutex_Is_recursive( flags ) ) {
- ++the_mutex->Recursive.nest_level;
- return STATUS_SUCCESSFUL;
- } else {
- return STATUS_NESTING_NOT_ALLOWED;
- }
-}
-
-RTEMS_INLINE_ROUTINE Status_Control _POSIX_Mutex_Seize(
- POSIX_Mutex_Control *the_mutex,
- unsigned long flags,
- const Thread_queue_Operations *operations,
- Thread_Control *executing,
- const struct timespec *abstime,
- Thread_queue_Context *queue_context
-)
-{
- Thread_Control *owner;
-
- owner = _POSIX_Mutex_Get_owner( the_mutex );
-
- if ( owner == NULL ) {
- _POSIX_Mutex_Set_owner( the_mutex, executing );
- _Thread_Resource_count_increment( executing );
- _POSIX_Mutex_Release( the_mutex, queue_context );
- return STATUS_SUCCESSFUL;
- }
-
- if ( owner == executing ) {
- Status_Control status;
-
- status = _POSIX_Mutex_Lock_nested( the_mutex, flags );
- _POSIX_Mutex_Release( the_mutex, queue_context );
- return status;
- }
-
- return _POSIX_Mutex_Seize_slow(
- the_mutex,
- operations,
- executing,
- abstime,
- queue_context
- );
-}
-
-RTEMS_INLINE_ROUTINE Status_Control _POSIX_Mutex_Surrender(
- POSIX_Mutex_Control *the_mutex,
- const Thread_queue_Operations *operations,
- Thread_Control *executing,
- Thread_queue_Context *queue_context
-)
-{
- unsigned int nest_level;
- Thread_queue_Heads *heads;
-
- if ( !_POSIX_Mutex_Is_owner( the_mutex, executing ) ) {
- _POSIX_Mutex_Release( the_mutex, queue_context );
- return STATUS_NOT_OWNER;
- }
-
- nest_level = the_mutex->Recursive.nest_level;
-
- if ( nest_level > 0 ) {
- the_mutex->Recursive.nest_level = nest_level - 1;
- _POSIX_Mutex_Release( the_mutex, queue_context );
- return STATUS_SUCCESSFUL;
- }
-
- _Thread_Resource_count_decrement( executing );
- _POSIX_Mutex_Set_owner( the_mutex, NULL );
-
- heads = the_mutex->Recursive.Mutex.Queue.Queue.heads;
-
- if ( heads == NULL ) {
- _POSIX_Mutex_Release( the_mutex, queue_context );
- return STATUS_SUCCESSFUL;
- }
-
- _Thread_queue_Surrender(
- &the_mutex->Recursive.Mutex.Queue.Queue,
- heads,
- executing,
- queue_context,
- operations
- );
- return STATUS_SUCCESSFUL;
-}
-
-RTEMS_INLINE_ROUTINE const Scheduler_Control *_POSIX_Mutex_Get_scheduler(
- const POSIX_Mutex_Control *the_mutex
-)
-{
-#if defined(RTEMS_SMP)
- return the_mutex->scheduler;
-#else
- return &_Scheduler_Table[ 0 ];
-#endif
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Mutex_Set_priority(
- POSIX_Mutex_Control *the_mutex,
- Priority_Control priority_ceiling,
- Thread_queue_Context *queue_context
-)
-{
- Thread_Control *owner;
-
- owner = _POSIX_Mutex_Get_owner( the_mutex );
-
- if ( owner != NULL ) {
- _Thread_Wait_acquire( owner, queue_context );
- _Thread_Priority_change(
- owner,
- &the_mutex->Priority_ceiling,
- priority_ceiling,
- false,
- queue_context
- );
- _Thread_Wait_release( owner, queue_context );
- } else {
- the_mutex->Priority_ceiling.priority = priority_ceiling;
- }
-}
-
-RTEMS_INLINE_ROUTINE Priority_Control _POSIX_Mutex_Get_priority(
- const POSIX_Mutex_Control *the_mutex
-)
-{
- return the_mutex->Priority_ceiling.priority;
-}
-
-RTEMS_INLINE_ROUTINE Status_Control _POSIX_Mutex_Ceiling_set_owner(
- POSIX_Mutex_Control *the_mutex,
- Thread_Control *owner,
- Thread_queue_Context *queue_context
-)
-{
- ISR_lock_Context lock_context;
- Scheduler_Node *scheduler_node;
- Per_CPU_Control *cpu_self;
-
- _Thread_Wait_acquire_default_critical( owner, &lock_context );
-
- scheduler_node = _Thread_Scheduler_get_home_node( owner );
-
- if (
- _Priority_Get_priority( &scheduler_node->Wait.Priority )
- < the_mutex->Priority_ceiling.priority
- ) {
- _Thread_Wait_release_default_critical( owner, &lock_context );
- _POSIX_Mutex_Release( the_mutex, queue_context );
- return STATUS_MUTEX_CEILING_VIOLATED;
- }
-
- _POSIX_Mutex_Set_owner( the_mutex, owner );
- _Thread_Resource_count_increment( owner );
- _Thread_Priority_add(
- owner,
- &the_mutex->Priority_ceiling,
- queue_context
- );
- _Thread_Wait_release_default_critical( owner, &lock_context );
-
- cpu_self = _Thread_queue_Dispatch_disable( queue_context );
- _POSIX_Mutex_Release( the_mutex, queue_context );
- _Thread_Priority_update( queue_context );
- _Thread_Dispatch_enable( cpu_self );
- return STATUS_SUCCESSFUL;
-}
-
-RTEMS_INLINE_ROUTINE Status_Control _POSIX_Mutex_Ceiling_seize(
- POSIX_Mutex_Control *the_mutex,
- unsigned long flags,
- Thread_Control *executing,
- const struct timespec *abstime,
- Thread_queue_Context *queue_context
-)
-{
- Thread_Control *owner;
-
- owner = _POSIX_Mutex_Get_owner( the_mutex );
-
- if ( owner == NULL ) {
-#if defined(RTEMS_SMP)
- if (
- _Thread_Scheduler_get_home( executing )
- != _POSIX_Mutex_Get_scheduler( the_mutex )
- ) {
- _POSIX_Mutex_Release( the_mutex, queue_context );
- return STATUS_NOT_DEFINED;
- }
-#endif
-
- _Thread_queue_Context_clear_priority_updates( queue_context );
- return _POSIX_Mutex_Ceiling_set_owner(
- the_mutex,
- executing,
- queue_context
- );
- }
-
- if ( owner == executing ) {
- Status_Control status;
-
- status = _POSIX_Mutex_Lock_nested( the_mutex, flags );
- _POSIX_Mutex_Release( the_mutex, queue_context );
- return status;
- }
-
- return _POSIX_Mutex_Seize_slow(
- the_mutex,
- POSIX_MUTEX_PRIORITY_CEILING_TQ_OPERATIONS,
- executing,
- abstime,
- queue_context
- );
-}
-
-RTEMS_INLINE_ROUTINE Status_Control _POSIX_Mutex_Ceiling_surrender(
- POSIX_Mutex_Control *the_mutex,
- Thread_Control *executing,
- Thread_queue_Context *queue_context
-)
-{
- unsigned int nest_level;
- ISR_lock_Context lock_context;
- Per_CPU_Control *cpu_self;
- Thread_queue_Heads *heads;
-
- if ( !_POSIX_Mutex_Is_owner( the_mutex, executing ) ) {
- _POSIX_Mutex_Release( the_mutex, queue_context );
- return STATUS_NOT_OWNER;
- }
-
- nest_level = the_mutex->Recursive.nest_level;
-
- if ( nest_level > 0 ) {
- the_mutex->Recursive.nest_level = nest_level - 1;
- _POSIX_Mutex_Release( the_mutex, queue_context );
- return STATUS_SUCCESSFUL;
- }
-
- _Thread_Resource_count_decrement( executing );
-
- _Thread_queue_Context_clear_priority_updates( queue_context );
- _Thread_Wait_acquire_default_critical( executing, &lock_context );
- _Thread_Priority_remove(
- executing,
- &the_mutex->Priority_ceiling,
- queue_context
- );
- _Thread_Wait_release_default_critical( executing, &lock_context );
-
- cpu_self = _Thread_queue_Dispatch_disable( queue_context );
-
- heads = the_mutex->Recursive.Mutex.Queue.Queue.heads;
-
- if ( heads != NULL ) {
- const Thread_queue_Operations *operations;
- Thread_Control *new_owner;
-
- operations = POSIX_MUTEX_PRIORITY_CEILING_TQ_OPERATIONS;
- new_owner = ( *operations->first )( heads );
- _POSIX_Mutex_Set_owner( the_mutex, new_owner );
- _Thread_Resource_count_increment( new_owner );
- _Thread_Priority_add(
- new_owner,
- &the_mutex->Priority_ceiling,
- queue_context
- );
- _Thread_queue_Extract_critical(
- &the_mutex->Recursive.Mutex.Queue.Queue,
- operations,
- new_owner,
- queue_context
- );
- } else {
- _POSIX_Mutex_Set_owner( the_mutex, NULL );
- _POSIX_Mutex_Release( the_mutex, queue_context );
- }
-
- _Thread_Priority_update( queue_context );
- _Thread_Dispatch_enable( cpu_self );
- return STATUS_SUCCESSFUL;
-}
-
-#define POSIX_MUTEX_ABSTIME_TRY_LOCK ((uintptr_t) 1)
-
-int _POSIX_Mutex_Lock_support(
- pthread_mutex_t *mutex,
- const struct timespec *abstime,
- Thread_queue_Enqueue_callout enqueue_callout
-);
-
-static inline POSIX_Mutex_Control *_POSIX_Mutex_Get(
- pthread_mutex_t *mutex
-)
-{
- return (POSIX_Mutex_Control *) mutex;
-}
-
-bool _POSIX_Mutex_Auto_initialization( POSIX_Mutex_Control *the_mutex );
-
-#define POSIX_MUTEX_VALIDATE_OBJECT( the_mutex, flags ) \
- do { \
- if ( ( the_mutex ) == NULL ) { \
- return EINVAL; \
- } \
- flags = ( the_mutex )->flags; \
- if ( \
- ( ( (uintptr_t) ( the_mutex ) ^ POSIX_MUTEX_MAGIC ) \
- & ~POSIX_MUTEX_FLAGS_MASK ) \
- != ( flags & ~POSIX_MUTEX_FLAGS_MASK ) \
- ) { \
- if ( !_POSIX_Mutex_Auto_initialization( the_mutex ) ) { \
- return EINVAL; \
- } \
- } \
- } while ( 0 )
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
-
diff --git a/cpukit/posix/include/rtems/posix/posixapi.h b/cpukit/posix/include/rtems/posix/posixapi.h
deleted file mode 100644
index 29394ab94e..0000000000
--- a/cpukit/posix/include/rtems/posix/posixapi.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX API Implementation
- *
- * This include file defines the top level interface to the POSIX API
- * implementation in RTEMS.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_POSIXAPI_H
-#define _RTEMS_POSIX_POSIXAPI_H
-
-#include <rtems/config.h>
-#include <rtems/score/assert.h>
-#include <rtems/score/objectimpl.h>
-#include <rtems/score/onceimpl.h>
-#include <rtems/score/threadimpl.h>
-#include <rtems/seterr.h>
-
-#include <pthread.h>
-
-/**
- * @defgroup POSIXAPI RTEMS POSIX API
- *
- * RTEMS POSIX API definitions and modules.
- *
- */
-/**@{**/
-
-/**
- * @brief POSIX API Fatal domains.
- */
-typedef enum {
- POSIX_FD_PTHREAD, /**< A pthread thread error. */
- POSIX_FD_PTHREAD_ONCE /**< A pthread once error. */
-} POSIX_Fatal_domain;
-
-/**
- * @brief POSIX API Fatal error.
- *
- * A common method of rasing a POSIX API fatal error.
- *
- * @param[in] domain The POSIX error domain.
- * @param[in] eno The error number as defined in errno.h.
- */
-void _POSIX_Fatal_error( POSIX_Fatal_domain domain, int eno );
-
-extern const int _POSIX_Get_by_name_error_table[ 3 ];
-
-RTEMS_INLINE_ROUTINE int _POSIX_Get_by_name_error(
- Objects_Get_by_name_error error
-)
-{
- _Assert( (size_t) error < RTEMS_ARRAY_SIZE( _POSIX_Get_by_name_error_table ) );
- return _POSIX_Get_by_name_error_table[ error ];
-}
-
-RTEMS_INLINE_ROUTINE int _POSIX_Get_error( Status_Control status )
-{
- return STATUS_GET_POSIX( status );
-}
-
-RTEMS_INLINE_ROUTINE int _POSIX_Get_error_after_wait(
- const Thread_Control *executing
-)
-{
- return _POSIX_Get_error( _Thread_Wait_get_status( executing ) );
-}
-
-RTEMS_INLINE_ROUTINE int _POSIX_Zero_or_minus_one_plus_errno(
- Status_Control status
-)
-{
- if ( status == STATUS_SUCCESSFUL ) {
- return 0;
- }
-
- rtems_set_errno_and_return_minus_one( _POSIX_Get_error( status ) );
-}
-
-/**
- * @brief Macro to generate a function body to get a POSIX object by
- * identifier.
- *
- * Generates a function body to get the object for the specified identifier.
- * Performs automatic initialization if requested and necessary. This is an
- * ugly macro, since C lacks support for templates.
- */
-#define _POSIX_Get_object_body( \
- type, \
- id, \
- queue_context, \
- info, \
- initializer, \
- init \
-) \
- Objects_Control *the_object; \
- if ( id == NULL ) { \
- return NULL; \
- } \
- _Thread_queue_Context_initialize( queue_context ); \
- the_object = _Objects_Get( \
- (Objects_Id) *id, \
- &queue_context->Lock_context.Lock_context, \
- info \
- ); \
- if ( the_object == NULL ) { \
- _Once_Lock(); \
- if ( *id == initializer ) { \
- init( id, NULL ); \
- } \
- _Once_Unlock(); \
- the_object = _Objects_Get( \
- (Objects_Id) *id, \
- &queue_context->Lock_context.Lock_context, \
- info \
- ); \
- } \
- return (type *) the_object
-
-/*
- * See also The Open Group Base Specifications Issue 7, IEEE Std 1003.1-2008,
- * 2016 Edition, subsection 2.9.9, Synchronization Object Copies and
- * Alternative Mappings.
- *
- * http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_09_09
- */
-RTEMS_INLINE_ROUTINE bool _POSIX_Is_valid_pshared( int pshared )
-{
- return pshared == PTHREAD_PROCESS_PRIVATE ||
- pshared == PTHREAD_PROCESS_SHARED;
-}
-
-/** @} */
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/priorityimpl.h b/cpukit/posix/include/rtems/posix/priorityimpl.h
deleted file mode 100644
index eb2e3e059f..0000000000
--- a/cpukit/posix/include/rtems/posix/priorityimpl.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Priority Support
- *
- * This include file defines the interface to the POSIX priority
- * implementation.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_PRIORITYIMPL_H
-#define _RTEMS_POSIX_PRIORITYIMPL_H
-
-#include <rtems/score/scheduler.h>
-#include <rtems/score/assert.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup POSIX_PRIORITY POSIX Priority Support
- *
- * @ingroup POSIXAPI
- *
- * @brief Interface to the POSIX Priority Implementation.
- *
- * @{
- */
-
-/**
- * This is the numerically least important POSIX priority.
- */
-#define POSIX_SCHEDULER_MINIMUM_PRIORITY (1)
-
-/**
- * @brief Gets the maximum POSIX API priority for this scheduler instance.
- *
- * Such a priority is valid. A scheduler instance may support priority values
- * that are not representable as an integer.
- *
- * @return The maximum POSIX API priority for this scheduler instance.
- */
-RTEMS_INLINE_ROUTINE int _POSIX_Priority_Get_maximum(
- const Scheduler_Control *scheduler
-)
-{
- _Assert( (int) scheduler->maximum_priority > 1 );
- return (int) scheduler->maximum_priority - 1;
-}
-
-/**
- * @brief Converts the POSIX API priority to the corresponding SuperCore
- * priority and validates it.
- *
- * According to POSIX, numerically higher values represent higher priorities.
- * Thus, SuperCore has priorities run in the opposite sense of the POSIX API.
- *
- * Let N be the maximum priority of this scheduler instance. The SuperCore
- * priority zero is system reserved (PRIORITY_PSEUDO_ISR). There are only
- * N - 1 POSIX API priority levels since a thread at SuperCore priority N would
- * never run because of the idle threads. This is necessary because GNAT maps
- * the lowest Ada task priority to the lowest thread priority. The lowest
- * priority Ada task should get to run, so there is a fundamental conflict with
- * having N priorities.
- *
- * @param[in] scheduler The scheduler instance.
- * @param[in] priority The POSIX API priority to convert and validate.
- * @param[out] valid Indicates if the POSIX API priority is valid and a
- * corresponding SuperCore priority in the specified scheduler instance
- * exists.
- *
- * @return The corresponding SuperCore priority.
- */
-Priority_Control _POSIX_Priority_To_core(
- const Scheduler_Control *scheduler,
- int priority,
- bool *valid
-);
-
-/**
- * @brief Converts the SuperCore priority to the corresponding POSIX API
- * priority.
- *
- * @param[in] scheduler The scheduler instance.
- * @param[in] priority The SuperCore priority to convert.
- *
- * @return The corresponding POSIX API priority.
- */
-int _POSIX_Priority_From_core(
- const Scheduler_Control *scheduler,
- Priority_Control priority
-);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/cpukit/posix/include/rtems/posix/psignal.h b/cpukit/posix/include/rtems/posix/psignal.h
deleted file mode 100644
index ed98442e32..0000000000
--- a/cpukit/posix/include/rtems/posix/psignal.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * @file
- *
- * @brief Internal Information about POSIX Signals
- *
- * This include file defines internal information about POSIX signals.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_PSIGNAL_H
-#define _RTEMS_POSIX_PSIGNAL_H
-
-#include <sys/signal.h>
-
-#include <rtems/score/chain.h>
-
-/*
- * POSIX internal siginfo structure
- */
-
-typedef struct {
- Chain_Node Node;
- siginfo_t Info;
-} POSIX_signals_Siginfo_node;
-
-#endif
-/* end of file */
diff --git a/cpukit/posix/include/rtems/posix/psignalimpl.h b/cpukit/posix/include/rtems/posix/psignalimpl.h
deleted file mode 100644
index cccc3dafc9..0000000000
--- a/cpukit/posix/include/rtems/posix/psignalimpl.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Signals Support
- *
- * This include file defines internal information about POSIX signals.
- */
-
-/*
- * COPYRIGHT (c) 1989-2013.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_PSIGNALIMPL_H
-#define _RTEMS_POSIX_PSIGNALIMPL_H
-
-/**
- * @defgroup POSIX_SIGNALS POSIX Signals Support
- *
- * @ingroup POSIXAPI
- *
- * @brief Internal Information about POSIX Signals
- *
- */
-/**@{**/
-
-#include <rtems/posix/psignal.h>
-#include <rtems/posix/pthread.h>
-#include <rtems/posix/sigset.h>
-#include <rtems/score/isrlock.h>
-#include <rtems/score/percpu.h>
-#include <rtems/score/threadqimpl.h>
-
-#define POSIX_SIGNALS_TQ_OPERATIONS &_Thread_queue_Operations_FIFO
-
-#define _States_Is_interruptible_signal( _states ) \
- ( ((_states) & \
- (STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL)) == \
- (STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL))
-
-#define SIGACTION_TERMINATE \
- { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abnormal_termination_handler} }
-#define SIGACTION_IGNORE \
- { 0, SIGNAL_ALL_MASK, {SIG_IGN} }
-#define SIGACTION_STOP \
- { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Stop_handler} }
-#define SIGACTION_CONTINUE \
- { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Continue_handler} }
-
-#define SIG_ARRAY_MAX (SIGRTMAX + 1)
-
-/*
- * Variables
- */
-
-extern sigset_t _POSIX_signals_Pending;
-
-extern const struct sigaction _POSIX_signals_Default_vectors[ SIG_ARRAY_MAX ];
-
-extern struct sigaction _POSIX_signals_Vectors[ SIG_ARRAY_MAX ];
-
-extern Thread_queue_Control _POSIX_signals_Wait_queue;
-
-extern Chain_Control _POSIX_signals_Inactive_siginfo;
-
-extern Chain_Control _POSIX_signals_Siginfo[ SIG_ARRAY_MAX ];
-
-/*
- * Internal routines
- */
-
-RTEMS_INLINE_ROUTINE void _POSIX_signals_Acquire(
- Thread_queue_Context *queue_context
-)
-{
- _Thread_queue_Acquire( &_POSIX_signals_Wait_queue, queue_context );
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_signals_Release(
- Thread_queue_Context *queue_context
-)
-{
- _Thread_queue_Release( &_POSIX_signals_Wait_queue, queue_context );
-}
-
-/**
- * @brief Unlock POSIX signals thread.
- */
-bool _POSIX_signals_Unblock_thread(
- Thread_Control *the_thread,
- int signo,
- siginfo_t *info
-);
-
-/**
- * @brief Clear POSIX signals.
- */
-bool _POSIX_signals_Clear_signals(
- POSIX_API_Control *api,
- int signo,
- siginfo_t *info,
- bool is_global,
- bool check_blocked,
- bool do_signals_acquire_release
-);
-
-int _POSIX_signals_Send(
- pid_t pid,
- int sig,
- const union sigval *value
-);
-
-/**
- * @brief Set POSIX process signals.
- */
-void _POSIX_signals_Set_process_signals(
- sigset_t mask
-);
-
-void _POSIX_signals_Clear_process_signals(
- int signo
-);
-
-/*
- * Default signal handlers
- */
-
-#define _POSIX_signals_Stop_handler NULL
-#define _POSIX_signals_Continue_handler NULL
-
-void _POSIX_signals_Abnormal_termination_handler( int signo );
-
-/** @} */
-
-#endif
-/* end of file */
diff --git a/cpukit/posix/include/rtems/posix/pthread.h b/cpukit/posix/include/rtems/posix/pthread.h
deleted file mode 100644
index 05783ff4ad..0000000000
--- a/cpukit/posix/include/rtems/posix/pthread.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Threads Private Support
- *
- * This include file contains all the private support information for
- * POSIX threads.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_PTHREAD_H
-#define _RTEMS_POSIX_PTHREAD_H
-
-#include <rtems/posix/config.h>
-#include <rtems/posix/threadsup.h>
-#include <rtems/score/thread.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup POSIX_PTHREAD POSIX Threads Support
- *
- * @ingroup POSIXAPI
- *
- * @brief Private Support Information for POSIX Threads
- *
- */
-/**@{**/
-
-/**
- * @brief POSIX threads initialize user threads body.
- *
- * This routine creates and starts all configured user
- * initialization threads.
- */
-extern void _POSIX_Threads_Initialize_user_threads_body(void);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/pthreadattrimpl.h b/cpukit/posix/include/rtems/posix/pthreadattrimpl.h
deleted file mode 100644
index 12b8559181..0000000000
--- a/cpukit/posix/include/rtems/posix/pthreadattrimpl.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Threads Private Support
- *
- * This include file contains all the private support information for
- * POSIX threads.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_PTHREADATTRIMPL_H
-#define _RTEMS_POSIX_PTHREADATTRIMPL_H
-
-#include <errno.h>
-#include <pthread.h>
-
-#include <rtems/score/basedefs.h>
-#include <rtems/score/assert.h>
-#include <rtems/posix/priorityimpl.h>
-#if defined(RTEMS_POSIX_API)
-#include <rtems/posix/threadsup.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @addtogroup POSIX_PTHREAD
- */
-/**@{**/
-
-/**
- * This variable contains the default POSIX Thread attributes.
- */
-extern const pthread_attr_t _POSIX_Threads_Default_attributes;
-
-RTEMS_INLINE_ROUTINE void _POSIX_Threads_Copy_attributes(
- pthread_attr_t *dst_attr,
- const pthread_attr_t *src_attr
-)
-{
- *dst_attr = *src_attr;
- _Assert(
- dst_attr->affinitysetsize == sizeof(dst_attr->affinitysetpreallocated)
- );
- dst_attr->affinityset = &dst_attr->affinitysetpreallocated;
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Threads_Initialize_attributes(
- pthread_attr_t *attr
-)
-{
- _POSIX_Threads_Copy_attributes(
- attr,
- &_POSIX_Threads_Default_attributes
- );
-}
-
-#if defined(RTEMS_POSIX_API)
-RTEMS_INLINE_ROUTINE void _POSIX_Threads_Get_sched_param_sporadic(
- const Thread_Control *the_thread,
- const Scheduler_Control *scheduler,
- struct sched_param *param
-)
-{
- const POSIX_API_Control *api;
-
- api = the_thread->API_Extensions[ THREAD_API_POSIX ];
- param->sched_ss_low_priority = _POSIX_Priority_From_core(
- scheduler,
- api->Sporadic.Low_priority.priority
- );
- param->sched_ss_repl_period = api->Sporadic.sched_ss_repl_period;
- param->sched_ss_init_budget = api->Sporadic.sched_ss_init_budget;
- param->sched_ss_max_repl = api->Sporadic.sched_ss_max_repl;
-}
-#endif
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/pthreadimpl.h b/cpukit/posix/include/rtems/posix/pthreadimpl.h
deleted file mode 100644
index 3e2351e57e..0000000000
--- a/cpukit/posix/include/rtems/posix/pthreadimpl.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Threads Private Support
- *
- * This include file contains all the private support information for
- * POSIX threads.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_PTHREADIMPL_H
-#define _RTEMS_POSIX_PTHREADIMPL_H
-
-#include <rtems/posix/pthread.h>
-#include <rtems/posix/config.h>
-#include <rtems/posix/threadsup.h>
-#include <rtems/score/assert.h>
-#include <rtems/score/objectimpl.h>
-#include <rtems/score/timespec.h>
-#include <rtems/score/threadimpl.h>
-#include <rtems/score/watchdogimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @addtogroup POSIX_PTHREAD
- */
-/**@{**/
-
-/**
- * The following sets the minimum stack size for POSIX threads.
- */
-#define PTHREAD_MINIMUM_STACK_SIZE (_Stack_Minimum() * 2)
-
-/**
- * The following defines the information control block used to manage
- * this class of objects.
- */
-extern Thread_Information _POSIX_Threads_Information;
-
-RTEMS_INLINE_ROUTINE void _POSIX_Threads_Sporadic_timer_insert(
- Thread_Control *the_thread,
- POSIX_API_Control *api
-)
-{
- the_thread->cpu_time_budget =
- _Timespec_To_ticks( &api->Sporadic.sched_ss_init_budget );
-
- _Watchdog_Per_CPU_insert_ticks(
- &api->Sporadic.Timer,
- _Per_CPU_Get(),
- _Timespec_To_ticks( &api->Sporadic.sched_ss_repl_period )
- );
-}
-
-void _POSIX_Threads_Sporadic_timer( Watchdog_Control *watchdog );
-
-/**
- * @brief POSIX threads sporadic budget callout.
- *
- * This routine handles the sporadic scheduling algorithm.
- *
- * @param[in] the_thread is a pointer to the thread whose budget
- * has been exceeded.
- */
-void _POSIX_Threads_Sporadic_budget_callout(
- Thread_Control *the_thread
-);
-
-int _POSIX_Thread_Translate_to_sched_policy(
- Thread_CPU_budget_algorithms budget_algorithm
-);
-
-/**
- * @brief Translate sched_param into SuperCore terms.
- *
- * This method translates the POSIX API sched_param into the corresponding
- * SuperCore settings.
- *
- * @param[in] policy is the POSIX scheduling policy
- * @param[in] param points to the scheduling parameter structure
- * @param[in] budget_algorithm points to the output CPU Budget algorithm
- * @param[in] budget_callout points to the output CPU Callout
- *
- * @retval 0 Indicates success.
- * @retval error_code POSIX error code indicating failure.
- */
-int _POSIX_Thread_Translate_sched_param(
- int policy,
- struct sched_param *param,
- Thread_CPU_budget_algorithms *budget_algorithm,
- Thread_CPU_budget_algorithm_callout *budget_callout
-);
-
-RTEMS_INLINE_ROUTINE Thread_Control *_POSIX_Threads_Allocate(void)
-{
- _Objects_Allocator_lock();
-
- _Thread_Kill_zombies();
-
- return (Thread_Control *)
- _Objects_Allocate_unprotected( &_POSIX_Threads_Information.Objects );
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Threads_Free (
- Thread_Control *the_pthread
-)
-{
- _Objects_Free( &_POSIX_Threads_Information.Objects, &the_pthread->Object );
-}
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/ptimer.h b/cpukit/posix/include/rtems/posix/ptimer.h
deleted file mode 100644
index f6de4ccb57..0000000000
--- a/cpukit/posix/include/rtems/posix/ptimer.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Timers Private Support
- *
- * This include file contains all the private support information for
- * POSIX timers.
- */
-
-/*
- * Initial Implementation:
- * COPYRIGHT (c) 1998. Alfonso Escalera PiƱa
- * Largely rewritten by Joel Sherrill (1999).
- *
- * COPYRIGHT (c) 1999-2013.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_PTIMER_H
-#define _RTEMS_POSIX_PTIMER_H
-
-/**
- * @defgroup POSIX_PRIV_TIMERS POSIX Timers
- *
- * @ingroup POSIXAPI
- */
-/**@{**/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtems/posix/config.h>
-
-/**
- * @brief Create a Per-Process Timer
- */
-int timer_create(
- clockid_t clock_id,
- struct sigevent *evp,
- timer_t *timerid
-);
-
-/**
- * @brief Delete a Per-Process Timer
- */
-int timer_delete(
- timer_t timerid
-);
-
-/**
- * @brief Set a Per-Process Timer
- */
-int timer_settime(
- timer_t timerid,
- int flags,
- const struct itimerspec *value,
- struct itimerspec *ovalue
-);
-
-/**
- * @brief Set a Per-Process Timer
- */
-int timer_gettime(
- timer_t timerid,
- struct itimerspec *value
-);
-
-/**
- * @brief Get overrun count for a Per-Process Timer
- *
- * The expiration of a timer must increase by one a counter.
- * After the signal handler associated to the timer finishes
- * its execution, _POSIX_Timer_TSR will have to set this counter to 0.
- */
-int timer_getoverrun(
- timer_t timerid
-);
-
-#ifdef __cplusplus
-}
-#endif
-/** @} */
-
-#endif /* _RTEMS_POSIX_PTIMER_H */
diff --git a/cpukit/posix/include/rtems/posix/rwlockimpl.h b/cpukit/posix/include/rtems/posix/rwlockimpl.h
deleted file mode 100644
index b92ca9d04c..0000000000
--- a/cpukit/posix/include/rtems/posix/rwlockimpl.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * @file
- *
- * @brief Inlined Routines from the POSIX RWLock Manager
- *
- * This file contains the static inlin implementation of the inlined
- * routines from the POSIX RWLock Manager.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_RWLOCKIMPL_H
-#define _RTEMS_POSIX_RWLOCKIMPL_H
-
-#include <rtems/score/corerwlockimpl.h>
-
-#include <errno.h>
-#include <pthread.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define POSIX_RWLOCK_MAGIC 0x9621dabdUL
-
-typedef struct {
- unsigned long flags;
- CORE_RWLock_Control RWLock;
-} POSIX_RWLock_Control;
-
-RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get(
- pthread_rwlock_t *rwlock
-)
-{
- return (POSIX_RWLock_Control *) rwlock;
-}
-
-bool _POSIX_RWLock_Auto_initialization( POSIX_RWLock_Control *the_rwlock );
-
-#define POSIX_RWLOCK_VALIDATE_OBJECT( rw ) \
- do { \
- if ( ( rw ) == NULL ) { \
- return EINVAL; \
- } \
- if ( ( (uintptr_t) ( rw ) ^ POSIX_RWLOCK_MAGIC ) != ( rw )->flags ) { \
- if ( !_POSIX_RWLock_Auto_initialization( rw ) ) { \
- return EINVAL; \
- } \
- } \
- } while ( 0 )
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/semaphore.h b/cpukit/posix/include/rtems/posix/semaphore.h
deleted file mode 100644
index 9133db22be..0000000000
--- a/cpukit/posix/include/rtems/posix/semaphore.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * @file
- *
- * @brief Private Support Information for POSIX Semaphores
- *
- * This include file contains all the private support information for
- * POSIX Semaphores.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_SEMAPHORE_H
-#define _RTEMS_POSIX_SEMAPHORE_H
-
-#include <semaphore.h>
-#include <rtems/score/object.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup POSIXSemaphorePrivate POSIX Semaphore Private Support
- *
- * @ingroup POSIXAPI
- *
- * This defines the internal implementation support for POSIX semaphores.
- */
-/**@{*/
-
-/*
- * Data Structure used to manage a POSIX semaphore
- */
-
-typedef struct {
- Objects_Control Object;
- sem_t Semaphore;
- bool linked;
- uint32_t open_count;
-} POSIX_Semaphore_Control;
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/semaphoreimpl.h b/cpukit/posix/include/rtems/posix/semaphoreimpl.h
deleted file mode 100644
index fd17743699..0000000000
--- a/cpukit/posix/include/rtems/posix/semaphoreimpl.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
- * @file
- *
- * @brief Private Inlined Routines for POSIX Semaphores
- *
- * This include file contains the static inline implementation of the private
- * inlined routines for POSIX Semaphores.
- */
-
-/*
- * COPYRIGHT (c) 1989-2013.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_SEMAPHOREIMPL_H
-#define _RTEMS_POSIX_SEMAPHOREIMPL_H
-
-#include <rtems/posix/semaphore.h>
-#include <rtems/posix/posixapi.h>
-#include <rtems/score/semaphoreimpl.h>
-#include <rtems/seterr.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @brief This is a random number used to check if a semaphore object is
- * properly initialized.
- */
-#define POSIX_SEMAPHORE_MAGIC 0x5d367fe7UL
-
-/**
- * This defines the information control block used to manage
- * this class of objects.
- */
-extern Objects_Information _POSIX_Semaphore_Information;
-
-RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *
- _POSIX_Semaphore_Allocate_unprotected( void )
-{
- return (POSIX_Semaphore_Control *)
- _Objects_Allocate_unprotected( &_POSIX_Semaphore_Information );
-}
-
-/**
- * @brief POSIX Semaphore Free
- *
- * This routine frees a semaphore control block to the
- * inactive chain of free semaphore control blocks.
- */
-RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Free (
- POSIX_Semaphore_Control *the_semaphore
-)
-{
- _Objects_Free( &_POSIX_Semaphore_Information, &the_semaphore->Object );
-}
-
-RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Get(
- sem_t *sem
-)
-{
- return RTEMS_CONTAINER_OF( sem, POSIX_Semaphore_Control, Semaphore );
-}
-
-RTEMS_INLINE_ROUTINE bool _POSIX_Semaphore_Is_named( const sem_t *sem )
-{
- return sem->_Semaphore._Queue._name != NULL;
-}
-
-RTEMS_INLINE_ROUTINE bool _POSIX_Semaphore_Is_busy( const sem_t *sem )
-{
- return sem->_Semaphore._Queue._heads != NULL;
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Initialize(
- sem_t *sem,
- const char *name,
- unsigned int value
-)
-{
- sem->_flags = (uintptr_t) sem ^ POSIX_SEMAPHORE_MAGIC;
- _Semaphore_Initialize_named( &sem->_Semaphore, name, value );
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Destroy( sem_t *sem )
-{
- sem->_flags = 0;
- _Semaphore_Destroy( &sem->_Semaphore );
-}
-
-/**
- * @brief POSIX Semaphore Delete
- *
- * This routine supports the sem_close and sem_unlink routines.
- */
-void _POSIX_Semaphore_Delete( POSIX_Semaphore_Control *the_semaphore );
-
-/**
- * @brief POSIX Semaphore Namespace Remove
- */
-RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Namespace_remove (
- POSIX_Semaphore_Control *the_semaphore
-)
-{
- _Objects_Namespace_remove(
- &_POSIX_Semaphore_Information, &the_semaphore->Object );
-}
-
-RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Get_by_name(
- const char *name,
- size_t *name_length_p,
- Objects_Get_by_name_error *error
-)
-{
- return (POSIX_Semaphore_Control *) _Objects_Get_by_name(
- &_POSIX_Semaphore_Information,
- name,
- name_length_p,
- error
- );
-}
-
-#define POSIX_SEMAPHORE_VALIDATE_OBJECT( sem ) \
- do { \
- if ( \
- ( sem ) == NULL \
- || ( (uintptr_t) ( sem ) ^ POSIX_SEMAPHORE_MAGIC ) != ( sem )->_flags \
- ) { \
- rtems_set_errno_and_return_minus_one( EINVAL ); \
- } \
- } while ( 0 )
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/shm.h b/cpukit/posix/include/rtems/posix/shm.h
deleted file mode 100644
index d2b6036493..0000000000
--- a/cpukit/posix/include/rtems/posix/shm.h
+++ /dev/null
@@ -1,213 +0,0 @@
-/**
- * @file
- *
- * @brief Internal Support for POSIX Shared Memory
- */
-
-/*
- * Copyright (c) 2016 Gedare Bloom.
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_SHM_H
-#define _RTEMS_POSIX_SHM_H
-
-#include <rtems/score/object.h>
-#include <rtems/score/threadq.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup POSIXShmPrivate POSIX Shared Memory Private Support
- *
- * @ingroup POSIXAPI
- *
- * Internal implementation support for POSIX shared memory.
- * @{
- */
-typedef struct POSIX_Shm_Object_operations POSIX_Shm_Object_operations;
-extern const POSIX_Shm_Object_operations _POSIX_Shm_Object_operations;
-
-/**
- * @brief Encapsulation for the storage and manipulation of shm objects.
- */
-typedef struct {
- /**
- * @brief The handle is private for finding object storage.
- */
- void *handle;
-
- /**
- * @brief The number of bytes allocated to the object. A size of 0 with
- * a handle of NULL means no object is allocated.
- */
- size_t size;
-
- /**
- * @brief Implementation-specific operations on shm objects.
- */
- const POSIX_Shm_Object_operations *ops;
-} POSIX_Shm_Object;
-
-/**
- * @brief Operations on POSIX Shared Memory Objects.
- */
-struct POSIX_Shm_Object_operations {
- /**
- * @brief Allocates a new @a shm_obj with initial @a size.
- *
- * New shared memory is initialized to zeroes.
- *
- * Returns 0 for success.
- */
- int ( *object_create ) ( POSIX_Shm_Object *shm_obj, size_t size );
-
- /**
- * @brief Changes the @a shm_obj size to @a size.
- *
- * Zeroes out the portion of the shared memory object that shrinks or grows.
- *
- * Returns 0 for success.
- */
- int ( *object_resize ) ( POSIX_Shm_Object *shm_obj, size_t size );
-
- /**
- * @brief Deletes the @a shm_obj.
- *
- * Zeroes out the memory.
- *
- * Returns 0 for success.
- */
- int ( *object_delete ) ( POSIX_Shm_Object *shm_obj );
-
- /**
- * @brief Copies up to @count bytes of the @a shm_obj data into @a buf.
- *
- * Returns the number of bytes read (copied) into @a buf.
- */
- int ( *object_read ) ( POSIX_Shm_Object *shm_obj, void *buf, size_t count );
-
- /**
- * @brief Maps a shared memory object.
- *
- * Establishes a memory mapping between the shared memory object and the
- * caller.
- *
- * Returns the mapped address of the object.
- */
- void * ( *object_mmap ) ( POSIX_Shm_Object *shm_obj, size_t len, int prot, off_t off);
-};
-
-/**
- * @brief Control for a POSIX Shared Memory Object
- */
-typedef struct {
- Objects_Control Object;
- Thread_queue_Control Wait_queue;
-
- int reference_count;
-
- POSIX_Shm_Object shm_object;
-
- uid_t uid;
- gid_t gid;
- mode_t mode;
- int oflag;
-
- time_t atime;
- time_t mtime;
- time_t ctime;
-} POSIX_Shm_Control;
-
-/**
- * @brief object_create operation for shm objects stored in RTEMS Workspace.
- */
-extern int _POSIX_Shm_Object_create_from_workspace(
- POSIX_Shm_Object *shm_obj,
- size_t size
-);
-
-/**
- * @brief object_delete operation for shm objects stored in RTEMS Workspace.
- */
-extern int _POSIX_Shm_Object_delete_from_workspace( POSIX_Shm_Object *shm_obj );
-
-/**
- * @brief object_resize operation for shm objects stored in RTEMS Workspace.
- */
-extern int _POSIX_Shm_Object_resize_from_workspace(
- POSIX_Shm_Object *shm_obj,
- size_t size
-);
-
-/**
- * @brief object_read operation for shm objects stored in RTEMS Workspace.
- */
-extern int _POSIX_Shm_Object_read_from_workspace(
- POSIX_Shm_Object *shm_obj,
- void *buf,
- size_t count
-);
-
-/**
- * @brief object_mmap operation for shm objects stored in RTEMS Workspace.
- */
-extern void * _POSIX_Shm_Object_mmap_from_workspace(
- POSIX_Shm_Object *shm_obj,
- size_t len,
- int prot,
- off_t off
-);
-
-/**
- * @brief object_create operation for shm objects stored in C program heap.
- */
-extern int _POSIX_Shm_Object_create_from_heap(
- POSIX_Shm_Object *shm_obj,
- size_t size
-);
-
-/**
- * @brief object_delete operation for shm objects stored in C program heap.
- */
-extern int _POSIX_Shm_Object_delete_from_heap( POSIX_Shm_Object *shm_obj );
-
-/**
- * @brief object_resize operation for shm objects stored in C program heap.
- */
-extern int _POSIX_Shm_Object_resize_from_heap(
- POSIX_Shm_Object *shm_obj,
- size_t size
-);
-
-/**
- * @brief object_read operation for shm objects stored in C program heap.
- */
-extern int _POSIX_Shm_Object_read_from_heap(
- POSIX_Shm_Object *shm_obj,
- void *buf,
- size_t count
-);
-
-/**
- * @brief object_mmap operation for shm objects stored in C program heap.
- */
-extern void * _POSIX_Shm_Object_mmap_from_heap(
- POSIX_Shm_Object *shm_obj,
- size_t len,
- int prot,
- off_t off
-);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/cpukit/posix/include/rtems/posix/shmimpl.h b/cpukit/posix/include/rtems/posix/shmimpl.h
deleted file mode 100644
index f16af8123d..0000000000
--- a/cpukit/posix/include/rtems/posix/shmimpl.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * @file
- *
- * @brief Private Support Information for POSIX Shared Memory
- *
- */
-
-/*
- * Copyright (c) 2016 Gedare Bloom.
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_SHMIMPL_H
-#define _RTEMS_POSIX_SHMIMPL_H
-
-#include <rtems/fs.h>
-#include <rtems/libio.h>
-#include <rtems/posix/posixapi.h>
-#include <rtems/posix/shm.h>
-#include <rtems/score/objectimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @ingroup POSIXShmPrivate
- * @{
- */
-
-extern Objects_Information _POSIX_Shm_Information;
-
-RTEMS_INLINE_ROUTINE POSIX_Shm_Control *_POSIX_Shm_Allocate_unprotected( void )
-{
- return (POSIX_Shm_Control *)
- _Objects_Allocate_unprotected( &_POSIX_Shm_Information );
-}
-
-/**
- * @brief POSIX Shared Memory Free
- *
- * This routine frees a shm control block.
- */
-RTEMS_INLINE_ROUTINE void _POSIX_Shm_Free (
- POSIX_Shm_Control *the_shm
-)
-{
- _Objects_Free( &_POSIX_Shm_Information, &the_shm->Object );
-}
-
-RTEMS_INLINE_ROUTINE POSIX_Shm_Control *_POSIX_Shm_Get_by_name(
- const char *name,
- size_t *name_length_p,
- Objects_Get_by_name_error *error
-)
-{
- return (POSIX_Shm_Control *) _Objects_Get_by_name(
- &_POSIX_Shm_Information,
- name,
- name_length_p,
- error
- );
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Shm_Update_atime(
- POSIX_Shm_Control *shm
-)
-{
- struct timeval now;
- gettimeofday( &now, 0 );
- shm->atime = now.tv_sec;
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Shm_Update_mtime_ctime(
- POSIX_Shm_Control *shm
-)
-{
- struct timeval now;
- gettimeofday( &now, 0 );
- shm->mtime = now.tv_sec;
- shm->ctime = now.tv_sec;
-}
-
-static inline POSIX_Shm_Control* iop_to_shm( rtems_libio_t *iop )
-{
- return (POSIX_Shm_Control*) iop->data1;
-}
-
-static inline POSIX_Shm_Control* loc_to_shm(
- const rtems_filesystem_location_info_t *loc
-)
-{
- return (POSIX_Shm_Control*) loc->node_access;
-}
-
-static inline int POSIX_Shm_Attempt_delete(
- POSIX_Shm_Control* shm
-)
-{
- Objects_Control *obj;
- ISR_lock_Context lock_ctx;
- int err;
-
- err = 0;
-
- _Objects_Allocator_lock();
- --shm->reference_count;
- if ( shm->reference_count == 0 ) {
- if ( (*shm->shm_object.ops->object_delete)( &shm->shm_object ) != 0 ) {
- err = EIO;
- }
- }
- /* check if the object has been unlinked yet. */
- obj = _Objects_Get( shm->Object.id, &lock_ctx, &_POSIX_Shm_Information );
- if ( obj == NULL ) {
- /* if it was unlinked, then it can be freed. */
- _POSIX_Shm_Free( shm );
- } else {
- /* it will be freed when it is unlinked. */
- _ISR_lock_ISR_enable( &lock_ctx );
- }
- _Objects_Allocator_unlock();
- return err;
-}
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/cpukit/posix/include/rtems/posix/sigset.h b/cpukit/posix/include/rtems/posix/sigset.h
deleted file mode 100644
index 96bcc086ba..0000000000
--- a/cpukit/posix/include/rtems/posix/sigset.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Signal Sets Management Helper
- *
- * This file defines the interface to implementation helper for management
- * of POSIX Signal Sets.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_SIGSET_H
-#define _RTEMS_POSIX_SIGSET_H
-
-#include <signal.h> // sigset_t
-
-/*
- * Currently 32 signals numbered 1-32 are defined
- */
-
-#define SIGNAL_EMPTY_MASK 0x00000000L
-#define SIGNAL_ALL_MASK 0xffffffffL
-
-static inline sigset_t signo_to_mask(
- uint32_t sig
-)
-{
- return 1u << (sig - 1);
-}
-
-static inline bool is_valid_signo(
- int signo
-)
-{
- return ((signo) >= 1 && (signo) <= 32 );
-}
-
-#endif
diff --git a/cpukit/posix/include/rtems/posix/spinlockimpl.h b/cpukit/posix/include/rtems/posix/spinlockimpl.h
deleted file mode 100644
index d28e0391fc..0000000000
--- a/cpukit/posix/include/rtems/posix/spinlockimpl.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * @file
- *
- * @brief Inlined Routines from the POSIX Spinlock Manager
- *
- * This file contains the static inlin implementation of the inlined
- * routines from the POSIX Spinlock Manager.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * Copyright (c) 2016 embedded brains GmbH
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_SPINLOCKIMPL_H
-#define _RTEMS_POSIX_SPINLOCKIMPL_H
-
-#include <pthread.h>
-
-#include <rtems/score/isrlevel.h>
-
-#if defined(RTEMS_SMP)
-#include <rtems/score/percpu.h>
-#include <rtems/score/smplockticket.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-#if defined(RTEMS_SMP)
- SMP_ticket_lock_Control Lock;
-#else
- unsigned int reserved[ 2 ];
-#endif
- ISR_Level interrupt_state;
-} POSIX_Spinlock_Control;
-
-RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get(
- pthread_spinlock_t *lock
-)
-{
- return (POSIX_Spinlock_Control *) lock;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/threadsup.h b/cpukit/posix/include/rtems/posix/threadsup.h
deleted file mode 100644
index d3ee5b28bb..0000000000
--- a/cpukit/posix/include/rtems/posix/threadsup.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Thread API Support
- *
- * This defines the POSIX thread API extension.
- */
-
-/*
- * COPYRIGHT (c) 1989-2014.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_THREADSUP_H
-#define _RTEMS_POSIX_THREADSUP_H
-
-#include <rtems/score/thread.h>
-#include <rtems/score/watchdog.h>
-
-#include <pthread.h>
-#include <signal.h>
-
-/**
- * @defgroup POSIX_THREAD POSIX Thread API Extension
- *
- * @ingroup POSIXAPI
- *
- */
-/**@{**/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * This defines the POSIX API support structure associated with
- * each thread in a system with POSIX configured.
- */
-typedef struct {
- /**
- * @brief Control block for the sporadic server scheduling policy.
- */
- struct {
- /** The thread of this sporadic control block */
- Thread_Control *thread;
-
- /**
- * @brief This is the timer which controls when the thread executes at high
- * and low priority when using the sporadic server scheduling policy.
- */
- Watchdog_Control Timer;
-
- /**
- * @brief The low priority when using the sporadic server scheduling
- * policy.
- */
- Priority_Node Low_priority;
-
- /**
- * @brief Replenishment period for sporadic server.
- */
- struct timespec sched_ss_repl_period;
-
- /**
- * @brief Initial budget for sporadic server.
- */
- struct timespec sched_ss_init_budget;
-
- /**
- * @brief Maximum pending replenishments.
- *
- * Only used by pthread_getschedparam() and pthread_getattr_np().
- */
- int sched_ss_max_repl;
- } Sporadic;
-
- /** This is the set of signals which are currently unblocked. */
- sigset_t signals_unblocked;
- /** This is the set of signals which are currently pending. */
- sigset_t signals_pending;
-
- /**
- * @brief Signal post-switch action in case signals are pending.
- */
- Thread_Action Signal_action;
-} POSIX_API_Control;
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/timer.h b/cpukit/posix/include/rtems/posix/timer.h
deleted file mode 100644
index 79fe093219..0000000000
--- a/cpukit/posix/include/rtems/posix/timer.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * @file
- *
- * @brief POSIX Timers Internal Support
- *
- * This include files defines the internal support for implementation of
- * POSIX Timers.
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_TIMER_H
-#define _RTEMS_POSIX_TIMER_H
-
-#include <rtems/score/object.h>
-#include <rtems/score/watchdog.h>
-
-#include <pthread.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup POSIX_INTERNAL_TIMERS POSIX Timer Private Support
- *
- * @ingroup POSIXAPI
- */
-/**@{*/
-
-/*
- * Data for a timer
- */
-typedef struct {
- Objects_Control Object;
- Watchdog_Control Timer; /* Internal Timer */
- pthread_t thread_id; /* Thread identifier */
- char state; /* State of the timer */
- struct sigevent inf; /* Information associated to the timer */
- struct itimerspec timer_data; /* Timing data of the timer */
- uint32_t ticks; /* Number of ticks of the initialization */
- uint32_t overrun; /* Number of expirations of the timer */
- struct timespec time; /* Time at which the timer was started */
-} POSIX_Timer_Control;
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/posix/include/rtems/posix/timerimpl.h b/cpukit/posix/include/rtems/posix/timerimpl.h
deleted file mode 100644
index 42a814c992..0000000000
--- a/cpukit/posix/include/rtems/posix/timerimpl.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * @file
- *
- * @brief Inlined Routines from the POSIX Timer Manager
- *
- * This file contains the static inline implementation of the inlined routines
- * from the POSIX Timer Manager.
- */
-
-/*
- * COPYRIGHT (c) 1989-2013.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_POSIX_TIMERIMPL_H
-#define _RTEMS_POSIX_TIMERIMPL_H
-
-#include <rtems/posix/timer.h>
-#include <rtems/score/objectimpl.h>
-#include <rtems/score/watchdogimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Timer is free */
-#define POSIX_TIMER_STATE_FREE 0x01
-
-/** Created timer but not running */
-#define POSIX_TIMER_STATE_CREATE_NEW 0x02
-
-/** Created timer and running */
-#define POSIX_TIMER_STATE_CREATE_RUN 0x03
-
-/** Created, ran and stopped timer */
-#define POSIX_TIMER_STATE_CREATE_STOP 0x04
-
-/** Indicates that the fire time is relative to the current one */
-#define POSIX_TIMER_RELATIVE 0
-
-/*
- * POSIX defines TIMER_ABSTIME but no constant for relative. So
- * we have one internally but we need to be careful it has a different
- * value.
- */
-#if (POSIX_TIMER_RELATIVE == TIMER_ABSTIME)
-#error "POSIX_TIMER_RELATIVE == TIMER_ABSTIME"
-#endif
-
-/**
- * The following defines the information control block used to manage
- * this class of objects.
- */
-extern Objects_Information _POSIX_Timer_Information;
-
-/**
- * @brief POSIX Timer Allocate
- *
- * This function allocates a timer control block from
- * the inactive chain of free timer control blocks.
- */
-RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Allocate( void )
-{
- return (POSIX_Timer_Control *) _Objects_Allocate( &_POSIX_Timer_Information );
-}
-
-/**
- * @brief POSIX Timer Free
- *
- * This routine frees a timer control block to the
- * inactive chain of free timer control blocks.
- */
-RTEMS_INLINE_ROUTINE void _POSIX_Timer_Free (
- POSIX_Timer_Control *the_timer
-)
-{
- _Objects_Free( &_POSIX_Timer_Information, &the_timer->Object );
-}
-
-void _POSIX_Timer_TSR( Watchdog_Control *the_watchdog );
-
-/**
- * @brief POSIX Timer Get
- *
- * This function maps timer IDs to timer control blocks.
- * If ID corresponds to a local timer, then it returns
- * the timer control pointer which maps to ID and location
- * is set to OBJECTS_LOCAL. Otherwise, location is set
- * to OBJECTS_ERROR and the returned value is undefined.
- */
-RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Get (
- timer_t id,
- ISR_lock_Context *lock_context
-)
-{
- return (POSIX_Timer_Control *) _Objects_Get(
- (Objects_Id) id,
- lock_context,
- &_POSIX_Timer_Information
- );
-}
-
-RTEMS_INLINE_ROUTINE Per_CPU_Control *_POSIX_Timer_Acquire_critical(
- POSIX_Timer_Control *ptimer,
- ISR_lock_Context *lock_context
-)
-{
- Per_CPU_Control *cpu;
-
- cpu = _Watchdog_Get_CPU( &ptimer->Timer );
- _Watchdog_Per_CPU_acquire_critical( cpu, lock_context );
-
- return cpu;
-}
-
-RTEMS_INLINE_ROUTINE void _POSIX_Timer_Release(
- Per_CPU_Control *cpu,
- ISR_lock_Context *lock_context
-)
-{
- _Watchdog_Per_CPU_release_critical( cpu, lock_context );
- _ISR_lock_ISR_enable( lock_context );
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */