summaryrefslogtreecommitdiffstats
path: root/c/src/exec/score/headers/sysstate.h
blob: c5d8562001cc84b59e3e55bd23751131ce35bb2e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/*  sysstates.h
 *
 *  This include file contains information regarding the system state.
 *
 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
 *  On-Line Applications Research Corporation (OAR).
 *  All rights assigned to U.S. Government, 1994.
 *
 *  This material may be reproduced by or for the U.S. Government pursuant
 *  to the copyright license under the clause at DFARS 252.227-7013.  This
 *  notice must appear in all copies of this file and its derivatives.
 *
 *  $Id$
 */

#ifndef __RTEMS_SYSTEM_STATE_h
#define __RTEMS_SYSTEM_STATE_h

#ifdef __cplusplus
extern "C" {
#endif

/* types */

/* enumerated constants */

/*
 *  The following type defines the possible system states.
 */

typedef enum {
  SYSTEM_STATE_BEFORE_INITIALIZATION,   /* start -> end of 1st init part */
  SYSTEM_STATE_BEFORE_MULTITASKING,     /* end of 1st -> beginning of 2nd */
  SYSTEM_STATE_BEGIN_MULTITASKING,      /* just before multitasking starts */
  SYSTEM_STATE_UP,                      /* normal operation */
  SYSTEM_STATE_FAILED                   /* fatal error occurred */
} System_state_Codes;

#define SYSTEM_STATE_CODES_FIRST SYSTEM_STATE_BEFORE_INITIALIZATION
#define SYSTEM_STATE_CODES_LAST  SYSTEM_STATE_FAILED

/*
 *  The following variable indicates whether or not this is 
 *  an multiprocessing system.
 */
 
EXTERN boolean _System_state_Is_multiprocessing;

/*
 *  The following variable contains the current system state.
 */

EXTERN System_state_Codes _System_state_Current;

/*
 *  _System_state_Handler_initialization
 *
 *  DESCRIPTION:
 *
 *  This routine initializes the system state handler.
 */
 
STATIC INLINE void _System_state_Handler_initialization (
  boolean  is_multiprocessing
);
 
/*
 *  _System_state_Set
 *
 *  DESCRIPTION:
 *
 *  This routine sets the current system state to that specified by
 *  the called.
 */

STATIC INLINE void _System_state_Set (
  System_state_Codes state
);

/*
 *  _System_state_Get
 *
 *  DESCRIPTION:
 *
 *  This function returns the current system state.
 */

STATIC INLINE System_state_Codes _System_state_Get ( void );

/*
 *  _System_state_Is_before_initialization
 *
 *  DESCRIPTION:
 *
 *  This function returns TRUE if the state is equal to the
 *  "before initialization" state, and FALSE otherwise.
 */

STATIC INLINE boolean _System_state_Is_before_initialization (
  System_state_Codes state
);

/*
 *  _System_state_Is_before_multitasking
 *
 *  DESCRIPTION:
 *
 *  This function returns TRUE if the state is equal to the
 *  "before multitasking" state, and FALSE otherwise.
 */

STATIC INLINE boolean _System_state_Is_before_multitasking (
  System_state_Codes state
);

/*
 *  _System_state_Is_begin_multitasking
 *
 *  DESCRIPTION:
 *
 *  This function returns TRUE if the state is equal to the
 *  "begin multitasking" state, and FALSE otherwise.
 */

STATIC INLINE boolean _System_state_Is_begin_multitasking (
  System_state_Codes state
);

/*
 *  _System_state_Is_up
 *
 *  DESCRIPTION:
 *
 *  This function returns TRUE if the state is equal to the
 *  "up" state, and FALSE otherwise.
 */

STATIC INLINE boolean _System_state_Is_up (
  System_state_Codes state
);

/*
 *  _System_state_Is_failed
 *
 *  DESCRIPTION:
 *
 *  This function returns TRUE if the state is equal to the
 *  "failed" state, and FALSE otherwise.
 */

STATIC INLINE boolean _System_state_Is_failed (
  System_state_Codes state
);

#include <rtems/score/sysstate.inl>

#ifdef __cplusplus
}
#endif

#endif
/* end of include file */