Change license to BSD-2-Clause according to file histories and documentation re-licensing agreement.
Update #3899. Update #3993. --- cpukit/include/rtems/rtems/modes.h | 259 +++++++++++++++++++++-------- 1 file changed, 192 insertions(+), 67 deletions(-) diff --git a/cpukit/include/rtems/rtems/modes.h b/cpukit/include/rtems/rtems/modes.h index ccaef240d7..bfd69715e5 100644 --- a/cpukit/include/rtems/rtems/modes.h +++ b/cpukit/include/rtems/rtems/modes.h @@ -1,129 +1,254 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /** * @file * - * @ingroup ClassicModes + * @brief This header file provides the task modes API of the Task Manager. + */ + +/* + * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) + * Copyright (C) 2008 On-Line Applications Research Corporation (OAR) * - * This include file contains all constants and structures associated - * with the RTEMS thread and RTEMS_ASR modes. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. */ -/* COPYRIGHT (c) 1989-2013. - * On-Line Applications Research Corporation (OAR). +/* + * Do not manually edit this file. It is part of the RTEMS quality process + * and was automatically generated. + * + * If you find something that needs to be fixed or worded better please + * post a report to an RTEMS mailing list or raise a bug report: * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * https://docs.rtems.org/branches/master/user/support/bugs.html + * + * For information on updating and regenerating please refer to: + * + * https://docs.rtems.org/branches/master/eng/req/howto.html */ +/* Generated from spec:/rtems/mode/if/header */ + #ifndef _RTEMS_RTEMS_MODES_H #define _RTEMS_RTEMS_MODES_H +#include <stdint.h> #include <rtems/score/cpu.h> #ifdef __cplusplus extern "C" { #endif +/* Generated from spec:/rtems/mode/if/group */ + /** - * @defgroup ClassicModes Modes + * @defgroup RTEMSAPIClassicModes Task Modes * - * @ingroup RTEMSAPIClassic + * @ingroup RTEMSAPIClassic * - * This encapsulates functionality related to the task modes supported - * by the Classic API Task Manager. + * @brief This group contains the Classic API task modes. */ -/**@{*/ + +/* Generated from spec:/rtems/mode/if/all-mode-masks */ /** - * The following type defines the control block used to manage - * each a mode set. + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant is a bit mask with all mode bits set. */ -typedef uint32_t rtems_mode; +#define RTEMS_ALL_MODE_MASKS 0x0000ffff + +/* Generated from spec:/rtems/mode/if/asr */ /** - * The following constants define the individual modes and masks - * which may be used to compose a mode set and to alter modes. + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant indicates that signal processing is disabled. */ -#define RTEMS_ALL_MODE_MASKS 0x0000ffff +#define RTEMS_ASR 0x00000000 + +/* Generated from spec:/rtems/mode/if/asr-mask */ /** - * This mode constant is the default mode set. + * @ingroup RTEMSAPIClassicModes + * + * @brief This mode constant corresponds to the signal enable/disable bit. */ -#define RTEMS_DEFAULT_MODES 0x00000000 +#define RTEMS_ASR_MASK 0x00000400 + +/* Generated from spec:/rtems/mode/if/current-mode */ /** - * This mode constant is used when the user wishes to obtain their - * current execution mode. + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant indicates that the current task mode of the + * executing task shall be returned by rtems_task_mode(). */ -#define RTEMS_CURRENT_MODE 0 +#define RTEMS_CURRENT_MODE 0 -/** This mode constant corresponds to the timeslice enable/disable bit. */ -#define RTEMS_TIMESLICE_MASK 0x00000200 +/* Generated from spec:/rtems/mode/if/default */ -/** This mode constant corresponds to the preemption enable/disable bit. */ -#define RTEMS_PREEMPT_MASK 0x00000100 +/** + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant represents the default mode set. + */ +#define RTEMS_DEFAULT_MODES 0x00000000 -/** This mode constant corresponds to the signal enable/disable bit. */ -#define RTEMS_ASR_MASK 0x00000400 +/* Generated from spec:/rtems/mode/if/interrupt-mask */ -/** This mode constant corresponds to the interrupt enable/disable bits. */ -#define RTEMS_INTERRUPT_MASK CPU_MODES_INTERRUPT_MASK +/** + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant corresponds to the interrupt enable/disable + * bits. + */ +#define RTEMS_INTERRUPT_MASK CPU_MODES_INTERRUPT_MASK -/** This mode constant is used to indicate preemption is enabled. */ -#define RTEMS_PREEMPT 0x00000000 -/** This mode constant is used to indicate preemption is disabled. */ -#define RTEMS_NO_PREEMPT 0x00000100 +/* Generated from spec:/rtems/mode/if/interrupt-level */ -/** This mode constant is used to indicate timeslicing is disabled. */ -#define RTEMS_NO_TIMESLICE 0x00000000 -/** This mode constant is used to indicate timeslicing is enabled. */ -#define RTEMS_TIMESLICE 0x00000200 +/** + * @ingroup RTEMSAPIClassicModes + * + * @brief Maps the interrupt level to the associated processor-dependent task + * mode interrupt level. + * + * The Classic API supports 256 interrupt levels using the least significant + * eight bits of the mode set. On any particular processor variant, fewer than + * 256 levels may be supported. At least level 0 (all interrupts enabled) and + * level 1 (interrupts disabled, on most architectures) are supported. + * + * @param _interrupt_level is the interrupt level to map. + * + * @return null Returns the processor-dependent task mode interrupt level + * associated with the interrupt level. + */ +#define RTEMS_INTERRUPT_LEVEL( _interrupt_level ) \ + ( ( _interrupt_level ) & RTEMS_INTERRUPT_MASK ) -/** This mode constant is used to indicate signal processing is enabled. */ -#define RTEMS_ASR 0x00000000 -/** This mode constant is used to indicate signal processing is disabled. */ -#define RTEMS_NO_ASR 0x00000400 +/* Generated from spec:/rtems/mode/if/interrupt-mask-constant */ /** - * @brief RTEMS_INTERRUPT_LEVEL + * @ingroup RTEMSAPIClassicModes * - * This function returns the processor dependent interrupt - * level which corresponds to the requested interrupt level. + * @brief This task mode constant has the same value as #RTEMS_INTERRUPT_MASK. * - * @note RTEMS supports 256 interrupt levels using the least - * significant eight bits of MODES.CONTROL. On any - * particular CPU, fewer than 256 levels may be supported. + * This task mode constant is used by bindings from languages other than C and + * C++. */ -#define RTEMS_INTERRUPT_LEVEL( _mode_set ) \ - ( (_mode_set) & RTEMS_INTERRUPT_MASK ) +extern const uint32_t rtems_interrupt_mask; + +/* Generated from spec:/rtems/mode/if/mode */ /** - * @brief Interrupt Mask Variable + * @ingroup RTEMSAPIClassicModes * - * This variable is used by bindings from languages other than C and C++. + * @brief This type represents a Classic API task mode set. */ -extern const uint32_t rtems_interrupt_mask; +typedef uint32_t rtems_mode; + +/* Generated from spec:/rtems/mode/if/interrupt-level-body */ /** - * @brief Body for RTEMS_INTERRUPT_LEVEL Macro + * @ingroup RTEMSAPIClassicModes * - * @param[in] level is the desired interrupt level + * @brief Maps the interrupt level to the associated processor-dependent task + * mode interrupt level. * - * @retval This methods returns a mode with the desired interrupt - * @a level in the proper bitfield location. + * This function is used by bindings from languages other than C and C++. * - * @note This variable is used by bindings from languages other than - * C and C++. + * @param level is the interrupt level to map. + * + * @return Returns RTEMS_INTERRUPT_LEVEL() for the interrupt level. */ -rtems_mode rtems_interrupt_level_body( - uint32_t level -); +rtems_mode rtems_interrupt_level_body( uint32_t level ); -/**@}*/ +/* Generated from spec:/rtems/mode/if/no-asr */ + +/** + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant indicates that signal processing is disabled. + */ +#define RTEMS_NO_ASR 0x00000400 + +/* Generated from spec:/rtems/mode/if/no-preempt */ + +/** + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant indicates that preemption is disabled. + */ +#define RTEMS_NO_PREEMPT 0x00000100 + +/* Generated from spec:/rtems/mode/if/no-timeslice */ + +/** + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant indicates that timeslicing is disabled. + */ +#define RTEMS_NO_TIMESLICE 0x00000000 + +/* Generated from spec:/rtems/mode/if/preempt */ + +/** + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant indicates that preemption is enabled. + */ +#define RTEMS_PREEMPT 0x00000000 + +/* Generated from spec:/rtems/mode/if/preempt-mask */ + +/** + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant corresponds to the preemption enable/disable + * bit. + */ +#define RTEMS_PREEMPT_MASK 0x00000100 + +/* Generated from spec:/rtems/mode/if/timeslice */ + +/** + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant indicates that timeslicing is enabled. + */ +#define RTEMS_TIMESLICE 0x00000200 + +/* Generated from spec:/rtems/mode/if/timeslice-mask */ + +/** + * @ingroup RTEMSAPIClassicModes + * + * @brief This task mode constant corresponds to the timeslice enable/disable + * bit. + */ +#define RTEMS_TIMESLICE_MASK 0x00000200 #ifdef __cplusplus } #endif -#endif -/* end of include file */ +#endif /* _RTEMS_RTEMS_MODES_H */ -- 2.26.2 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel