RTEMS
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 */
This header file defines the task modes of the Task Manager API.
static __inline__ bool _Modes_Is_asr_disabled(rtems_mode mode_set)
Checks if mode_set says that Asynchronous Signal Processing is disabled.
Definition: modesimpl.h:55
ISR Level Type.
#define RTEMS_INTERRUPT_MASK
This task mode constant corresponds to the interrupt enable/disable bits.
Definition: modes.h:81
#define RTEMS_TIMESLICE
This task mode constant is used to indicate timeslicing is enabled.
Definition: modes.h:239
#define RTEMS_TIMESLICE_MASK
This task mode constant corresponds to the timeslice enable/disable bit.
Definition: modes.h:249
#define _ISR_Set_level(_new_level)
Set current interrupt level.
Definition: isrlevel.h:140
static __inline__ bool _Modes_Is_timeslice(rtems_mode mode_set)
Checks if mode_set indicates that timeslicing is enabled.
Definition: modesimpl.h:81
uint32_t ISR_Level
Definition: isrlevel.h:41
static __inline__ ISR_Level _Modes_Get_interrupt_level(rtems_mode mode_set)
Gets the interrupt level portion of the mode_set.
Definition: modesimpl.h:93
#define RTEMS_ASR_MASK
This mode constant corresponds to the signal enable/disable bit.
Definition: modes.h:118
#define RTEMS_PREEMPT
This task mode constant is used to indicate preemption is enabled.
Definition: modes.h:220
#define RTEMS_NO_ASR
This task mode constant is used to indicate signal processing is disabled.
Definition: modes.h:193
uint32_t rtems_mode
This type is used to represent a task mode set.
Definition: modes.h:90
static __inline__ 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_PREEMPT_MASK
This task mode constant corresponds to the preemption enable/disable bit.
Definition: modes.h:230
static __inline__ 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
static __inline__ 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
static __inline__ bool _Modes_Is_preempt(rtems_mode mode_set)
Checks if mode_set indicates that preemption is enabled.
Definition: modesimpl.h:68
#define RTEMS_INLINE_ROUTINE
Gives a hint to the compiler in a function declaration to inline this function.
Definition: basedefs.h:683