diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-09-12 08:09:16 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-05 14:29:01 +0200 |
commit | c090db7405b72ce6d0b726c0a39fb1c1aebab7ea (patch) | |
tree | 099a887f445115e9b40d25cd6a2b2b11908d347d /cpukit/sapi/src | |
parent | posix: Optimize pthread_once_t (diff) | |
download | rtems-c090db7405b72ce6d0b726c0a39fb1c1aebab7ea.tar.bz2 |
posix: Implement self-contained POSIX semaphores
For semaphore object pointer and object validation see
POSIX_SEMAPHORE_VALIDATE_OBJECT().
Destruction or close of a busy semaphore returns an error status. The
object is not flushed.
POSIX semaphores are now available in all configurations and no longer
depend on --enable-posix.
Update #2514.
Update #3116.
Diffstat (limited to 'cpukit/sapi/src')
-rw-r--r-- | cpukit/sapi/src/posixapi.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/cpukit/sapi/src/posixapi.c b/cpukit/sapi/src/posixapi.c index e7d34fdf60..ef725bea96 100644 --- a/cpukit/sapi/src/posixapi.c +++ b/cpukit/sapi/src/posixapi.c @@ -20,6 +20,31 @@ #endif #include <rtems/posix/posixapi.h> +#include <rtems/posix/semaphoreimpl.h> +#include <rtems/score/heap.h> + +#ifdef HEAP_PROTECTION +RTEMS_STATIC_ASSERT( + POSIX_SEMAPHORE_MAGIC != HEAP_BEGIN_PROTECTOR_0, + POSIX_SEMAPHORE_MAGIC_0 +); +RTEMS_STATIC_ASSERT( + POSIX_SEMAPHORE_MAGIC != HEAP_BEGIN_PROTECTOR_1, + POSIX_SEMAPHORE_MAGIC_1 +); +RTEMS_STATIC_ASSERT( + POSIX_SEMAPHORE_MAGIC != HEAP_END_PROTECTOR_0, + POSIX_SEMAPHORE_MAGIC_2 +); +RTEMS_STATIC_ASSERT( + POSIX_SEMAPHORE_MAGIC != HEAP_END_PROTECTOR_1, + POSIX_SEMAPHORE_MAGIC_3 +); +RTEMS_STATIC_ASSERT( + POSIX_SEMAPHORE_MAGIC != HEAP_FREE_PATTERN, + POSIX_SEMAPHORE_MAGIC_4 +); +#endif void _POSIX_Fatal_error( POSIX_Fatal_domain domain, int eno ) { |