MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / ctl_bymib

Function ctl_bymib

deps/jemalloc/src/ctl.c:1337–1384  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1335}
1336
1337int
1338ctl_bymib(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp,
1339 size_t *oldlenp, void *newp, size_t newlen) {
1340 int ret;
1341 const ctl_named_node_t *node;
1342 size_t i;
1343
1344 if (!ctl_initialized && ctl_init(tsd)) {
1345 ret = EAGAIN;
1346 goto label_return;
1347 }
1348
1349 /* Iterate down the tree. */
1350 node = super_root_node;
1351 for (i = 0; i < miblen; i++) {
1352 assert(node);
1353 assert(node->nchildren > 0);
1354 if (ctl_named_node(node->children) != NULL) {
1355 /* Children are named. */
1356 if (node->nchildren <= mib[i]) {
1357 ret = ENOENT;
1358 goto label_return;
1359 }
1360 node = ctl_named_children(node, mib[i]);
1361 } else {
1362 const ctl_indexed_node_t *inode;
1363
1364 /* Indexed element. */
1365 inode = ctl_indexed_node(node->children);
1366 node = inode->index(tsd_tsdn(tsd), mib, miblen, mib[i]);
1367 if (node == NULL) {
1368 ret = ENOENT;
1369 goto label_return;
1370 }
1371 }
1372 }
1373
1374 /* Call the ctl function. */
1375 if (node && node->ctl) {
1376 ret = node->ctl(tsd, mib, miblen, oldp, oldlenp, newp, newlen);
1377 } else {
1378 /* Partial MIB. */
1379 ret = ENOENT;
1380 }
1381
1382label_return:
1383 return(ret);
1384}
1385
1386bool
1387ctl_boot(void) {

Callers 1

je_mallctlbymibFunction · 0.70

Calls 6

indexMethod · 0.80
ctl_initFunction · 0.70
ctl_named_nodeFunction · 0.70
ctl_named_childrenFunction · 0.70
ctl_indexed_nodeFunction · 0.70
tsd_tsdnFunction · 0.50

Tested by

no test coverage detected