source: rtems/cpukit/include/rtems/rtems/modesimpl.h @ bdd4eb87

5
Last change on this file since bdd4eb87 was bdd4eb87, checked in by Sebastian Huber <sebastian.huber@…>, on 11/08/18 at 08:13:59

rtems: Remove Modes_Control

Use rtems_mode directly. This is in line with rtems_attribute and
rtems_option.

Update #3598.

  • Property mode set to 100644
File size: 3.3 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup ClassicModesImpl
5 *
6 * @brief Classic Modes Implementation
7 */
8
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
24extern "C" {
25#endif
26
27/**
28 * @defgroup ClassicModesImpl Classic Modes Implementation
29 *
30 * @ingroup ClassicModes
31 *
32 * @{
33 */
34
35/**
36 *  @brief Checks if any of the mode flags in mask are set in mode_set.
37 *
38 *  This function returns TRUE if any of the mode flags in mask
39 *  are set in mode_set, and FALSE otherwise.
40 */
41RTEMS_INLINE_ROUTINE bool _Modes_Mask_changed (
42  rtems_mode mode_set,
43  rtems_mode masks
44)
45{
46   return ( mode_set & masks ) ? true : false;
47}
48
49/**
50 *  @brief Checks if mode_set says that Asynchronous Signal Processing is disabled.
51 *
52 *  This function returns TRUE if mode_set indicates that Asynchronous
53 *  Signal Processing is disabled, and FALSE otherwise.
54 */
55RTEMS_INLINE_ROUTINE bool _Modes_Is_asr_disabled (
56  rtems_mode mode_set
57)
58{
59   return (mode_set & RTEMS_ASR_MASK) == RTEMS_NO_ASR;
60}
61
62/**
63 *  @brief Checks if mode_set indicates that preemption is enabled.
64 *
65 *  This function returns TRUE if mode_set indicates that preemption
66 *  is enabled, and FALSE otherwise.
67 */
68RTEMS_INLINE_ROUTINE bool _Modes_Is_preempt (
69  rtems_mode mode_set
70)
71{
72   return (mode_set & RTEMS_PREEMPT_MASK) == RTEMS_PREEMPT;
73}
74
75/**
76 *  @brief Checks if mode_set indicates that timeslicing is enabled.
77 *
78 *  This function returns TRUE if mode_set indicates that timeslicing
79 *  is enabled, and FALSE otherwise.
80 */
81RTEMS_INLINE_ROUTINE bool _Modes_Is_timeslice (
82  rtems_mode mode_set
83)
84{
85  return (mode_set & RTEMS_TIMESLICE_MASK) == RTEMS_TIMESLICE;
86}
87
88/**
89 *  @brief Gets the interrupt level portion of the mode_set.
90 *
91 *  This function returns the interrupt level portion of the mode_set.
92 */
93RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
94  rtems_mode mode_set
95)
96{
97  return ( mode_set & RTEMS_INTERRUPT_MASK );
98}
99
100/**
101 *  @brief Sets the current interrupt level to that specified in the mode_set.
102 *
103 *  This routine sets the current interrupt level to that specified
104 *  in the mode_set.
105 */
106RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
107  rtems_mode mode_set
108)
109{
110  _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
111}
112
113/**
114 *  @brief Changes the modes in old_mode_set indicated by
115 *  mask to the requested values in new_mode_set.
116 *
117 *  This routine changes the modes in old_mode_set indicated by
118 *  mask to the requested values in new_mode_set.  The resulting
119 *  mode set is returned in out_mode_set and the modes that changed
120 *  is returned in changed.
121 */
122RTEMS_INLINE_ROUTINE void _Modes_Change (
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
143/**@}*/
144
145#endif
146/* end of include file */
Note: See TracBrowser for help on using the repository browser.