source: rtems/cpukit/score/include/rtems/system.h @ 4b24055

4.115
Last change on this file since 4b24055 was 4b24055, checked in by Ralf Corsepius <ralf.corsepius@…>, on 06/18/10 at 04:00:54

2010-06-18 Ralf Corsépius <ralf.corsepius@…>

  • score/include/rtems/system.h: Remove ITRON_EXTERN.
  • Property mode set to 100644
File size: 5.0 KB
Line 
1/**
2 *  @file  rtems/system.h
3 *
4 *  This include file contains information that is included in every
5 *  function in the executive.  This must be the first include file
6 *  included in all internal RTEMS files.
7 */
8
9/*
10 *  COPYRIGHT (c) 1989-2007.
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.com/license/LICENSE.
16 *
17 *  $Id$
18 */
19
20#ifndef _RTEMS_SYSTEM_H
21#define _RTEMS_SYSTEM_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/*
28 *  The cpu options include file defines all cpu dependent
29 *  parameters for this build of RTEMS.  It must be included
30 *  first so the basic macro definitions are in place.
31 */
32#include <rtems/score/cpuopts.h>
33
34/**
35 *  The following ensures that all data is declared in the space
36 *  of the initialization routine for either the Initialization Manager
37 *  or the initialization file for the appropriate API.  It is
38 *  referenced as "external" in every other file.
39 */
40#ifdef SCORE_INIT
41#undef  SCORE_EXTERN
42#define SCORE_EXTERN
43#else
44#undef  SCORE_EXTERN
45#define SCORE_EXTERN  extern
46#endif
47
48/**
49 *  The following ensures that all data is declared in the space
50 *  of the initialization routine for either the Initialization Manager
51 *  or the initialization file for the appropriate API.  It is
52 *  referenced as "external" in every other file.
53 */
54#ifdef SAPI_INIT
55#undef  SAPI_EXTERN
56#define SAPI_EXTERN
57#else
58#undef  SAPI_EXTERN
59#define SAPI_EXTERN  extern
60#endif
61
62/**
63 *  The following ensures that all data is declared in the space
64 *  of the initialization routine for either the Initialization Manager
65 *  or the initialization file for the appropriate API.  It is
66 *  referenced as "external" in every other file.
67 */
68#ifdef RTEMS_API_INIT
69#undef  RTEMS_EXTERN
70#define RTEMS_EXTERN
71#else
72#undef  RTEMS_EXTERN
73#define RTEMS_EXTERN  extern
74#endif
75
76/**
77 *  The following ensures that all data is declared in the space
78 *  of the initialization routine for either the Initialization Manager
79 *  or the initialization file for the appropriate API.  It is
80 *  referenced as "external" in every other file.
81 */
82#ifdef POSIX_API_INIT
83#undef  POSIX_EXTERN
84#define POSIX_EXTERN
85#else
86#undef  POSIX_EXTERN
87#define POSIX_EXTERN  extern
88#endif
89
90/**
91 *  The following (in conjunction with compiler arguments) are used
92 *  to choose between the use of static inline functions and macro
93 *  functions.   The static inline implementation allows better
94 *  type checking with no cost in code size or execution speed.
95 */
96#ifdef __GNUC__
97#  define RTEMS_INLINE_ROUTINE static __inline__
98#else
99#  define RTEMS_INLINE_ROUTINE static inline
100#endif
101
102/**
103 *  The following macro is a compiler specific way to ensure that memory
104 *  writes are not reordered around certian points.  This specifically can
105 *  impact interrupt disable and thread dispatching critical sections.
106 */
107#ifdef __GNUC__
108  #define RTEMS_COMPILER_MEMORY_BARRIER() asm volatile("" ::: "memory")
109#else
110  #define RTEMS_COMPILER_MEMORY_BARRIER()
111#endif
112
113/**
114 *  The following macro is a compiler specific way to indicate that
115 *  the method will NOT return to the caller.  This can assist the
116 *  compiler in code generation and avoid unreachable paths.  This
117 *  can impact the code generated following calls to
118 *  rtems_fatal_error_occurred and _Internal_error_Occurred.
119 */
120#ifdef __GNUC__
121  #define RTEMS_COMPILER_NO_RETURN_ATTRIBUTE \
122      __attribute__ ((noreturn))
123#else
124  #define RTEMS_COMPILER_NO_RETURN_ATTRIBUTE
125#endif
126
127/**
128 *  Instructs the compiler to issue a warning whenever a variable or function
129 *  with this attribute will be used.
130 */
131#ifdef __GNUC__
132  #define RTEMS_COMPILER_DEPRECATED_ATTRIBUTE \
133     __attribute__ ((deprecated))
134#else
135  #define RTEMS_COMPILER_DEPRECATED_ATTRIBUTE
136#endif
137
138#ifndef ASM
139#ifdef RTEMS_POSIX_API
140/** The following is used by the POSIX implementation to catch bad paths.  */
141int POSIX_NOT_IMPLEMENTED( void );
142#endif
143
144/*
145 *  Include a base set of files.
146 */
147
148/**
149 * XXX: Eventually proc_ptr needs to disappear!!!
150 */
151typedef void * proc_ptr;
152
153#include <stddef.h>
154#endif
155
156#if !defined( TRUE ) || (TRUE != 1)
157/**  Boolean constant TRUE */
158#undef TRUE
159#define TRUE     (1)
160#endif
161
162#if !defined( FALSE ) || (FALSE != 0)
163/**  Boolean constant FALSE */
164#undef FALSE
165#define FALSE     (0)
166#endif
167
168#ifndef ASM
169#include <stdint.h>
170#endif
171#include <rtems/score/cpu.h>        /* processor specific information */
172
173#ifndef ASM
174/**
175 *  This macro is used to obtain the offset of a field in a structure.
176 */
177#define RTEMS_offsetof(type, field) \
178       ((uintptr_t) &(((type *) 0)->field))
179
180/**
181 *  The following is the extern for the RTEMS version string.
182 *
183 *  @note The contents of this string are CPU specific.
184 */
185extern const char _RTEMS_version[];
186
187/**
188 *  The following is the extern for the RTEMS copyright string.
189 */
190extern const char _Copyright_Notice[];
191
192/** This macro defines the maximum length of a Classic API name. */
193#define RTEMS_MAXIMUM_NAME_LENGTH sizeof(rtems_name)
194#endif
195
196#ifdef __cplusplus
197}
198#endif
199
200#endif
201/* end of include file */
Note: See TracBrowser for help on using the repository browser.