source: rtems/c/src/exec/rtems/include/rtems/rtems/modes.h @ 3a4ae6c

4.104.114.84.95
Last change on this file since 3a4ae6c was 3a4ae6c, checked in by Joel Sherrill <joel.sherrill@…>, on 09/11/95 at 19:35:39

The word "RTEMS" almost completely removed from the core.

Configuration Table Template file added and all tests
modified to use this. All gvar.h and conftbl.h files
removed from test directories.

Configuration parameter maximum_devices added.

Core semaphore and mutex handlers added and RTEMS API Semaphore
Manager updated to reflect this.

Initialization sequence changed to invoke API specific initialization
routines. Initialization tasks table now owned by RTEMS Tasks Manager.

Added user extension for post-switch.

Utilized user extensions to implement API specific functionality
like signal dispatching.

Added extensions to the System Initialization Thread so that an
API can register a function to be invoked while the system
is being initialized. These are largely equivalent to the
pre-driver and post-driver hooks.

Added the Modules file oar-go32_p5, modified oar-go32, and modified
the file make/custom/go32.cfg to look at an environment varable which
determines what CPU model is being used.

All BSPs updated to reflect named devices and clock driver's IOCTL
used by the Shared Memory Driver. Also merged clock isr into
main file and removed ckisr.c where possible.

Updated spsize to reflect new and moved variables.

Makefiles for the executive source and include files updated to show
break down of files into Core, RTEMS API, and Neither.

Header and inline files installed into subdirectory based on whether
logically in the Core or a part of the RTEMS API.

  • Property mode set to 100644
File size: 4.2 KB
Line 
1/*  modes.h
2 *
3 *  This include file contains all constants and structures associated
4 *  with the RTEMS thread and RTEMS_ASR modes.
5 *
6 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
7 *  On-Line Applications Research Corporation (OAR).
8 *  All rights assigned to U.S. Government, 1994.
9 *
10 *  This material may be reproduced by or for the U.S. Government pursuant
11 *  to the copyright license under the clause at DFARS 252.227-7013.  This
12 *  notice must appear in all copies of this file and its derivatives.
13 *
14 *  $Id$
15 */
16
17#ifndef __RTEMS_MODES_h
18#define __RTEMS_MODES_h
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24#include <rtems/core/isr.h>
25
26/*
27 *  The following type defines the control block used to manage
28 *  each a mode set.
29 */
30
31typedef unsigned32 Modes_Control;
32
33/*
34 *  The following constants define the individual modes and masks
35 *  which may be used to compose a mode set and to alter modes.
36 */
37
38#define RTEMS_ALL_MODE_MASKS     0x0000ffff
39
40#define RTEMS_DEFAULT_MODES     0x00000000
41#define RTEMS_CURRENT_MODE      0
42
43#define RTEMS_PREEMPT_MASK    0x00000100  /* preemption bit           */
44#define RTEMS_TIMESLICE_MASK  0x00000200  /* timeslice bit            */
45#define RTEMS_ASR_MASK        0x00000400  /* RTEMS_ASR enable bit           */
46#define RTEMS_INTERRUPT_MASK  CPU_MODES_INTERRUPT_MASK
47
48#define RTEMS_PREEMPT      0x00000000     /* enable preemption        */
49#define RTEMS_NO_PREEMPT   0x00000100     /* disable preemption       */
50
51#define RTEMS_NO_TIMESLICE 0x00000000     /* disable timeslicing      */
52#define RTEMS_TIMESLICE    0x00000200     /* enable timeslicing       */
53
54#define RTEMS_ASR          0x00000000     /* enable RTEMS_ASR               */
55#define RTEMS_NO_ASR       0x00000400     /* disable RTEMS_ASR              */
56
57/*
58 *  The number of bits for interrupt levels is CPU dependent.
59 *  RTEMS supports 0 to 256 levels in bits 0-7 of the mode.
60 */
61
62/*
63 *  RTEMS_INTERRUPT_LEVEL
64 *
65 *  DESCRIPTION:
66 *
67 *  This function returns the processor dependent interrupt
68 *  level which corresponds to the requested interrupt level.
69 *
70 * NOTE: RTEMS supports 256 interrupt levels using the least
71 *       significant eight bits of MODES.CONTROL.  On any
72 *       particular CPU, fewer than 256 levels may be supported.
73 */
74
75STATIC INLINE unsigned32 RTEMS_INTERRUPT_LEVEL (
76  Modes_Control mode_set
77);
78
79/*
80 *  _Modes_Mask_changed
81 *
82 *  DESCRIPTION:
83 *
84 *  This function returns TRUE if any of the mode flags in mask
85 *  are set in mode_set, and FALSE otherwise.
86 */
87
88STATIC INLINE boolean _Modes_Mask_changed (
89  Modes_Control mode_set,
90  Modes_Control masks
91);
92
93/*
94 *  _Modes_Is_asr_disabled
95 *
96 *  DESCRIPTION:
97 *
98 *  This function returns TRUE if mode_set indicates that Asynchronous
99 *  Signal Processing is disabled, and FALSE otherwise.
100 */
101
102STATIC INLINE boolean _Modes_Is_asr_disabled (
103  Modes_Control mode_set
104);
105
106/*
107 *  _Modes_Is_preempt
108 *
109 *  DESCRIPTION:
110 *
111 *  This function returns TRUE if mode_set indicates that preemption
112 *  is enabled, and FALSE otherwise.
113 */
114
115STATIC INLINE boolean _Modes_Is_preempt (
116  Modes_Control mode_set
117);
118
119/*
120 *  _Modes_Is_timeslice
121 *
122 *  DESCRIPTION:
123 *
124 *  This function returns TRUE if mode_set indicates that timeslicing
125 *  is enabled, and FALSE otherwise.
126 */
127
128STATIC INLINE boolean _Modes_Is_timeslice (
129  Modes_Control mode_set
130);
131
132/*
133 *  _Modes_Get_interrupt_level
134 *
135 *  DESCRIPTION:
136 *
137 *  This function returns the interrupt level portion of the mode_set.
138 */
139
140STATIC INLINE ISR_Level _Modes_Get_interrupt_level (
141  Modes_Control mode_set
142);
143
144/*
145 *  _Modes_Set_interrupt_level
146 *
147 *  DESCRIPTION:
148 *
149 *  This routine sets the current interrupt level to that specified
150 *  in the mode_set.
151 */
152
153STATIC INLINE void _Modes_Set_interrupt_level (
154  Modes_Control mode_set
155);
156
157/*
158 *  _Modes_Change
159 *
160 *  DESCRIPTION:
161 *
162 *  This routine changes the modes in old_mode_set indicated by
163 *  mask to the requested values in new_mode_set.  The resulting
164 *  mode set is returned in out_mode_set and the modes that changed
165 *  is returned in changed.
166 */
167
168STATIC INLINE void _Modes_Change (
169  Modes_Control  old_mode_set,
170  Modes_Control  new_mode_set,
171  Modes_Control  mask,
172  Modes_Control *out_mode_set,
173  Modes_Control *changed
174);
175
176#include <rtems/rtems/modes.inl>
177
178#ifdef __cplusplus
179}
180#endif
181
182#endif
183/* end of include file */
Note: See TracBrowser for help on using the repository browser.