XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
allocator.c 文件参考

XWOS内存管理:内存池:页分配器 更多...

#include <xwos/standard.h>
#include <string.h>
#include <xwos/lib/xwbop.h>
#include <xwos/mm/common.h>
#include <xwos/mm/mempool/page.h>
#include <xwos/mm/mempool/allocator.h>
allocator.c 的引用(Include)关系图:

浏览源代码.

宏定义

#define xwmm_mempoollogf(lv, thd, fmt, ...)
 

函数

static xwer_t xwmm_mempool_construct (struct xwmm_mempool *mp, const char *name, xwptr_t origin, xwsz_t size, struct xwmm_mempool_page_odrbtree *odrbtree, struct xwmm_mempool_page *pgarray)
 构建内存池
 
xwer_t xwmm_mempool_init (struct xwmm_mempool *mp, const char *name, xwptr_t origin, xwsz_t size, xwsz_t pgodr, xwsz_t pre, void **membuf)
 XWMM API:初始化内存池
 
xwer_t xwmm_mempool_malloc (struct xwmm_mempool *mp, xwsz_t size, void **membuf)
 XWMM API:从内存池中申请内存
 
xwer_t xwmm_mempool_free (struct xwmm_mempool *mp, void *mem)
 XWMM API:释放内存
 
xwer_t xwmm_mempool_realloc (struct xwmm_mempool *mp, xwsz_t size, void **membuf)
 XWMM API:调整内存大小
 
xwer_t xwmm_mempool_memalign (struct xwmm_mempool *mp, xwsz_t alignment, xwsz_t size, void **membuf)
 XWMM API:从内存池中申请对齐的内存
 

详细描述

XWOS内存管理:内存池:页分配器

作者

在文件 allocator.c 中定义.

宏定义说明

◆ xwmm_mempoollogf

#define xwmm_mempoollogf (   lv,
  thd,
  fmt,
  ... 
)

< 调试日志开关

在文件 allocator.c25 行定义.

函数说明

◆ xwmm_mempool_construct()

static xwer_t xwmm_mempool_construct ( struct xwmm_mempool mp,
const char *  name,
xwptr_t  origin,
xwsz_t  size,
struct xwmm_mempool_page_odrbtree odrbtree,
struct xwmm_mempool_page pgarray 
)
static

构建内存池

参数
[in]mp内存池的指针
[in]name名字
[in]origin内存区域的起始地址
[in]size内存区域的总大小
[in]odrbtree阶红黑树数组的指针
[in]pgarray页控制块数组的指针
返回
错误码
返回值
XWOK没有错误
-E2SMALL内存区域太小
-EALIGN内存区域没有对齐

< 每页内存的字节数

< 内存管理对齐的字节数

< 8字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 16字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 32字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 64字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 96字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 128字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 160字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 192字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 256字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 320字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 384字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 512字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 768字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 1024字节分配器所使用的页的阶数

< 内存管理对齐的字节数

< 2048字节分配器所使用的页的阶数

<No error

在文件 allocator.c42 行定义.

