RTEMS  5.0.0
modesimpl.h
Go to the documentation of this file.
1 
9 /* COPYRIGHT (c) 1989-2008.
10  * On-Line Applications Research Corporation (OAR).
11  *
12  * The license and distribution terms for this file may be
13  * found in the file LICENSE in this distribution or at
14  * http://www.rtems.org/license/LICENSE.
15  */
16 
17 #ifndef _RTEMS_RTEMS_MODESIMPL_H
18 #define _RTEMS_RTEMS_MODESIMPL_H
19 
20 #include <rtems/rtems/modes.h>
21 #include <rtems/score/isrlevel.h>
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
42  rtems_mode mode_set,
43  rtems_mode masks
44 )
45 {
46  return ( mode_set & masks ) ? true : false;
47 }
48 
56  rtems_mode mode_set
57 )
58 {
59  return (mode_set & RTEMS_ASR_MASK) == RTEMS_NO_ASR;
60 }
61 
69  rtems_mode mode_set
70 )
71 {
72  return (mode_set & RTEMS_PREEMPT_MASK) == RTEMS_PREEMPT;
73 }
74 
82  rtems_mode mode_set
83 )
84 {
85  return (mode_set & RTEMS_TIMESLICE_MASK) == RTEMS_TIMESLICE;
86 }
87 
94  rtems_mode mode_set
95 )
96 {
97  return ( mode_set & RTEMS_INTERRUPT_MASK );
98 }
99 
107  rtems_mode mode_set
108 )
109 {
111 }
112 
123  rtems_mode old_mode_set,
124  rtems_mode new_mode_set,
125  rtems_mode mask,
126  rtems_mode *out_mode_set,
127  rtems_mode *changed
128 )
129 {
130  rtems_mode _out_mode;
131 
132  _out_mode = old_mode_set;
133  _out_mode &= ~mask;
134  _out_mode |= new_mode_set & mask;
135  *changed = _out_mode ^ old_mode_set;
136  *out_mode_set = _out_mode;
137 }
138 
139 #ifdef __cplusplus
140 }
141 #endif
142 
145 #endif
146 /* end of include file */
#define RTEMS_ASR_MASK
Definition: modes.h:67
RTEMS_INLINE_ROUTINE bool _Modes_Is_preempt(rtems_mode mode_set)
Checks if mode_set indicates that preemption is enabled.
Definition: modesimpl.h:68
RTEMS_INLINE_ROUTINE bool _Modes_Is_timeslice(rtems_mode mode_set)
Checks if mode_set indicates that timeslicing is enabled.
Definition: modesimpl.h:81
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:65
ISR Level Type.
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level(rtems_mode mode_set)
Gets the interrupt level portion of the mode_set.
Definition: modesimpl.h:93
RTEMS_INLINE_ROUTINE bool _Modes_Mask_changed(rtems_mode mode_set, rtems_mode masks)
Checks if any of the mode flags in mask are set in mode_set.
Definition: modesimpl.h:41
#define RTEMS_NO_ASR
Definition: modes.h:85
uint32_t ISR_Level
Definition: isrlevel.h:38
RTEMS_INLINE_ROUTINE void _Modes_Change(rtems_mode old_mode_set, rtems_mode new_mode_set, rtems_mode mask, rtems_mode *out_mode_set, rtems_mode *changed)
Changes the modes in old_mode_set indicated by mask to the requested values in new_mode_set.
Definition: modesimpl.h:122
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level(rtems_mode mode_set)
Sets the current interrupt level to that specified in the mode_set.
Definition: modesimpl.h:106
#define RTEMS_TIMESLICE_MASK
Definition: modes.h:61
RTEMS_INLINE_ROUTINE bool _Modes_Is_asr_disabled(rtems_mode mode_set)
Checks if mode_set says that Asynchronous Signal Processing is disabled.
Definition: modesimpl.h:55
#define RTEMS_INTERRUPT_MASK
Definition: modes.h:70
#define _ISR_Set_level(_new_level)
Set current interrupt level.
Definition: isrlevel.h:137
#define RTEMS_PREEMPT_MASK
Definition: modes.h:64
#define RTEMS_TIMESLICE
Definition: modes.h:80
uint32_t rtems_mode
Definition: modes.h:41
#define RTEMS_PREEMPT
Definition: modes.h:73