1 /* ---------------------------------------------------------------------------- 2 * Copyright (c) Huawei Technologies Co., Ltd. 2013-2015. All rights reserved. 3 * Description: LiteOS memory Module Implementation 4 * Author: Huawei LiteOS Team 5 * Create: 2013-05-12 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_slab Slab 31 * @ingroup kernel 32 */ 33 34 #ifndef _LOS_SLAB_H 35 #define _LOS_SLAB_H 36 37 #include "los_base.h" 38 39 #ifdef __cplusplus 40 extern "C" { 41 #endif /* __cplusplus */ 42 43 /** 44 * @ingroup los_slab 45 * total size of each slab class. 46 */ 47 #define SLAB_MEM_ALLOCATOR_SIZE 512U 48 49 #define SLAB_BASIC_NEED_SIZE 0x1000 50 51 /** 52 * @ingroup los_slab 53 * slab bucket size type. 54 */ 55 #ifdef LOSCFG_KERNEL_MEM_SLAB_AUTO_EXPANSION_MODE 56 enum SlabBucketSizeType { 57 SLAB_BUCKET_SIZE_HALF_OF_HEAP = 0x1UL, /**< a half of heap size slab mem can use */ 58 SLAB_BUCKET_SIZE_QUARTER_OF_HEAP, /**< one quarter of heap size slab mem can use */ 59 SLAB_BUCKET_SIZE_TYPE_MAX 60 }; 61 62 #define SLAB_MEM_BUCKET_SIZE_TYPE SLAB_BUCKET_SIZE_HALF_OF_HEAP 63 #endif 64 65 /** 66 * @ingroup los_slab 67 * @brief configure slab size. 68 * 69 * @par Description: 70 * This API is used to configure slab size. 71 * @attention 72 * <ul> 73 * <li>The function should be called before function LOS_MemInit if necessary.</li> 74 * <li>The function takes effect when LOSCFG_KERNEL_MEM_SLAB_AUTO_EXPANSION_MODE is NO.</li> 75 * </ul> 76 * 77 * @param cfg [IN] the pointer to slab size config table. Note that the pointer cannot be null. 78 * @param cnt [IN] slab class size, must be equal to SLAB_MEM_COUNT(the number of slab class). 79 * 80 * @retval None. 81 * @par Dependency: 82 * <ul> 83 * <li>los_slab.h: the header file that contains the API declaration.</li> 84 * </ul> 85 * @since Huawei LiteOS V200R003C00 86 */ 87 extern VOID LOS_SlabSizeCfg(UINT32 *cfg, UINT32 cnt); 88 89 #ifdef __cplusplus 90 } 91 #endif /* __cplusplus */ 92 93 #endif /* _LOS_SLAB_H */ 94