MCPcopy Create free account
hub / github.com/apache/brpc / InitBlockPool

Function InitBlockPool

src/brpc/rdma/block_pool.cpp:237–332  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

235}
236
237bool InitBlockPool(RegisterCallback cb) {
238 if (!cb) {
239 errno = EINVAL;
240 return false;
241 }
242 if (g_cb) {
243 LOG(WARNING) << "Do not initialize block pool repeatedly";
244 errno = EINVAL;
245 return false;
246 }
247 g_cb = cb;
248 if (FLAGS_rdma_memory_pool_max_regions < RDMA_MEMORY_POOL_MIN_REGIONS ||
249 FLAGS_rdma_memory_pool_max_regions > RDMA_MEMORY_POOL_MAX_REGIONS) {
250 LOG(WARNING) << "rdma_memory_pool_max_regions("
251 << FLAGS_rdma_memory_pool_max_regions << ") not in ["
252 << RDMA_MEMORY_POOL_MIN_REGIONS << ","
253 << RDMA_MEMORY_POOL_MAX_REGIONS << "]!";
254 errno = EINVAL;
255 return false;
256 }
257 if (FLAGS_rdma_memory_pool_initial_size_mb < RDMA_MEMORY_POOL_MIN_SIZE ||
258 FLAGS_rdma_memory_pool_initial_size_mb > RDMA_MEMORY_POOL_MAX_SIZE) {
259 LOG(WARNING) << "rdma_memory_pool_initial_size_mb("
260 << FLAGS_rdma_memory_pool_initial_size_mb << ") not in ["
261 << RDMA_MEMORY_POOL_MIN_SIZE << ","
262 << RDMA_MEMORY_POOL_MAX_SIZE << "]!";
263 errno = EINVAL;
264 return false;
265 }
266 if (FLAGS_rdma_memory_pool_increase_size_mb < RDMA_MEMORY_POOL_MIN_SIZE ||
267 FLAGS_rdma_memory_pool_increase_size_mb > RDMA_MEMORY_POOL_MAX_SIZE) {
268 LOG(WARNING) << "rdma_memory_pool_increase_size_mb("
269 << FLAGS_rdma_memory_pool_increase_size_mb << ") not in ["
270 << RDMA_MEMORY_POOL_MIN_SIZE << ","
271 << RDMA_MEMORY_POOL_MAX_SIZE << "]!";
272 errno = EINVAL;
273 return false;
274 }
275 if (FLAGS_rdma_memory_pool_buckets < RDMA_MEMORY_POOL_MIN_BUCKETS ||
276 FLAGS_rdma_memory_pool_buckets > RDMA_MEMORY_POOL_MAX_BUCKETS) {
277 LOG(WARNING) << "rdma_memory_pool_buckets("
278 << FLAGS_rdma_memory_pool_buckets << ") not in ["
279 << RDMA_MEMORY_POOL_MIN_BUCKETS << ","
280 << RDMA_MEMORY_POOL_MAX_BUCKETS << "]!";
281 errno = EINVAL;
282 return false;
283 }
284 g_buckets = FLAGS_rdma_memory_pool_buckets;
285 g_info = new (std::nothrow) GlobalInfo;
286 if (!g_info) {
287 return false;
288 }
289
290 for (int i = 0; i < BLOCK_SIZE_COUNT; ++i) {
291 g_info->idle_list[i].resize(g_buckets, NULL);
292 if (g_info->idle_list[i].size() != g_buckets) {
293 return false;
294 }

Callers 2

TEST_FFunction · 0.85

Calls 3

ExtendBlockPoolFunction · 0.85
resizeMethod · 0.45
sizeMethod · 0.45

Tested by 1

TEST_FFunction · 0.68