source: rtems/cpukit/sapi/src/posixapi.c @ e67929c

5
Last change on this file since e67929c was e67929c, checked in by Sebastian Huber <sebastian.huber@…>, on 09/21/17 at 12:13:16

posix: Implement self-contained POSIX barriers

POSIX barriers are now available in all configurations and no longer
depend on --enable-posix.

Update #2514.
Update #3114.

  • Property mode set to 100644
File size: 1.8 KB
Line 
1/**
2 * @file
3 *
4 * @brief Initialize POSIX API
5 *
6 * @ingroup ClassicRTEMS
7 */
8
9/*
10 *  COPYRIGHT (c) 1989-2014.
11 *  On-Line Applications Research Corporation (OAR).
12 *
13 *  The license and distribution terms for this file may be
14 *  found in the file LICENSE in this distribution or at
15 *  http://www.rtems.org/license/LICENSE.
16 */
17
18#if HAVE_CONFIG_H
19#include "config.h"
20#endif
21
22#include <rtems/posix/posixapi.h>
23#include <rtems/posix/barrierimpl.h>
24#include <rtems/posix/semaphoreimpl.h>
25#include <rtems/score/heap.h>
26
27#ifdef HEAP_PROTECTION
28RTEMS_STATIC_ASSERT(
29  POSIX_SEMAPHORE_MAGIC != HEAP_BEGIN_PROTECTOR_0,
30  POSIX_SEMAPHORE_MAGIC_0
31);
32RTEMS_STATIC_ASSERT(
33  POSIX_SEMAPHORE_MAGIC != HEAP_BEGIN_PROTECTOR_1,
34  POSIX_SEMAPHORE_MAGIC_1
35);
36RTEMS_STATIC_ASSERT(
37  POSIX_SEMAPHORE_MAGIC != HEAP_END_PROTECTOR_0,
38  POSIX_SEMAPHORE_MAGIC_2
39);
40RTEMS_STATIC_ASSERT(
41  POSIX_SEMAPHORE_MAGIC != HEAP_END_PROTECTOR_1,
42  POSIX_SEMAPHORE_MAGIC_3
43);
44RTEMS_STATIC_ASSERT(
45  POSIX_SEMAPHORE_MAGIC != HEAP_FREE_PATTERN,
46  POSIX_SEMAPHORE_MAGIC_4
47);
48RTEMS_STATIC_ASSERT(
49  POSIX_BARRIER_MAGIC != HEAP_BEGIN_PROTECTOR_0,
50  POSIX_BARRIER_MAGIC_0
51);
52RTEMS_STATIC_ASSERT(
53  POSIX_BARRIER_MAGIC != HEAP_BEGIN_PROTECTOR_1,
54  POSIX_BARRIER_MAGIC_1
55);
56RTEMS_STATIC_ASSERT(
57  POSIX_BARRIER_MAGIC != HEAP_END_PROTECTOR_0,
58  POSIX_BARRIER_MAGIC_2
59);
60RTEMS_STATIC_ASSERT(
61  POSIX_BARRIER_MAGIC != HEAP_END_PROTECTOR_1,
62  POSIX_BARRIER_MAGIC_3
63);
64RTEMS_STATIC_ASSERT(
65  POSIX_BARRIER_MAGIC != HEAP_FREE_PATTERN,
66  POSIX_BARRIER_MAGIC_4
67);
68#endif
69
70RTEMS_STATIC_ASSERT(
71  POSIX_SEMAPHORE_MAGIC != POSIX_BARRIER_MAGIC,
72  POSIX_SEMAPHORE_MAGIC_5
73);
74
75void _POSIX_Fatal_error( POSIX_Fatal_domain domain, int eno )
76{
77  uint32_t code = ( domain << 8 ) | ( ( uint32_t ) eno & 0xffU );
78
79  _Terminate( INTERNAL_ERROR_POSIX_API, code );
80}
Note: See TracBrowser for help on using the repository browser.