46{
47 xwer_t rc;
48
50 origin, size, XWMM_MEMPOOL_PAGE_SIZE,
51 odrbtree, pgarray);
52 if (rc < 0) {
53 goto err_pa_init;
54 }
55
56 rc = xwmm_mempool_objcache_init(&mp->oc_8, &mp->pa, NULL,
59 NULL, NULL);
60 if (rc < 0) {
61 goto err_oc_8_init;
62 }
63
64 rc = xwmm_mempool_objcache_init(&mp->oc_16, &mp->pa, NULL,
67 NULL, NULL);
68 if (rc < 0) {
69 goto err_oc_16_init;
70 }
71
72 rc = xwmm_mempool_objcache_init(&mp->oc_32, &mp->pa, NULL,
75 NULL, NULL);
76 if (rc < 0) {
77 goto err_oc_32_init;
78 }
79
80 rc = xwmm_mempool_objcache_init(&mp->oc_64, &mp->pa, NULL,
83 NULL, NULL);
84 if (rc < 0) {
85 goto err_oc_64_init;
86 }
87
88 rc = xwmm_mempool_objcache_init(&mp->oc_96, &mp->pa, NULL,
91 NULL, NULL);
92 if (rc < 0) {
93 goto err_oc_96_init;
94 }
95
97 128, XWMM_ALIGNMENT,
99 NULL, NULL);
100 if (rc < 0) {
101 goto err_oc_128_init;
102 }
103
104 rc = xwmm_mempool_objcache_init(&mp->oc_160, &mp->pa, NULL,
105 160, XWMM_ALIGNMENT,
107 NULL, NULL);
108 if (rc < 0) {
109 goto err_oc_160_init;
110 }
111
112 rc = xwmm_mempool_objcache_init(&mp->oc_192, &mp->pa, NULL,
113 192, XWMM_ALIGNMENT,
115 NULL, NULL);
116 if (rc < 0) {
117 goto err_oc_192_init;
118 }
119
120 rc = xwmm_mempool_objcache_init(&mp->oc_256, &mp->pa, NULL,
121 256, XWMM_ALIGNMENT,
123 NULL, NULL);
124 if (rc < 0) {
125 goto err_oc_256_init;
126 }
127
128 rc = xwmm_mempool_objcache_init(&mp->oc_320, &mp->pa, NULL,
129 320, XWMM_ALIGNMENT,
131 NULL, NULL);
132 if (rc < 0) {
133 goto err_oc_320_init;
134 }
135
136 rc = xwmm_mempool_objcache_init(&mp->oc_384, &mp->pa, NULL,
137 384, XWMM_ALIGNMENT,
139 NULL, NULL);
140 if (rc < 0) {
141 goto err_oc_384_init;
142 }
143
144 rc = xwmm_mempool_objcache_init(&mp->oc_512, &mp->pa, NULL,
145 512, XWMM_ALIGNMENT,
147 NULL, NULL);
148 if (rc < 0) {
149 goto err_oc_512_init;
150 }
151
152 rc = xwmm_mempool_objcache_init(&mp->oc_768, &mp->pa, NULL,
153 768, XWMM_ALIGNMENT,
155 NULL, NULL);
156 if (rc < 0) {
157 goto err_oc_768_init;
158 }
159
160 rc = xwmm_mempool_objcache_init(&mp->oc_1024, &mp->pa, NULL,
161 1024, XWMM_ALIGNMENT,
163 NULL, NULL);
164 if (rc < 0) {
165 goto err_oc_1024_init;
166 }
167
168 rc = xwmm_mempool_objcache_init(&mp->oc_2048, &mp->pa, NULL,
169 2048, XWMM_ALIGNMENT,
171 NULL, NULL);
172 if (rc < 0) {
173 goto err_oc_2048_init;
174 }
175
176 mp->name = name;
177
178 return XWOK;
179
180err_oc_2048_init:
181err_oc_1024_init:
182err_oc_768_init:
183err_oc_512_init:
184err_oc_384_init:
185err_oc_320_init:
186err_oc_256_init:
187err_oc_192_init:
188err_oc_160_init:
189err_oc_128_init:
190err_oc_96_init:
191err_oc_64_init:
192err_oc_32_init:
193err_oc_16_init:
194err_oc_8_init:
195err_pa_init:
196 return rc;
197}
#define XWMM_ALIGNMENT
Definition common.h:29
xwer_t xwmm_mempool_objcache_init(struct xwmm_mempool_objcache *oc, struct xwmm_mempool_page_allocator *pa, const char *name, xwsz_t objsize, xwsz_t alignment, xwsq_t pg_order, ctor_f ctor, dtor_f dtor)
XWMM API:初始化对象缓存
Definition objcache.c:54
#define XWMM_MEMPOOL_OC_384_PAGE_ODR
Definition allocator.h:62
#define XWMM_MEMPOOL_OC_128_PAGE_ODR
Definition allocator.h:57
#define XWMM_MEMPOOL_OC_160_PAGE_ODR
Definition allocator.h:58
#define XWMM_MEMPOOL_OC_320_PAGE_ODR
Definition allocator.h:61
#define XWMM_MEMPOOL_OC_256_PAGE_ODR
Definition allocator.h:60
#define XWMM_MEMPOOL_OC_16_PAGE_ODR
Definition allocator.h:53
#define XWMM_MEMPOOL_OC_64_PAGE_ODR
Definition allocator.h:55
#define XWMM_MEMPOOL_OC_192_PAGE_ODR
Definition allocator.h:59
#define XWMM_MEMPOOL_OC_8_PAGE_ODR
Definition allocator.h:52
#define XWMM_MEMPOOL_OC_768_PAGE_ODR
Definition allocator.h:64
#define XWMM_MEMPOOL_OC_96_PAGE_ODR
Definition allocator.h:56
#define XWMM_MEMPOOL_PAGE_SIZE
Definition allocator.h:51
#define XWMM_MEMPOOL_OC_2048_PAGE_ODR
Definition allocator.h:66
#define XWMM_MEMPOOL_OC_32_PAGE_ODR
Definition allocator.h:54
xwer_t xwmm_mempool_page_allocator_init(struct xwmm_mempool_page_allocator *pa, const char *name, xwptr_t origin, xwsz_t size, xwsz_t pgsize, struct xwmm_mempool_page_odrbtree *odrbtree, struct xwmm_mempool_page *pgarray)
XWMM API:初始化页分配器
Definition page.c:86
#define XWMM_MEMPOOL_OC_512_PAGE_ODR
Definition allocator.h:63
#define XWMM_MEMPOOL_OC_1024_PAGE_ODR
Definition allocator.h:65
#define XWOK
No error
Definition errno.h:182
signed long xwer_t
Definition type.h:554
#define NULL
Definition type.h:28
struct xwmm_mempool_page_allocator pa
Definition allocator.h:88
struct xwmm_mempool_objcache oc_512
Definition allocator.h:100
struct xwmm_mempool_objcache oc_32
Definition allocator.h:91
struct xwmm_mempool_objcache oc_1024
Definition allocator.h:102
struct xwmm_mempool_objcache oc_768
Definition allocator.h:101
struct xwmm_mempool_objcache oc_160
Definition allocator.h:95
struct xwmm_mempool_objcache oc_8
Definition allocator.h:89
struct xwmm_mempool_objcache oc_192
Definition allocator.h:96
struct xwmm_mempool_objcache oc_96
Definition allocator.h:93
struct xwmm_mempool_objcache oc_2048
Definition allocator.h:103
struct xwmm_mempool_objcache oc_256
Definition allocator.h:97
struct xwmm_mempool_objcache oc_128
Definition allocator.h:94
struct xwmm_mempool_objcache oc_384
Definition allocator.h:99
struct xwmm_mempool_objcache oc_320
Definition allocator.h:98
struct xwmm_mempool_objcache oc_64
Definition allocator.h:92
struct xwmm_mempool_objcache oc_16
Definition allocator.h:90
const char * name
Definition allocator.h:87
函数调用图:
这是这个函数的调用关系图: