• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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