1 /* ---------------------------------------------------------------------------- 2 * Copyright (c) Huawei Technologies Co., Ltd. 2013-2019. All rights reserved. 3 * Description: BitMap HeadFile 4 * Author: Huawei LiteOS Team 5 * Create: 2013-01-01 6 * Redistribution and use in source and binary forms, with or without modification, 7 * are permitted provided that the following conditions are met: 8 * 1. Redistributions of source code must retain the above copyright notice, this list of 9 * conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list 11 * of conditions and the following disclaimer in the documentation and/or other materials 12 * provided with the distribution. 13 * 3. Neither the name of the copyright holder nor the names of its contributors may be used 14 * to endorse or promote products derived from this software without specific prior written 15 * permission. 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 18 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 23 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 26 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * --------------------------------------------------------------------------- */ 28 29 /** 30 * @defgroup los_bitmap Bitmap 31 * @ingroup kernel 32 */ 33 34 #ifndef _LOS_BITMAP_H 35 #define _LOS_BITMAP_H 36 37 #include "los_typedef.h" 38 39 #ifdef __cplusplus 40 extern "C" { 41 #endif /* __cplusplus */ 42 43 /** 44 * @ingroup los_bitmap 45 * Flag that indicates the invalid bit index. 46 * 47 * The effective bit index is from 0 to 31. 48 */ 49 #define LOS_INVALID_BIT_INDEX 32 50 51 /** 52 * @ingroup los_bitmap 53 * @brief Set one bit. 54 * 55 * @par Description: 56 * This API is used to set one bit of variable according to the parameter. 57 * @attention 58 * <ul> 59 * <li>When the value of pos is greater than 31, the bit (pos & 0x1f) of bitmap will be set.</li> 60 * </ul> 61 * @param bitmap [IN] The bitmap variable pointer. 62 * @param pos [IN] The number bit to be set. 63 * 64 * @retval None 65 * @par Dependency: 66 * <ul><li>los_bitmap.h: the header file that contains the API declaration.</li></ul> 67 * @see LOS_BitmapClr 68 * @since Huawei LiteOS V100R001C00 69 */ 70 VOID LOS_BitmapSet(UINT32 *bitmap, UINT16 pos); 71 72 /** 73 * @ingroup los_bitmap 74 * @brief Clear one bit. 75 * 76 * @par Description: 77 * This API is used to clear one bit of variable according to the parameter. 78 * @attention 79 * <ul> 80 * <li>When the value of pos is greater than 31, the bit (pos & 0x1f) of bitmap will be clear.</li> 81 * </ul> 82 * @param bitmap [IN] The bitmap variable pointer. 83 * @param pos [IN] The number bit to be cleared. 84 * 85 * @retval None. 86 * @par Dependency: 87 * <ul><li>los_bitmap.h: the header file that contains the API declaration.</li></ul> 88 * @see LOS_BitmapSet. 89 * @since Huawei LiteOS V100R001C00 90 */ 91 VOID LOS_BitmapClr(UINT32 *bitmap, UINT16 pos); 92 93 /** 94 * @ingroup los_bitmap 95 * @brief Find the lowest one bit that is set. 96 * 97 * @par Description: 98 * This API is used to find the lowest one bit that is set and return the bit index. 99 * @attention 100 * None. 101 * @param bitmap [IN] The bitmap variable. 102 * 103 * @retval #UINT16 The bit index of the lowest one bit that is set. 104 * @par Dependency: 105 * <ul><li>los_bitmap.h: the header file that contains the API declaration.</li></ul> 106 * @see LOS_HighBitGet 107 * @since Huawei LiteOS V100R001C00 108 */ 109 UINT16 LOS_LowBitGet(UINT32 bitmap); 110 111 /** 112 * @ingroup los_bitmap 113 * @brief Find the highest one bit that is set. 114 * 115 * @par Description: 116 * This API is used to find the highest one bit that is set and return the bit index. 117 * @attention 118 * None. 119 * @param bitmap [IN] The bitmap variable. 120 * 121 * @retval #UINT16 The bit index of the highest one bit that is set. 122 * @par Dependency: 123 * <ul><li>los_bitmap.h: the header file that contains the API declaration.</li></ul> 124 * @see LOS_LowBitGet 125 * @since Huawei LiteOS V100R001C00 126 */ 127 UINT16 LOS_HighBitGet(UINT32 bitmap); 128 129 #ifdef __cplusplus 130 } 131 #endif /* __cplusplus */ 132 133 #endif /* _LOS_BITMAP_H */ 134